让代码更容易读

1.选择具体,避免空泛,找到更有表现力的词fetch和download要比泛泛的get好deliver,dispatch,route,distribute要比send更加明确2.循环结构中使用i,j,k;若是更加精确的可使用userI或user_i(驼峰或下划线命名任选其一)3.为变量名附加更多的信息,使其更容易读.hexId // 十六进制idstartMs // 开始时间,单位毫秒elapsedSecs // 消耗的时间,单位秒4.附加额外信息plaintextPassword //纯文本格式密码,须要加密后使用unescapteComment //须要转义后才能使用htmlUtf8 //已转化为utf8格式dataUrlenc //url编码的输入数据5.在小的做用域里可使用简短的名字如: TaelService $m;6.丢掉没用的词:convertToString() 能够替换为 toString()7.利用名字格式来传递含义类名大驼峰格式: ClassName变量小驼峰: fooName常量: CONST_NAME8.避免歧义如从数据库获取数据:db->filter('year<=2017'); 这儿的filter咱们不清楚是挑出符合规则的数据,仍是减掉符合规则的数据.下面的相对来说语义更加明确db->where('year<=2017')->get();9.min/max(包含)表示极限10.first/last表示包含范围11.begin/end表示包含/排除的范围12.给bool值命名readPassword 是须要读取密码,仍是已经读取了密码,不如needPassword只管或者userIsAuthenticated只管给bool值加上is,has,can或should这样的词,可使语义更加明确13.避免使用反义词$disableSsl = false;应该用$useSsl = true;14.与使用者的指望相匹配如使用者老是指望get和size方法不须要作过多的计算.就名字而言大部分人的理解是count比size须要更多的操做.15.临时变量应该是对原有变量的处理后使用,不然就不要使用临时变量.15.源代码布局一致原则:A.使用一致的布局B.类似的代码应该看起来一致C.相关的代码行分组,造成代码块16.添加额外的方法来整理不规则的东西17.须要时使用列对齐$rule = [            'name'      => 'required|between:2,50',            'content'   => 'required|between:10,500',            'limitnum'  => 'required|integer|between:10,1000',            'level'     => 'required|integer|between:1,500',            'img'       => 'required|mimes:jpeg,bmp,png,gif|image|max:1024k'        ];18.选择一个有意义的顺序,并始终使用它.好比html中的表单应以重要到不重要的次序来排列,其次以字母顺序来排序.php接收表单值也应该如此$name = Input::get('name');$age = Input::get('age');19.if左边的值应该是变量,右边的值应该是常量20.除非逻辑简单(好比只对条件检查就返回值), 不然就不要用三目运算符21.在函数中提早返回,在循环中提早使用break或continue;经过提前返回来减小嵌套22.多个if时,应该先处理正确的/简单的/有趣或可疑的状况$age = intval($rawAge);if ($age <= 0) {	return '年龄错误';}if ($age > 100) {	return '年龄错误';}if ($age > 0 && $age < 20) {	return '青年';}先处理正确的if ($flag === true) {	.....}23.拆分超长的表达式,如:if (trim(explode($rawStr, ',')[0]) === 'test') {	...}能够拆分为:$users = trim(explode($rawStr, ',')[0]);24.总结变量if ($request->uid === $user->id) {	...}就能够写成:$userOwnsDocument = ($request->uid === $user->id);25.德摩根定理(分别取反,转换与/或):if (! $a && ! $b && ! $c) {}要比下面的代码更具可读性if (! ($a || $b || $c)) {}26.不要滥用短路逻辑,但如下逻辑是合理的if($object && $object->userName) {	....}27.更改复杂的逻辑,变的简单优雅:return ($begin >= $other->begin && $begin < $other->end) || ($end >= $other->begin && $end <= $other->end);能够拆分为:if ($other->end <= $begin) {	return false;}if ($other->begin >= $end) {	return false;}return true;28.拆分巨大的语句:29.减小变量,对于只出现一次的变量,没必要声明.减小控制流的变量.30.缩小变量做用域;如class Object{    private $str;        public function method1()    {        $this->str = '...';        $this->method2();    }    public function method2()    {        $this->str = '...';    }}str只有method1和method2中用到,因此应该将其缩小做用域.class Object{    public function method1()    {        $str = '...';        $this->method2($str);    }    public function method2($str)    {        ....    }}31.能用静态方法就用静态方法.32.多使用常量;只写一次的变量更好.提早返回避免中间变量.33.积极的发现并抽取不相关的子逻辑.34.代码一次只作一件事情35.代码库越少越好
相关文章
相关标签/搜索