个人作业Week 2 ----------代码的规范和代码复审
1.是否需要有代码规范
从个人理解的角度出发,我认为代码规范还可以细分为代码的风格还有代码的结构设计(就好比排版一类的)
以前在上C语言课程的时候就看到过,老师会在打“{”的时候进行一个换行,但是有些老师或者同学在展示自己的代码的时候“{”是不换行的,或许从基本上来理解,这就是我们所认为的代码的风格吧,而我对于这种代码风格的判定应当是从代码风格的原则来看,第一要简单明了,第二易读易懂,第三没有二义性。代码的结构设计也就是像是程序设计中的模块之中的关系吧。
(1)这些规范都是官僚制度下产生的浪费大家的编程时间、影响人们开发效率, 浪费时间的东西。
表示不赞同。其实最简单的一个原因就是我们的代码不可能只有我们一个人会去看,而当别人看到你的代码时,首先映入眼帘的就是代码风格和代码的结构设计,倘若这两者不够标准或者是说不够符合一个大众观赏的标准,就算你的代码再优质,那也不过是你个人的作品,在团队的开发中你可能是会导致队友合作不顺畅的一个结,而不是助长团队合作默契的那一种风格。而且我们现在写的代码不过最多将近1000行(这是我目前的经历来说,不代表全体水平TuT),倘若以后进入项目的工作中,写代码的量达到了几万行呢?甚至更多呢?如果没有一个良好的代码规范,恐怕浪费的时间是要比规范代码的时间更多的吧,而且规范过后的代码将会使一个队伍的人进行学习和移植完善。从基本的理解上来说,大大的提升了个人的代码美观性和可读性,也提升了团队的合作默契和合作更多的突破自身代码不足的机会。
(2)是个艺术家,手艺人,我有自己的规范和原则。
持中肯态度。首先我要解释为什么我会保持中肯态度,因为规范和样例都是人为拟定的,没有什么是一出来就是天注定的,所以我们在规定规范的时候就注定了我们会去选择一个比较大众化一点的代码规范,然而我认为这个东西并不是一成不变的,所以任何的代码规范和原则都是可接受并且可理解的,就跟别人要看我们的代码一样,我们有自己的风格,我们首行是怎么缩进的,括号什么时候换行等等,我认为都是可以通过我们的意见达成一致去改变的。然而我持中肯的另一个原因就是很多人把代码规范看起来是一种艺术,我不同意这是艺术,也不同意是什么手艺人,我觉得我在写代码的时候只顾着代码的正确性,符不符合程序要求,并没有把很多的注意放在了代码的规范创造上,所以作为一个艺术家手艺人是万万不可的,然而我认为自己的规范和原则是没有错而且不值得被束缚的。
(3)规范不能强求一律,应该允许很多例外。
不赞同。其实规范在一定情况下来说就是一个东西的标准,然而例外是一种打破标准的存在,所以这个会这个标准对于事物的约束大大的降低。其实每个人在团队中都是一个例外,因为我们都有自己的一个标准,然而真正的智者不就是求同而不是求异呀,所以往往规范是要进行统一的,那才是智者最后的结晶。
(4)我擅长制定编码规范,你们听我的就好了。
就像之前提到的,每个人在团队中都可以被称为一个例外,因为我们每个人都有自己的标准,如果让一个人自己来限制代码的规范和标准的话,那岂不是就变成了第三条一样的例子了嘛,然而还是那样,我们应当在团队的合作的过程中求同去异,这才会使我们的合作顺利并且默契,所以我认为让一个人去规定代码规范不重要,重要的是他要咨询大家意见,或者是大家一起出谋划策整理出合适的编码规范,要达到求同的目的。
2.代码复审
这次我结对作业的小伙伴就是我美若天仙帅过良辰的室友徐丞,由于他是一个不折不扣的给满分的大学霸,所以我也很荣幸我可以抱到一条大腿腿,感觉人生还是有希望有救的呢!!!
下面是我对他的项目的代码复审表:
General |
|||||||||||
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? |
这次的作业中,小伙伴使用的是面向过程的一个思想。并且也是跟我一样只提交了一个cpp文件。 |
||||||||||
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? |
无日志记录和调试代码 |
||||||||||
Security |
|||||||||||
Are all data inputs checked (for the correct type, length, format, and range) and encoded? |
检查了输入格式 |
||||||||||
Where third-party utilities are used, are returning errors being caught? |
未使用第三方程序 |
||||||||||
Are output values checked and encoded? |
输出结果的格式正确 |
||||||||||
Are invalid parameter values handled? |
不合法的输入视为错误输入 |
||||||||||
Documentation |
|||||||||||
Do comments exist and describe the intent of the code? |
没有写文档 |
||||||||||
Are all functions commented? |
没有写文档 |
||||||||||
Is any unusual behavior or edge-case handling described? |
没有写文档 |
||||||||||
Is the use and function of third-party libraries documented? |
没有写文档 |
||||||||||
Are data structures and units of measurement explained? |
没有写文档 |
||||||||||
Is there any incomplete code? If so, should it be removed or flagged with a suitable marker like ‘TODO’? |
没有写文档 |
||||||||||
Testing
|
|||||||||||
|