个人博客作业Week2
对于是否需要有代码规范,请考虑下列论点并反驳/支持:
1.这些规范都是官僚制度下产生的浪费大家的编程时间、影响人们开发效率, 浪费时间的东西。
我不赞同这个观点,写程序的最实用目的是程序要能正常的运行,但是这只是个初级的要求。目前很多规模稍微大一点的软件都是由团队开发的,程序的可读性是很重要的一个方面,如果每个人都各自为政,那么大家就不能一起做项目了,windows也就不可能产生了。而且在很多时候代码的逻辑是十分重要的,不是随便写了以后就不管了,很多软件需要以后经常的维护。在代码量急剧增长的时候,有好的代码风格、好的规范,那么软件维护和代码修改起来就会容易很多、优势也就体现出来了;反之,如果没有好的代码规范,一定会让写代码的人焦头烂额、产生砸电脑的冲动。正如我们常说的,写代码开始的越早,完成的会越晚。这说明我们写程序并不是一项机械地重复的工作,非常强调我们的逻辑。如果我们能在代码规范上多花点时间,形成一个好的代码风格,会让别人更愿意与你一起开发,会让你的程序具备更好的可读性,为你以后维护也省时省力,可以说这是一件百利而无一害的事,与题目所述的观点恰恰相反,代码规范是程序员彼此之间也是程序员和代码之间交流的虚拟机,能使我们提高开发效率,为我们节约大量时间,同时也使得开发大兴项目成为可能。
2.我是个艺术家,手艺人,我有自己的规范和原则。
这句话只能说明你还是太年轻了!写过很多大型项目的程序员一定会更加明白同一个代码规范及原则的重要性,这是大家一起做项目的前提条件。如果你的代码独树一帜那么不会有人愿意和你合作开发软件的,你的代码规范可能会让看到你代码的人犯强迫症,真正的艺术家应该是最能遵守好代码规范、原则的人而不是盲目地提出一套自己的规范和原则。我们都知道缩进这些能够使代码更具可读性,那么一个优秀的程序员就应该遵守,而不是提出一套相违背的原则和规范。一个好的代码规范是很多程序员前辈在多年总结经验之后得到的结晶,对于这样是非黑白很分明的东西我们不该再创新而是遵守就好了,如果想要体现自己的创造力和才能可以有其他手段,比如说提出一个新的算法之类的。如果你意味的追求自己的特立独行,也就意味着你拒绝和他人合作,意味着你不愿意让他人读懂你的代码。
3.规范不能强求一律,应该允许很多例外。
这一点不和上两条那么极端,我认为是值得商榷的。对于你的个人项目来说,如果程序的代码量不是很大我感觉是可以出现一些规则之外的东西,比如我们在上C语言的时候老师一再强调不要使用goto语句,理由是会让程序bug的来源变得难以找到,给编程人员造成很大的困扰和麻烦。我们看了很多相关的课件和视频,也都强调了这一点。个人感觉,正因为很多这样不那么恰当的引导,使得很多同学看到别人的代码出现了goto语句就下结论:“这个人代码写的真不怎么样,一定是个新手”。但是正所谓“存在即合理”,既然有goto语句的提出那么为什么要限制我们不能使用呢?在有些情况下使用goto语句还是能够使得代码更加简洁、也不至于就难以维护。程序只是我们的工具,而我们正是背后操控代码的人,怎么灵活的使用好这些规范才是我们要做的事情,而不是苛求某些规范、死板较真。
4.我擅长制定编码规范,你们听我的就好了。
编码规范是很多前辈程序员们在多年编程经验下提炼出的宝贵精华,能为我们形成好的代码风格提供很重要的借鉴。并不需要由某个人来制定,而是由大家共同提炼,相互交流从而得到的。一个人所能想到的点毕竟还是有限的,你所制定的规范难免疏漏百出。只有大家通力合作形成的规范才能使得每个人都心服口服。每个人都有强烈的个人认同渴望,你并不能让别人按照你的规则来,别人犯强迫症了要怎么办!
2. 代码复审
Does the code work? Does it perform its intended function, the logic is correct etc.
代码可以正确运行,结果也都是对的。我测试的也全都对了,他是怎么做到的啊!
Is all the code easily understood?
代码有很多注释,变量命名也符合规范,可读性很好
Does it conform to your agreed coding conventions? These will usually cover location of braces, variable and function names, line length, indentations, formatting, and comments
风格很好,写代码多年的同学就是厉害。
Is there any redundant or duplicate code?
没什么多余代码
Is the code as modular as possible?
模块化程度较高,各类分工明确
Can any global variables be replaced?
没有
Is there any commented out code?
没有
Do loops have a set length and correct termination conditions?
所有循环都有适当的处理
Can any of the code be replaced with library functions?
无
Can any logging or debugging code be removed?
无