关于 Code review 的思考
今天看了陈皓的《从Code Review 谈如何做技术》一文,笔记一些有启发的重点如下:
首先要清晰思考
很多时候,人思考问题不清楚,很大一部分原因是因为把很多问题混为一谈。
Code Review 的好处:
主要是让代码可以更好地组织起来,更易读,有更高的维护性,同时可以达到知识共享,找到bug只是其中的副产品。
代码的质量级别:
- 可编译
- 可运行
- 可测试
- 可读
- 可维护
- 可重用
通过自动化测试可达到第3级;
通过 Code Review 至少会在第4级甚至更高
Code Review 做不起来,没效果的问题和原因如下:
- 人员能力不足;即不知道什么是好代码,什么是不好的代码。
- 结果更重要;不关注质量、成长,急功近利。
- 人员的态度问题;完事交差心态,自扫门前雪心态。
- 需求变化问题;代码生命同期短就算了(如一次性Demo等,而现实中这样的项目其实不多),正常的项目如果需求变化快,代码质量要求反而更高,要能不断适应快速变化的需求。
- 时间不够;这是需求管理和项目管理不善的问题,需另外解决,思路如下:
- 梳理需求,分析清楚哪些该做,哪些不该做;
- 拿到需求后问几个问题:为什么要做?业务影响度有多大?有多少用户受益?回答不清这些问题,没有数据支持就不做。
- 产品经理的成长:
- 不但对用户把握得很好,也对软件工艺把握得很好。
- 不但会开出外在的功能性需求,也同样会开出内在的让软件系统更完善的非功能性需求。
- 不是在迁就用户,而是引导用户。
- 不会无限制地加功能,而是把握产品灵魂,控制并简化功能。
- 会为要做的和不做的需求感到同样的自豪。
- 做事情是要讲效率的。
- 需求总是会变化的,不要抱怨需求变化太快。应该抱怨的是为什么我们没有把握好方向?老变?没有应对好这些变化?
- 当你忙得象牲口一样时,想一下是不是因为自己做事的时候就象牲口一样思考?
- 寻求资源,不重复造轮子,进一步减少必须要做的需求;
- 分解需求,设定合理的进度目标;
- 梳理需求,分析清楚哪些该做,哪些不该做;
对技术人员的培养:
- 写每一个模块,都 Code Review 和 Refactor 至 Elegant (优雅)的级别;
- 经常学习并分享好的技术文章;
- 降低手头的重复工作和维护性工作,通过使用工具、编写工具等消除它们;
- 拒绝或简化不合理的需求并征得所有(Stakeholder)利益相关者的同意;
- 对自己负责,内心中坚持尽可能高的标准,尽量不对骨感的现实妥协,如果妥协得受不了了就选择离开吧~
【个人感悟】:
Code Review 确实是最有益的编程实践,甚至没有“之一”,然而骨感的现实是80%的开发者做不到(80/20法则应该在此处适用),即使是做到的20%,其中80%还是被逼的,呵呵……包括我在内也是这样,因此需要想办法冲破这些心结和障碍登上那个新的台阶!
- 从 Review 自己的代码开始做起,每每为自己的优雅代码而欢颜颂唱,或为自己的愚蠢蹩脚而痛斥凌骂:“垃圾!Shite!一坨翔!&#@……”;
- 多读别人的代码,特别是好的开源项目的代码,建立与好代码的“亲切感”,见到优雅的代码如沐春风一般,这感觉应该就差不多了;
- 多分享,写一些小工具,开源并写相应的文档,接受各种挑剔、拍砖和建议等,不断改进修正而提高自己的代码质量和编程设计水平……