个人博客作业Week2(代码规范,代码复审)
Q:是否需要有代码规范
- 首先我们来搞清楚什么是“代码规范”,它和“代码风格”又有什么关系。依据个人的审美角度,我可能更喜欢在函数与函数之间空出一行,可能在命名习惯和代码注释上更加的international,可能在编码的时候我会一直对齐对齐对齐,我可能通过正确的使用空格让整个程序瞬间干净整洁外加利落,而你可能运算符之间没有空格,函数和变量的命名莫名其妙,就连Tab也乱七八糟,这就叫做代码风格。我不喜欢你的不拘小节,你也反感我的斤斤计较,但是你我又不能单方面决定对方的对错,因为两种不同的习惯,两种不同的审美。
- “代码规范”包含“代码风格”,但又不仅仅是“代码风格”。一个函数的返回类型int or bool?一个函数的输出是要通过传入引用的参数,还是通过返回的方式?这些都是在代码格式化之外,又包含于代码规范的其他规范。
- 这些规范都是官僚制度下产生的浪费大家的编程时间、影响人们开发效率, 浪费时间的东西?如果你这么想,那么你就大错特错了。在你走入社会之后,你所面对的工程,你需要去实现的软件有多大的几率是自己一个人完成的?团队才是一个工程建设所需要的强有力的基础,对于团队而言,今天由我来编写这段代码,明天就可能需要由你来进行维护,如果我按照自己的风格和规范洋洋洒洒写了1000+行,你在面对这毫无头绪的1000+行时心中难道没有过这样的疑问,“这函数到底是干什么用的?”“这常量怎么用的是小写啊?”……但是如果我们在团队中统一要求对规范进行了规定,知道常量要全大写,那么看到一个全大写的名称时,你第一时间就能反应过来这是个常量。那么你觉得在编程的时候稍微注意一下编程的规范在之后的代码维护中更加轻松和编程时随意在代码维护时却一而再再而三的碰壁,哪一个更浪费时间呢?
- 我是个艺术家,手艺人,我有自己的规范和原则?首先,你把自己称为艺术家、手艺人,这点是非常值得赞扬的,因为你认识到自己辛苦努力换来的成果应该是要当艺术品来看待的可见你对编程工作的认真态度。其次,你有你自己的规范和原则也是无可厚非的,若是没了这些恐怕是要糟糕透顶了。但是,如果你在团队工作中坚持这样的想法,那么这是不可取的。一个团队的工程是属于团队的,团队应该要放在第一位,要时刻顾全大局。如果你在团队中坚持这样的观念,那么你显得格格不入,给人感觉你在宣誓自己的“地盘”一样。若是整个团队中每个人都这样想,一个工程的代码很快就能被分隔出来,队员与队员之间的矛盾就会渐渐展现,这就不能称作一个“团队”。所以,在团队中应该学会忍痛割爱,暂时放一放自己的规范和原则。
- 规范不能强求一律,应该允许很多例外?我赞同这一观点。代码规范不是科学定理,它不是1+1必须等于2,也不是每天太阳东升西落,他是我们自己主观制定的,这就意味着,它更具有灵活性。若你真要拿定义变量时应该用空格对齐这种要求来强制规范,那又有什么必要呢?不对齐的话真的会对我们的理解产生影响吗?所以尽量不要在没有意义的细节上强制要求,只要我们达成共识,例外还是应该有的。
- 我擅长制定编码规范,你们听我的就好了?非常不赞同,这是一种专制的思想,应该极力摒弃。如果有人这样对你说,你肯定会问“凭什么?”。对啊,凭什么,我们都听你一个人的,也不问问我们的意见和想法?这不是专制这是什么?我们一直强调团队的重要性,每个成员的想法不管有用没用,都是极其宝贵的,我们被给予的发表意见的权利是不能被剥夺的,而且团队的编码规范就是应该要最大范围地覆盖全体成员的编码规范,这样才能做到共赢。所以,如果你擅长制定编码规范,那么应该在我们集体讨论之下,由你来做出一个让我们大家都满意的一个共同的规范。
Q:代码复审
- 在代码复审之前,我要表达一下欣慰之情。首先,因为我能和我认识的小伙伴结对做作业,省去了尴尬、认识、熟悉这些阶段,能够快速的开始任务。其次,在我看了结对伙伴的代码之后,除了发现我俩的编程风格相似之外,我俩的结构设计也很像,所以我认为在读对方的代码时应该完全没有问题。以下是我给结对伙伴的代码复审表。
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?
Generate和Compute两个函数很大,处理了很多过程,这两个函数还可以在模块化一些
Can any global variables be replaced?
全局变量少,一些用来传递的参数可以设置为全局的
Is there any commented out code?
有10行左右被注释掉的代码,应该被删除
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?
在对输入指令进行解析的时候做了catch exception
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?
所有的function都有注释
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
Is the code testable? i.e. don’t add too many or hide dependencies, unable to initialize objects, test frameworks can use methods etc.
程序可测试,各个模块运行正常
Do tests exist and are they comprehensive? i.e. has at least your agreed on code coverage.
程序中没有包含测试用例
Do unit tests actually test that the code is performing the intended functionality?
程序中没有包含unit tests,需要人工测试
Are arrays checked for ‘out-of-bound’ errors?
数据结构多使用Queue,使用中没有遇到out-of-bound问题
Could any test code be replaced with the use of an existing API?
程序中没有包含test code
- 总体来说,我的结对伙伴的程序完成了主要功能,代码清晰易读易理解,还可以进一步的优化。
个人博客作业Week2(代码规范,代码复审)的更多相关文章
- 个人博客作业Week2 是否需要有代码规范
问题:是否需要有代码规范 对于是否需要有代码规范,请考虑下列论点并反驳/支持: 1.这些规范都是官僚制度下产生的浪费大家的编程时间.影响人们开发效率, 浪费时间的东西. 2.我是个艺术家,手艺人,我有 ...
- 个人博客作业-Week2 (代码规范, 代码复审)
代码规范: 1.这些规范都是官僚制度下产生的浪费大家的编程时间.影响人们开发效率, 浪费时间的东西. 编码规范它包含了代码格式,还包括了编码风格和其他规范,通常涉及:缩进.空格使用.Tab使用 注释. ...
- #个人博客作业week2——关于代码规范的个人观点
对于这一讨论的前提我们首先要知道什么是代码规范. 在这个问题上我同意一篇参考文章的观点——代码规范不仅只编码风格.编码风格仅是代码规范的一个方面,除了编码风格,代码规范还包括函数返回值等其他方面.在我 ...
- #个人博客作业Week2——关于代码规范的讨论
<1> 这些规范都是官僚制度下产生的浪费大家的编程时间.影响人们开发效率, 浪费时间的东西. 反驳:官僚制度在一定程度下维持了社会的和谐稳定,一个没有法律.没有拥有完善的管理体制.完全崇尚 ...
- 个人博客作业week2——代码复审
1.代码规范 这些规范都是官僚制度下产生的浪费大家的编程时间.影响人们开发效率, 浪费时间的东西. 代码规范并不是从官僚制度下产生,它是为了提高项目团队开发效率而产生的一种工具,能够极大的增强代码可读 ...
- 【个人博客作业II】有关代码规范问题的讨论
参考课程辅导书<构建之法>可以知道,程序的代码规范常指代码风格规范和代码设计规范两个方面,其中:代码风格规范包括(缩进,行宽,括号,断行与空白行,分行,命名,下划线,大小写,注释这几个部分 ...
- 个人博客作业Week2
一.是否需要有代码规范 这些规范都是官僚制度下产生的浪费大家的编程时间.影响人们开发效率, 浪费时间的东西. 我反驳这个观点,这些规范是成千上万的程序员在开发程序中总结出来的代码规范,他有助于我们的开 ...
- 软工个人作业-博客作业-WEEK2
1.是否需要代码规范: (1)这些规范都是官僚制度下产生的浪费大家的编程时间.影响人们开发效率, 浪费时间的东西. 首先来说,从短期上和个体上来看,一个团队的代码风格必然会在一定程 ...
- 个人博客作业Week2(9月30日)
一.是否需要有代码规范 1.这些规范都是官僚制度下产生的浪费大家的编程时间.影响人们开发效率, 浪费时间的东西. 这些规范并不是一开始就有的,也不是由某个人规定的,代码规范是程序员们在不断地编程实践过 ...
随机推荐
- Linux Cluster
一.Linux集群类型.系统扩展方式及调度方法 1.概念 Linux cluster,Linux集群系统是一种计算机系统, 它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作. ...
- django —— MVT模型
转载----
- pThreads线程(一) 基本API
1.创建线程 int pthread_create(pthread_t *restrict_ptid, const pthread_attr_t *restrict_att ...
- UVA11988-Broken Keyboard(数组模拟链表)
Problem UVA11988-Broken Keyboard Accept: 5642 Submit: 34937 Time Limit: 1000 mSec Problem Descripti ...
- esp8266(0) AT指令
http://www.shaoguoji.cn/2017/01/15/ESP8266-usage/ 注意事项 使用WiFi模块的一些细节及注意事项 模块使用3.3V供电,一定注意电源的稳定,一些USB ...
- Mac下安装Mongodb
Mac下安装Mongodb 一: 安装MongoDB: Mac下安装MongoDB有两种方法,第一种是通过源码安装,另一种是使用 homebrew, 下面我使用homebrew来安装,首先我们需要安装 ...
- B类——Stas and the Queue at the Buffet
http://codeforces.com/contest/1151/problem/D 题意: n个学生,每个学生都有自己的位置,最后要使
- centos6安装tomcat8.5
//参考https://www.cnblogs.com/xdp-gacl/p/4097608.html [root@192 ~]# mount /dev/sr0 /mnt/usb1[root@192 ...
- 《Google软件测试之道》测试工程师
愿和我一样读过这本书的人有所共鸣或者启发,愿没读过这本书的人,能获得一点点收获... 说到软件测试工程师,首先我们需要明白一个问题,软件测试工程师的职责是什么? 关于这个话题,不同的人有不同的定义:抛 ...
- rook 排错记录 + Orphaned pod found kube-controller-manager的日志输出
1.查看rook-agent(重要)和mysql-wordpress 的日志,如下: MountVolume.SetUp failed for volume "pvc-f002e1fe-46 ...