3.函数

函数的第一规则是要短小(代码行数少)。第二条规则是还要更短小

函数不应该达到足够容纳嵌套结构。所以,函数的缩进层级不该多于一层或两层。

函数应该做一件事。做好这件事。只做这一件事。

判断函数是否不止做了一件事,还有一个方法,就是看是否能再拆出一个函数,该函数不仅只是单纯地重新诠释其实现。

尽力确保switch结构埋藏在较低的抽象层级切永不重复。比如利用多态达到这个目的。

别害怕长名称。长而具有描述性的好名称,要比短而令人费解的名称好。长而具有描述性的名称,要比描述性的长注释好。

最理想的参数是零(零参数的函数),其次是一,再次是二,尽量避免三。有足够特殊的理由才能用三个以上参数——所以无论如何也不要这么做。

参数不易对付。他们带有太多概念性。

参数与函数名处在不同的抽象层级,它要求你了解目前并不特别重要的细节。

普遍而言,应避免使用输出参数。如果函数必须要修改某种状态,就修改所属对象的状态吧。

函数要么做什么事,要么回答什么事,但二者不可得兼。函数应该修改某对象的状态,或是返回该对象的有关信息。两样都干常会导致混乱。

try/catch代码丑陋不堪。他们搞乱了代码结构,把错误处理与正常流程混为一谈。最好把try和catch代码块的主体部分抽离出来,另外形成函数。

函数只应该做一件事。错误处理就是一件事。因此,处理错误的函数不应该做其他事。

使用异常替代错误码,新异常就可以从异常类派生出来,无需重新编译或重新部署。

大师级程序员把系统当做故事来讲,而不是当做程序来写。


提要

  • 短小
  • 只做一件事
  • 每个函数一个抽象层级
  • switch语句
  • 使用描述性的名称
  • 函数参数
    • 一元函数的普遍形式
    • 标识参数
    • 二元函数
    • 三元函数
    • 参数对象
    • 参数列表
    • 动词与关键词
  • 无副作用
  • 分隔指令与询问
  • 使用异常替代返回错误码
    • 抽离try/catch代码块
    • 错误处理就是一件事
    • error.java依赖磁铁
  • 别重复自己
  • 结构化编程
  • 如何写出这样的函数

results matching ""

    No results matching ""