• 代码简洁之道之我见


    写出整洁代码的原因:培养良好的职业素养,成为卓越的程序员。

    一、有意义的命名

    1.类名和对象名应该是名词或名词短语;方法名应当是动词或动词短语。

    2.每个概念对应一个词。

    3.使用计算机领域名称。

    记住只有程序员才会读你的代码。所以尽管用那些计算机科学的术语、算法名、模式名、数学术语吧。如果不能用程序员所熟悉的术语来给手头的工作命名,就采用从所涉问题领域而来的名称吧。

    4.添加有意义的语境。

    如,可以添加前缀addrFirstName、addrLastName、addrState等,以此提供语境。

     二、整洁的函数

    函数是所有程序中的第一组代码。

    1、短小

    函数的第一规则是短小。每个函数要一目了然,每个函数都只说一件事,而且每个函数都依次序把你带到下一个函数。这就是函数应达到的短小的程度。

    一个函数(方法)的最优行数限定在 30 行以内。

    代码块和缩进

    if语句、else语句、while语句等,其中的代码块应该只有一行。函数的缩进层级不该多于一层或两层。

    2、只做一件事

    函数应该做一件事。做好这件事。只做这一件事。要判断函数是否不止做了一件事,就是看是否能再拆分出一个函数,该函数不仅只是单纯地重新诠释其实现。

    3、每个函数一个抽象层级

    要确保函数只做一件事,函数中的语句都要在同一抽象层级上。函数中混杂不同抽象层级,往往让人迷惑。读者无法判断某个表达式是基础概念还是细节。一旦细节与基础概念混杂,更多的细节就会在函数中纠结起来。

    自顶向下读代码:向下规则

    代码拥有自顶向下的阅读顺序。每个函数后面都跟着位于下一抽象层级的函数,这样在查看函数列表时,就能循抽象层级向下阅读了。

     4.参数

    如果函数看来需要两个、三个或以上参数,就说明其中一些参数应该被封装为类。

    三、整洁的类

    1、类的组织

    类应该从一组变量列表开始。如果有公共静态常量,应该先出现。然后是私有静态变量,以及私有实体变量。很少会有公共变量。

    公共函数应跟在变量列表之后。把由某个公共函数调用的私有工具函数紧随在该公共函数后面,更符合由顶向下的原则。

    2、类应该短小

    关于类的第一条规则是类应该短小。第二条规则是还要更短小。

    函数通过计算代码行数衡量大小。对于类,通过计算权责来进行衡量。

    类的名称应当描述其权责。如果某个类无法命名以精确的名称,这个类就太长了。类名越含混,该类越有可能拥有过多的权责。

     一个类文件的最优长度限制在 200 行以内。

    单一权责原则

    单一权责原则任务,类或模块应有且只有一条加以修改的理由。

    有大量短小类的系统并不比有少量庞大类的系统拥有更多移动部件,其数量大致相等。

    系统应该由许多短小的类而不是少量巨大的类组成。每个小类封装一个权责,只有一个修改的原因,并与少数其他类一起协同达成期望的系统行为。

    3.内聚

    类应该只有少量实例变量。类中的每个方法都应该操作一个或多个这种变量。通常而言,方法操作的变量越多,就越粘聚到类上。如果一个类中的每个变量都被每个方法所使用,则该类具有最大的内聚性。

    一般来说,创建这种极大化内聚类既是不可取也是不可能的;另一方面,我们希望内聚行保持在较高的位置。内聚性高,意味着类中的方法和变量互相依赖、互相结合成一个逻辑整体。

    保持函数和参数列表短小的策略,有时会导致为一组子集方法所用的实例变量数量增加。出现这种情况时,往往意味着至少有一个类要从大类中挣扎出来。应该尝试将这些变量和方法分拆到两个或多个类中,让新的类更为内聚。保持内聚性就会得到许多短小的类。

    四、整洁的格式

    1.垂直格式

    可能用大多数为200行、最长500行的单个文件构造出出色的系统,尽管这并非不可违背的原则,但是短文件通常比长文件易于理解。

    概念间垂直方向上的区隔

    代码都是从上往下读,从左往右读。每行展现一个表达式或一个子句,每组代码行展示一条完整的思路。这些思路用空白行区隔开来。

    每个空白行都是一条线索,标识出新的独立概念。

     垂直方向上的靠近

    如果说空白行隔开了概念,靠近的代码行则暗示了他们之间的紧密关系。所以,紧密相关的代码应该互相靠近。

    垂直顺序

    自上而下展示函数调用依赖顺序。

     2.横向格式

    应该尽力保持代码短小。代码一行长度达到100个字符也还可以接受,再多的话,就有点肆意妄为了。

    缩进

    类的声明、类的方法相对于该类缩进一个层级。方法的实现相对于方法声明缩进一个层级。代码块的实现相对于容器代码块缩进一个层级,以此类推。

     *****************************
     *** Keep learning and growing. ***
     *****************************
  • 相关阅读:
    解析中间人攻击(4/4)---SSL欺骗
    解析中间人攻击(3/4)---会话劫持
    解析中间人攻击(2/4)---DNS欺骗
    解析中间人攻击(1/4)---ARP缓存中毒
    (转)常见的HTTPS攻击方法
    转载 OpenUrl
    如何安全的存储密码
    本地存储密码的安全设计
    硬件断点和软件断点的区别
    网站防止CC攻击的方法
  • 原文地址:https://www.cnblogs.com/gangle/p/9303157.html
Copyright © 2020-2023  润新知