代码自我审查的一些体会
来源于http://www.blogjava.net/killme2008/archive/2010/05/18/321219.html
版权归于原创者
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,我建议可以放在后面,在一般性错误解决之后进行,此时你对代码也将再度变的熟悉。
分享到:
相关推荐
总的来说,阿里Java开发手册和工程师的自我修养体会,都是为了帮助开发者遵循最佳实践,提升开发效率,保证代码质量,从而构建更稳定、高效的软件系统。学习并应用这些知识,对于任何Java开发者来说都是非常有价值的...
作者可能分享了关于代码审查、单元测试、重构和遵循最佳实践的心得。 5. **团队协作与沟通**:在IT项目中,团队合作至关重要。作者可能介绍了如何建立有效的沟通机制,解决团队冲突,以及如何通过协作提升团队效率...
最后,实习生的心得体会可能包含了一些关于职业规划和自我提升的思考。他们可能对自己的技术能力有了更清晰的认识,明确了未来发展的方向,比如是否选择专精于某一领域,或者继续拓宽技术广度。 总的来说,"实习...
- **日常任务**:每日的主要任务包括但不限于编写代码、调试错误、参与代码审查等。 - **技术挑战**:实习过程中可能会遇到各种技术难题,如性能优化、异常处理等,需要通过查阅资料、讨论交流等方式解决。 - **...
4. **复查的重要性**:学生意识到考后复查的价值,这在技术工作中的对应是代码审查或测试,确保工作质量。 5. **态度调整**:面对失败,学生表达了决心去改进,这在技术成长中表现为持续学习和自我提升的态度。 6....
在IT工作中,这意味着建立持续集成/持续部署(CI/CD)流程,养成良好的代码审查和测试习惯,以确保项目的长期稳定。 4. **用户导向**:考虑被服务者的需求是关键。在IT产品设计中,需深入了解用户需求,提供符合...
以下是我在实习期间对Java项目开发的一些总结和体会。 1. **全新项目的重要性** 在学习过程中,我发现参与全新的项目开发更能激发我对新技术的兴趣和探索精神。全新项目意味着没有现成的参考代码,这让我有机会从...
4. **精细化工作**:追求精细化工作和持续改进,这在IT中体现在代码审查、测试和持续集成/持续部署(CI/CD)等实践中,以提高软件质量和开发效率。 5. **经验积累与专业知识**:通过实习积累工作经验,理解流程原理...
在IT工作中,这可能表现为代码审查时对他人的建议持开放态度,或者对自己完成的工作进行反思,寻找改进空间。 5. **团队合作**:军训中的团队协作,类似于项目开发中的团队配合。每个人的动作都影响整体效果,IT...
例如,版本控制工具Git的应用,使得多人协作开发变得更加顺畅,也让我明白了版本管理和代码审查的重要性。敏捷开发和Scrum框架的学习,提高了我的项目组织和管理能力。 通过培训,我认识到了持续学习和自我提升的...
例如,文中提到的实训项目使用Java在OBBLIGATO信息安全管理平台上进行开发,这不仅锻炼了学生的编程技能,还让他们了解到一个完整项目开发的流程,包括详细设计、代码编写、代码审查和单元测试等步骤。详细设计对于...
- **养成训练与规范**:在IT项目管理中,制定清晰的工作流程和规范,如代码审查、文档编写标准,有助于团队成员快速适应并形成良好的工作习惯,提高工作效率。 - **长期引导与随时订正**:持续的培训和反馈机制能...
附录A提供了一份详细的代码审查清单,用于指导代码审查过程。 #### 附录B:C++/C试题 附录B包含了一系列测试题目,帮助读者检验自己的编程知识。 #### 附录C:C++/C试题的答案与评分标准 附录C给出了上述试题的...
例如,代码审查能防止漏洞引入,强密码政策能增强账户安全性,定期安全审计则有助于发现潜在风险。 接着,行为的养成是核心。这需要我们在日常工作中不断实践,如定期进行安全评估、使用加密技术保护敏感信息、不在...
- **C++/C代码审查表**:提供一份详细的代码审查清单,帮助开发者检查代码质量。 - **C++/C试题**:提供一些练习题,测试读者对C++/C的理解程度。 - **C++/C试题的答案与评分标准**:给出练习题的答案和评分标准,...
- **实践应用**:在IT行业中,例如遵守网络安全政策、项目管理流程、代码审查规范等,都是确保项目顺利进行和产品质量的重要因素。 **2. 持续学习与自我提升** - **背景理解**:技术日新月异,特别是在IT领域,不断...
- **附录A:C++/C代码审查表**:提供了一份详细的代码审查清单,帮助开发者检查代码质量。 - **附录B:C++/C试题**:包含了一系列测试题,用于评估读者对C/C++的理解程度。 - **附录C:C++/C试题的答案与评分标准**...