我们要惜字如金 ¶
作者:KK
发表日期:2016.5.28
修改日期:2016.11.02
从我2008年学VB的时候开始就很计较每写的一行代码是不是多余了,能不能删减
我也觉察到自己是不是有什么强迫症,至于如此计较这些代码,其实搞不搞它们程序都能正常工作
但是渐渐地我写的代码越来越多,后来编写了一个3万多行代码的VB程序后,过2个月我进行维护时居然不太记得怎么改某个函数了,原因正是因为要改的函数太复杂,逻辑太不精简了,觉得有些字符计算又绕了弯子
后来我狠下心先精简这里的代码,把不必要的去掉,把独立的逻辑块封装掉,一个方法就剩下很清晰的A,B,C..几个大步骤了,后来维护这块代码时也方便了许多,于是当时就觉得:惜字如金,不写多余的代码,但又要保持逻辑清晰,正是这个习惯让我的程序更好维护
我所谓的惜字如金,其实并不是说把变量命名写短一点(当然一般也不能太长),把代码压缩一点
而是一些不必要的代码逻辑把它简化成没得更简的状态(通常运行效率都是高的)
不过有时候我也是为了代码比较好阅读而统一代码规范,只加1个空格就1个空格,多拍空格和换行的都会要求删掉
惜字如金是一种态度,侧面映射的是一种精益求精的思想,有这种思想才会追求更高的质量
说实话要是只着眼于把代码精简,这其实价值性不大,重要的是思想
下面一一细数一下我如何惜字如金的 ¶
有的可能是强迫症,但我并不承认所有都是强迫症,因为那样写真的很没必要!
数据库字段的类型是整型时我只写数字,不容许多余的引号
数据库存一个类型值,1,2,3,4一共四个不同的值表示四种类型,则我会抗拒这样的代码:
$db->where(['type' => '2']) //或者 $db->where(['type' => "2"])
这里引号绝对是多余的不必要输入的
$db->where(['type' => 2])
虽然其实写字符串
'2'
也不会出错,但是我不会纵容这样的代码在项目里留存,不是强迫症,而是我觉得这样会给看到这种代码的人一种“不严谨”、“没质量”等印象,我只想说我带的项目就是有质量我自己写的代码、我要求大家写的代码,都不允许这样画蛇添足
JS里的key能不用引号就不用引号
function Table(option){ this.width = option.width; this.height = option.height; } //不支持 var table = new Table({ 'width' : '100px', 'height' : '100px' }); //我会这样写 var table = new Table({ width : '100px', height : '100px' });
这不是习惯,是在JS里要声明一个key一般情况下根本不需要加引号;还有,编辑器代码高亮区分更明显了不是吗?
返回值的代码不是很大很难阅读的话,直接把数组写在里面
//不支持 $data = [ 'message' => $message, 'code' => $code, ]; return $data; //我会这样写 return [ 'message' => $message, 'code' => $code, ];
如果说产生一个$data变量只是为了让return那一行更加好阅读的话,那实际上对比两个代码的排版,是不是阅读成本都差不多?数组元素是不是都写成两行?
直接返回函数/方法的返回值,而不是先赋给变量
$result = $db->table('xxx')->where($where)->exists(); return $result;
我不认为创建多个$result变量能带来什么好处,所以会直接
return $db->table('xxx')->where($where)->exists();
数组赋值问题,分多句执行不如尽量一次性
$user = []; $user['name'] = 'aaa'; $user['age'] = 99; $user['vip'] = 7; //应该改成一次性赋值: $user = [ 'name' => 'aaa', 'age' => 99, 'vip' => 7, ];
第一种写法换个现实的比方就是:进饭店坐下占张桌子,然后叫老板上一道叫name的菜,老板把菜上完后再叫老板上一道age的菜,上完后又叫老板上一道vip的菜,而现实中哪有人这样吃饭的嘛,应该直接在开头就一次性告诉老板要name age vip三个菜,而不是让人家做完一个再做下一个。如果CPU有血性,你看它不打你个鼻青面肿?