zoukankan      html  css  js  c++  java
  • 代码简洁-----第一步:命名

    我们花在读代码和写代码的时间之比大概在10:1.所以写更容易理解的代码,就是加速开发。

    简洁的代码就是只做好一件事儿

    实际技巧
    1.命名要清晰易懂

    2.避免误导
    比如java 代码中
    int[] accountList = new int[];
    其中accountList并不是List,可能会给阅读者带来误导。

    3.做有意义的区分

    比如ProductInfo和ProductData,意思和a,an,the差不多,无法区分出来,缺乏约定,造成阅读的困扰。

    4.保持一致
    以前我们总是说要follow before,其实就是要解决代码风格和处理方式的一致,这样可以减少理解难度和时间。
    比如添加都用add,而不是有的地方写add方法,有的地方又写append.

    5.脱离一点实际需求的命名,用专业化的命名,可以减少后来者的理解成本。比如JobQueue,众人皆知。

    6.写更有语义环境的函数命名。
    比如你在写一个设置用户基础信息的功能,假设是用面向对象的方式。用户User类,有username,age, job, phone,address等属性。
    你可以分别写get,set方法。比如addUserName(),addAge()等。

    尽可能地抽象出公共的方法和类,简化代码,复用代码。

    比如我在写一些列表页面的时候,发现可能都要用到根据某个列(表中字段)来进行排序。
    那么基于业务级别的创建排序查询字符串就是一个不断重复的过程,
    为何不能再进一步抽象出一个公共的创建排序查询字符串的函数呢?

    让每一句代码都是引入一个函数去处理(或者某类的方法调用)

    function buildOrderby($orderData, $validOrderFields) {
    if (!$orderData['order'] || !in_array($orderData['order'], array('asc', 'desc'))) {
    $order = 'desc';
    }
    //过滤排序条件
    if ($orderData['orderField'] && !in_array($orderData['orderField'], $validOrderFields)) {
    $orderField = isset($orderData['default']) ? $orderData['default'] : 'id';
    }

    return $orderField . ' ' . $order;
    }

    应该让更多的判断和细节被封装到最里层,而不是让调用层做太多的处理。

    比如在查询调用的时候,过滤非空的数组元素,是可以写在controller层中:
    $params = array_filter($params);
    $this->users_model->getList($params);

    其实还是应写在model层中:
    if ($param['user_name'] && $param['user_name']) {
    $where[] = "user_name like'%{$param['user_name']}%'";
    }

    还要关注一件事儿,关于模糊查询,到底能不能砍点抽象需求来换查询效率。

  • 相关阅读:
    PAT B1027 打印沙漏 (20 分)
    PAT B1025 反转链表 (25 分)
    PAT B1022 D进制的A+B (20 分)
    PAT B1018 锤子剪刀布 (20 分)
    PAT B1017 A除以B (20 分)
    PAT B1015 德才论 (25 分)
    PAT B1013 数素数 (20 分)
    PAT B1010 一元多项式求导 (25 分)
    HDU 1405 The Last Practice
    HDU 1165 Eddy's research II
  • 原文地址:https://www.cnblogs.com/freephp/p/5093395.html
Copyright © 2011-2022 走看看