[简化代码] -- 我们要惜字如金

从我2008年学VB的时候开始就很计较每写的一行代码是不是多余了,能不能删减

我也觉察到自己是不是有什么强迫症,至于如此计较这些代码,其实搞不搞它们程序都能正常工作

但是渐渐地我写的代码越来越多,后来编写了一个3万多行代码的VB程序后,过2个月我进行维护时居然不太记得怎么改某个函数了,原因正是因为要改的函数太复杂,逻辑太不精简了,觉得有些字符计算又绕了弯子

后来我狠下心先精简这里的代码,把不必要的去掉,把独立的逻辑块封装掉,一个方法就剩下很清晰的A,B,C..几个大步骤了,后来维护这块代码时也方便了许多,于是当时就觉得:惜字如金,不写多余的代码,但又要保持逻辑清晰,正是这个习惯让我的程序更好维护


我所谓的惜字如金,其实并不是说把变量命名写短一点(当然一般也不能太长),把代码压缩一点

而是一些不必要的代码逻辑把它简化成没得更简的状态(通常运行效率都是高的)

不过有时候我也是为了代码比较好阅读而统一代码规范,只加1个空格就1个空格,多拍空格和换行的都会要求删掉

惜字如金是一种态度,侧面映射的是一种精益求精的思想,有这种思想才会追求更高的质量

说实话要是只着眼于把代码精简,这其实价值性不大,重要的是思想


下面一一细数一下我如何惜字如金的

有的可能是强迫症,但我并不承认所有都是强迫症,因为那样写真的很没必要!

  1. 数据库字段的类型是整型时我只写数字,不容许多余的引号

    数据库存一个类型值,1,2,3,4一共四个不同的值表示四种类型,则我会抗拒这样的代码:

    $db->where(['type' => '2'])
    //或者
    $db->where(['type' => "2"])

    这里引号绝对是多余的不必要输入的

    $db->where(['type' => 2])

    虽然其实写字符串'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一般情况下根本不需要加引号;还有,编辑器代码高亮区分更明显了不是吗?


  3. 返回值的代码不是很大很难阅读的话,直接把数组写在里面

    //不支持
    $data = [
        
    'message' => $message,
        
    'code' => $code,
    ];
    return 
    $data;
        
        
    //我会这样写
    return [
        
    'message' => $message,
        
    'code' => $code,
    ];

    如果说产生一个$data变量只是为了让return那一行更加好阅读的话,那实际上对比两个代码的排版,是不是阅读成本都差不多?数组元素是不是都写成两行?


  4. 直接返回函数/方法的返回值,而不是先赋给变量

    $result $db->table('xxx')->where($where)->exists();
    return 
    $result;

    我不认为创建多个$result变量能带来什么好处,所以会直接

    return $db->table('xxx')->where($where)->exists();

  5. 数组赋值问题,分多句执行不如尽量一次性

    $user = [];
    $user['name'] = 'aaa';
    $user['age'] = 99;
    $user['vip'] = 7;
        
    //应该改成一次性赋值:
    $user = [
        
    'name' => 'aaa',
        
    'age' => 99,
        
    'vip' => 7,
    ];

    第一种写法换个现实的比方就是:进饭店坐下占张桌子,然后叫老板上一道叫name的菜,老板把菜上完后再叫老板上一道age的菜,上完后又叫老板上一道vip的菜,而现实中哪有人这样吃饭的嘛,应该直接在开头就一次性告诉老板要name age vip三个菜,而不是让人家做完一个再做下一个。如果CPU有血性,你看它不打你个鼻青面肿?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值