【云驻共创·】编程语言语法和风格是否应该建立统一的标准?
零.前言
最近做学校的java项目的时候,对编码规范问题进行了深入的思考理解,在当前环境下,各个语言的最权威的语法书均没有给出编码规范,那么编程语言语法和风格是否应该建立统一的标准呢?
1.大佬如是说
在讨论这个问题之前,我查阅了一些大佬们对于编码规范的态度,有一些很有趣,还有一些很激进。
罗马帝国衰败的主要原因之一是因为他们缺少0,他们没有办法知道他们的C程序已经成功的执行完了。
-- Robert Firth
一个有过BASIC编程经历的人是很难学会好的编程习惯的。作为一个潜在的程序员,他们已经被脑残并且无法修复。
-- Edsger Wybe Dijkstra, Dijkstra 算法发明者
“优良设计创造价值的速度,快于其增加成本的速度。 ”—托马斯·C.盖勒(Thomas C.Gale) 每名程序员都是作家。 ”—塞坎·雷勒克(Sercan Leylek)
“写代码时,每次都要告诉自己:最后负责维护代码的,会是一个知道你住在哪的变态暴力狂。 ”— 约翰 ·伍德(John Woods)
读代码比写代码困难”---Joel Spolsky (StackOverflow合伙创始人)
重构早就成了软件开发从业者本能的一部分,每个IDE都内置了重构功能,每个程序员都定期重构自己的代码。技能上通常不再是问题,但是相对于当年第1版的读者,现在的程序员对于重构这个思想从何而来以及各种细节反而更陌生,这时候就更值得重新读一下这本书了。
——霍炬 , PRESS.one CTO
好的代码有自说明性,当你想添加一条注释时,问下自己“我怎么能改进代码从而省略这个注释? -- Steve McConnell (《代码大全 》作者)。
其中有一句话最打动我,是塞坎 ·雷勒克这位文科毕业自学编程的专业程序员说的: "每一名程序员都是 一个作家。 "其实写代码和写一篇文章没有什么不同,而优秀的编码规范就像各种文章的固定格式一样 (比如记叙文人物,地点环境;议论文三要素等等),在当前的环境下,一个项目的代码不仅需要多人合作,而且还需要后来人维护。就像Joel Spolsky说的:"读代码比写代码困难"。具有一致的编码规范习惯,可以使我们的代码更加模式化,可读性更高,能够大幅度提高公司工作效率。因此我认为:为语言 建立编程语言语法和风格的统一标准是必要的。
2.编码规范使可读性更高
代码的可读性增高是最显著的原因:
记得我在刚刚写技术博客的时候,曾经在CSDN的热榜第一看过一篇文章,是初学C语言的,小伙子一看就很用心,把代码写成了一个爱心的形状。
大概就是将这里的Love换成了int main(){int i=0;printf("%d",i);return 0}等等的一大堆。也许对于初学者来说这样会很有趣,毕竟热度都可以到达热榜第一了(小男孩我就从来没上过热榜第一),但是这样的代码可以说是可读性非常非常差的,基本要被公司开除了。编程所获得的乐趣绝对不是改变代码的形状所获得的。这是一个很恶劣的例子。
再来举一个大佬在开发过程中实际的例子,在前不久他们的公司接到了一个项目,源码在1.3w行左右,他们团队简单地通过公司的质量检测工具得到了一个评估报告:
API注释: 35%
代码注释覆盖率: 10%
不符合代码规范问题: 1w+
存在严重的阻断: 100+
无论是谁,拿到了这样一份质检报告内心都会是崩溃的,这等于这段代码的源码根本无法阅读,基本不可能尝试理解并维护。大佬的团队不得不重新思考重写整个项目的可行性,用了大半个月做可行性分析 (包括原维护部门的交流,原开发文档的补全,测试部门的测试用例等等)。最后得到了需要进行重写 的结论。接下来是对新环境的搭建,新测试用例的搬迁.....为此又花费支付了4个月左右的时间,前前后后加起来小半年,而这些时间有必要付出吗?肯定是没有必要。
了解了他的这些情况后,我不由得庆幸自己遇到了一个好的高级语言程序设计的大学老师,在学习人生中第一门语言--C语言的数据结构的时候,我们老师用C++STL的命名规范来要求我们书写函数名。并给作业中无意义的变量名(比如a,b,c等)进行一定的扣分。由于实验项目较小,而且基本都是一个人来完成的,因此当时并不在意。从了解了一些实际开发中的情况开始,我便开始注意了编程语言的编码规范。尽量写出不仅可以被自己阅读,也可以被别人快速理解的代码。
3.降低学习成本
目前的互联网大厂基本都有自己的一套编码规范,但是这些体系又各不相同,如果从一家公司换到另一家公司,就需要重新学习新的编码体系,甚至可能会发生混淆造成不必要的后果。如果语言本身就带有一定的编码规则的话,不仅可以提高代码的可继承性,还可以降低程序员的学习成本, 使开发更加高效。看一份优秀的,排版有规律可循的代码和看一份杂乱无章的代码,给人的感觉是不一样的,就好比我们居住的房间,更加整洁才更适合人居住。各种东西拜访的整整齐齐才给人一种舒服的感觉。才有继续编写或者维护的欲望。
万物都是相对的,规范编码也会造成一定的问题,只不过这些问题相对于规范编码的优势来说力量较弱,因此我仍然是支持规范编码的。
曾经思考过这样一个问题:抛开编码,如果我们的文字也被要求规范了呢?书写方式起笔落笔都有统一 的标准,大家都严格地去遵守。一旦这样虽说我们可以更加方便地阅读文字,但是就不存在所谓的行书草书的“行草之美”了。之前有幸看过苏轼的真迹,苏轼可谓是一位大书法家,他的文字洒脱飘逸,有超 凡之感,但如果必须按照楷书那样一笔一划地工工整整地完成呢?再如同李白工工整整规规矩矩地用印刷体书写: “天生我材必有用,千金散尽还复来”,虽然方便了阅读,但是意境已经消失了。
说的再直白一些,当你在追求如何精修文章,追求书法的时候,其实是浅薄的。你大可以花费时间去钻研一些编程中更加深刻的问题,或许正是这些问题才导致了大牛们在设计语言的时候,并没有专门花费时间去总结一套编码规范吧。当有一天你发现了一个超高效的算法,但是却因为定义一个变量的大小写而被编译器指责的时候,这会不会消磨了编程的兴趣呢?
虽然如此,但是在如今的环境下,大部分的程序员还是在做着中规中矩的任务,并不具备创造一个新的算法或者语言的能力,试问李白杜甫能有几人呢?因此相对于劣势来说,规范编码的优势还是更加明显的。
6.总结
总而言之,我还是认为规范编码会更加好一些,这只是我作为一个学生角度的思考。这个世界上没有任何一件事情是完全正确或者错误的,只是在利和弊的相较之下才决定会不会去做这件事情。
本文整理自华为云社区【内容共创】活动第15期。
https:// bbs.huaweicloud.com/blogs/345822
任务35:编程语言语法和风格是否应该建立统一的标准?
- 点赞
- 收藏
- 关注作者
评论(0)