当前位置: 首页 > news >正文

【转载】我的code review规则

原文地址:http://sunxiunan.com/?p=1929

1) 是否有语法错误,编译错误,编译警告。
做法:下载最新代码,将编译警告级别提升到最高,检查output信息。

2)是否符合需求,完成requirement文档要求的内容,不能多,也不能少。
注意:即使发现有问题代码,如果与需求关联不大,不要涉及。
应该让每次enhancement和bug fix最简洁,牵涉范围最小,影响到组件最少。

3)是否符合编码规范:
    a) 注意等号前后,操作符前后的空格和tab,行尾不要有多余空白字符
    b) 注意命名规范,少用缩写形式,少用2/3/ex这种增强版
    c) 对于循环局部变量,注意少用I,j在较长代码中(三四行OK)
    d) ..

4)代码美感
    a) 不能有嵌套的if-for-switch-while出现
    b) 不能有非常复杂的条件判断表达式(用于if-while之类)
    c) 足够的注释,对于复杂操作,对于条件判断,可以注释。尽量让代码自己说明自己。
     d) 如果代码不能在短时间内理解,或者稍作解释就可以理解,应该看看能否有更简洁的方式
    e) 函数不要过长,不能超过一屏显示,最多不应该超过2-3屏。
    f)经常问自己是否有更好的办法,更简洁明了的代码形势
    g) 一个函数只做一件事,如果需要多个功能,再写一个
    h) 少用boolean 作为参数切换功能,用withXXXcase, usingXXXcondition函数名字来自说明。道理同g)
    i) 少用重载功能,没必要类似函数用一个名字,既然有不同函数实现,那么应该有不同条件描述,可参考h)的命名
    j) 抽象层次不要过多,不要过早和过多考虑设计模式/抽象/抽取通用功能这些事情,这些在代码重构阶段可以修改调整。

5)逻辑
    a) 参考上一条4),基本上有足够美感的代码,逻辑上问题都不大

6)杂项
    a) 性能的关注应该基于profiling data,而不是猜测
    b) 代码的正确与否,不是基于猜测而是基于test case
    c) 扩展性不需要考虑过多,有一点点就好
    d) 时时问自己,这个函数/变量/逻辑判断/.. 有没有必要,是不是可以删掉的
    e) 时时问自己,如果不用手动测试,自动化测试自己这段代码,可以不可以?如何实现?(MEF or 数据界面分离… )可否通过脚本、工具自动化某些流程?

原文地址:http://sunxiunan.com/?p=1929

转载于:https://www.cnblogs.com/ainiaa/archive/2011/09/23/2186474.html

相关文章:

  • Silverlight 结构分析
  • WebStorm 2.1 发布,超强JavaScript编辑器
  • 软件工程师,你真的喜欢你的工作吗?
  • 卡巴斯基提醒网民注意:压缩文件也能变木马
  • 简单评价各种排序算法的优劣
  • 50、linux shell命令,netstat,traceroute
  • 在兄弟连的感受
  • BB进度
  • jQuery右键菜单插件ContextMenu
  • AssionShop开源B2C电子商务系统-定单流程活动图状态图(转)
  • 扩展方法的定义及使用
  • 用Restful方式调用WCF进行上传下载(转)
  • 飞雪桌面日历注册码
  • 趋势科技:Web2.0网站将成黑客首要攻击目标
  • 最老程序员创业札记:全文检索、数据挖掘、推荐引擎应用42
  • C++11: atomic 头文件
  • echarts的各种常用效果展示
  • HTML-表单
  • Iterator 和 for...of 循环
  • Java教程_软件开发基础
  • Lucene解析 - 基本概念
  • Material Design
  • 关于 Cirru Editor 存储格式
  • 基于组件的设计工作流与界面抽象
  • 技术:超级实用的电脑小技巧
  • 排序(1):冒泡排序
  • 前端临床手札——文件上传
  • 前端面试题总结
  • 前端学习笔记之观察者模式
  • 入口文件开始,分析Vue源码实现
  • Hibernate主键生成策略及选择
  • 阿里云API、SDK和CLI应用实践方案
  • "无招胜有招"nbsp;史上最全的互…
  • #《AI中文版》V3 第 1 章 概述
  • (10)ATF MMU转换表
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (附源码)springboot宠物医疗服务网站 毕业设计688413
  • (学习日记)2024.01.19
  • (译)2019年前端性能优化清单 — 下篇
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • (转)如何上传第三方jar包至Maven私服让maven项目可以使用第三方jar包
  • .net 后台导出excel ,word
  • .NET的数据绑定
  • .NET设计模式(2):单件模式(Singleton Pattern)
  • .NET使用存储过程实现对数据库的增删改查
  • @Builder用法
  • [ vulhub漏洞复现篇 ] struts2远程代码执行漏洞 S2-005 (CVE-2010-1870)
  • []利用定点式具实现:文件读取,完成不同进制之间的
  • [AutoSar]BSW_Com02 PDU详解
  • [C++]C++基础知识概述
  • [HTML]Web前端开发技术6(HTML5、CSS3、JavaScript )DIV与SPAN,盒模型,Overflow——喵喵画网页
  • [Leetcode] Permutations II
  • [MySQL数据库部署及初始化相关]
  • [RISC-V]verilog