1、首先态度需要端正,做代码的自我审查并不是否定自己,而是给自己将工作做得更好的一次机会。在审查过程中要尽量将自己作为一个旁观者的心态去审查自己的代码,尽管这比较困难。
2、代码审查离不开重构,在审查过程中发现任何坏味道都请使用重构去改善,发现缺乏测试的地方要及时补充测试,不要让BUG遗漏。
3、代码的自我审查可能不是越早越好,隔一段时间之后回去看自己写的东西,对一些设计上的选择能有更客观的评价,在审查的过程中可能需要重新去理解代码,在此过程中可以检查自己代码的可读性,并思考如何改善可读性,切记代码首先是给人读的。
4、审查过程中需要记录下一些犯下的错误,以及当时为什么会犯下这样的错误,建立自己的bug数据库,并时常review,在以后的工作中避免同样的错误。
5、代码的自我审查应该是一个持续性的过程,而非特定时间的特定行动,时常审查自己的代码,不仅能辨析自己的得失,还能够进一步提高自己在未来工作中的设计能力和预见能力。
6、代码的自我审查跟团队成员之间的相互review并不矛盾,在相互review之前做一个自我审查,有助于提高review的效率,包括可读性的提高和一些一般错误的避免。
7、代码自我审查的一些常见注意点:
(0)自认为绝不会出错,并且从来没有审查过的代码。
(1)注意else语句,if条件下的子语句通常可能是个正常的流程,而else意味着异常的情况或者特殊的场景,你可能特别注意怎么处理正常的情况,却忽略了else子句的实现细节,如该释放的锁没释放,该递减的计数没有递减,该赋予特殊值却没有赋予等等。
(2)注意空的方法,没有方法体的方法,是不需要实现?还是忘了实现?
(3)注意switch语句,有没有忘了break?这种错误通过findbugs之类的静态代码检查工具都能避免。
(4)注意大块的注释,为什么这么多注释?是代码写的很糟糕?还是遗留的注释?遗留的注释会误导人,要及时删除。
(5)注意一些看起来“不合常理”的代码,这样的代码很多都是基于所谓性能考虑而优化过的代码,这样的优化是否还需要?是否能去除这些“奇怪”的代码也能实现正常的需求?
(6)对客户端的使用有假设的代码,假设用户只会这么用,假设用户只会用到返回对象中的某些属性,其他属性一定不会用到?不要对客户代码做假设!这个客户代码包括外部用户和调用这个模块的内部代码。
(7)标注了FIXME、TODO之类task标签的代码,是否忘了修复BUG,实现功能?
(8)任何超过15行以上的方法,这些方法是否能拆分成更细粒度的方法,并保持在同一个抽象层次上?
(9)任何在代码中出现的常量值,是否应该提取出来成为单独的常量,常量的默认值设置是否合理?
(10) 任何持有容器的代码,提供了放入容器的方法,是否提供了从容器中移除对象的方法?确保没有内存泄漏的隐患。
(11)重构中提到的其他坏味道,别放过它们,但是也不要追求完美,OO不是圣杯,如果能简单的实现一个算法,你不要引入3个对象和4个接口。
(12)在review最后能列出一张清单,列下该项目面临的风险点,并提出解决办法,然后按照这张清单去review关键代码,着重检查异常情况下的处理。风险点的review,我建议可以放在后面,在一般性错误解决之后进行,此时你对代码也将再度变得熟悉。
分享到:
相关推荐
软件工程中的代码规范与代码审查.pptx
软件工程的代码审查与重构.pptx
软件工程中的代码审查与质量控制.pptx
软件工程中的代码审查与质量保证.pptx
软件工程中的代码审查实践与经验.pptx
代码被添加,因为它被审查。 座右铭:“我可能还不知道答案,但我会找到答案” 为了进行科学编程和数据分析,我使用了MATLAB,IDL,Fortran,Python和Bash脚本。 对于Web开发,我使用了HTML,CSS,JavaScript,PHP和...
传统能源化学工业的排放量占中国人造VOC排放总量的20%,其中煤化工和石化厂是最重要的VOC排放源之一。 VOC排放源主要包括炼油装置和设备,管道和阀门的泄漏,各种储罐的呼吸和泄漏,装卸过程中油的渗出,污水处理...
论文的数据和分析代码:口味和健康影响的个体差异成功的饮食自我控制:一项针对儿童的小鼠追踪食物选择研究。 2020年生理与行为(正在审查中) 开放科学框架项目中包含的脚本由Alaina Pearce在2019年编写,目的是...
学习-Javascript第4周这是一个自我反省的项目,目的是确定我们作为编码员的优缺点,并制定针对这些弱点的计划。霍莉·威尔卡利斯(Holly Wilkalis)描述在列出了我的优点和缺点之后,很明显,我对准备进行技术面试...
R软件代码转换为matlab -数据基础架构工程师 数据整理•商业智能•数据可视化•预测分析 测试驱动开发(TDD)下的Javascript,PHP,Python和Go的软件工程技能。 Internet和网络技能包括:HTML,XML,JSON,HTTP,SSL...
自我评估表将帮助您思考代码的质量,一旦您相信自己已经达到专业水平,教练就会审查您的代码。 本周,您还将提出有关最终项目的想法。 Craft.io流程 本周特别适合关注以下问题:“我比昨天更好吗?” 本周有多达...
对于CI还有一系列其他原则和实践,例如:将所有内容都检入您的代码库,构建每个提交,自动化构建,保持快速构建,并有可以自我验证的代码, 还有Martin Fowler 关于持续集成的评论中的可视化故障并立即修复故障等。...
微信小游戏自审报告doc模版,过审清晰版本。本人用这个版本过审多次,祝大家成功
审查 要求 通过自适应GAN生成多样的图像(CVPR 2020) 通过聚类的自发GAN 通过聚类计算数据集分区 :star: :star: :star: 使用增强型自参考和密集语义对应的基于参考的草图图像着色(CVPR 2020) 增强型自参考...
4、开发一部部门长顾青山、分组经理程春霞予以部门内通报批评,并在部门例会上做自我检讨。 责任:程春霞未了解到项目中的重构任务,风险评估出现疏漏,对并轨测试目标缺乏把关,疏忽大意;存在管理不到位的责任。...
快速提问、项目帮助、代码审查 网络/Skype/环聊:提前与我们安排 松弛 发布作业上课前 12:00 PM 截止 类方法 本课程旨在让您沉浸在编程中,并在我们的旅程结束时学习一种新的语言或方法。 我们将代码作为工具添加到...
为了有利于项目维护,增强代码创新性,提升代码审查效率以及规范团队iOS开发,故提出以下iOS开发规范 2命名规范 根据Cocoa编码规范里的描述,命名应该遵循以下基本原则:清晰,一致,没有自我参照,即清晰性,一致性...
请联系 ,以获取支持和许可选项,包括定制软件开发,测试,设计咨询,培训,指导和代码审查。 建造 git clone --recursive https://github.com/corvusoft/protocol.git mkdir protocol/build cd protocol/build ...
版本v0.1 - 正式提交给 Jack Russell Software 进行审查。 B. 文件列表app.js - 角度模块定义controller.js - 最终用户交互game.js - 单元行为的实现index.html - 用户界面patterns.js - 提供自我维持细胞模式的...
《机器人与人工智能前沿》正在对此进行审查。 我们提出了三种改善视频字幕模型的方法。 首先,我们利用空间特征和动态时空特征作为语义检测网络的输入,以便为视频生成有意义的语义特征。 然后,我们提出了一种...