代码整洁之道——函数

  1. 规则

    1. 短小,更短小。
      要让每一个函数遵循单一职责原则
    2. 代码块和缩进
      对于if,else,while等语句,如果其中的代码块逻辑复杂,应提取方法。
      函数的缩进层级不该多余一层或两层,易于阅读和理解
    3. 只做一件事
      函数应该做一件事,做好一件事,只做一件事。
      判断函数是否只做了一件事,看能否再拆分出一个函数
    4. 每一个函数一个抽象层级
      要确保函数只做一件事,函数中的语句都要在同一抽象层级上。抽象层级混杂,会让人迷惑,细节与基础概念混杂,会让更多的细节在函数中纠结起来。
    5. switch语句
      短小的switch语句很难写。Switch天生就是做N件事。但是我们没法避开它,他会让我们违反单一职责、开闭原则。我们可以通过将switch语句埋藏于较低的抽象层级。
    6. 使用描述性的名称
      好的名称让人更好理解代码,函数越短小,功能越集中,就越便于取个好名字。
      别害怕长名称, 别害怕花时间去名称。
      命名方式要保持一致,使用与模块名一脉相承的词语命名
      选择描述性的名称能理清你关于模块的设计思路,并帮你改进,追求好名称,往往导致对代码的改善重构。
    7. 函数参数
      参数越少越好。向少函数看齐
      7.1 一元函数的普遍形式 函数名能体现参数的作用 转换 还是 操作
      7.2 标识参数
      向函数传入布尔值是不好的做法,起码它表示函数处理两种事情,可将函数一份为二。
      7.3 二元函数 能正确区分函数参数意义
      7.4 三元函数
      7.5 参数对象 当参数过多时。
      7.6 参数列表 传入的参数数量可变
      7.7 动词与关键字
      好的名字更好地解释函数的意图,以及函数的顺序和意图。
      如:

      write(name )   --- >   writeField(name)
      assertEqual(expected, actual)assertExpectedEqualActual( ,)
    8. 无副作用
      函数隐含了做另一件事。
      避免使用输出参数
    9. 分割指令和询问
      函数要么做某事,要么回答某事。二者不可得兼。
    10. 使用异常替代返回错误码
      抽离Try/Catch代码块,另外形成函数。
      错误处理就是一件事。 处理错误的函数不该做其他事
      Error.java 依赖磁铁 使用异常代替错误码。新异常从异常类派生。
    11. 别重复自己 控制和消除重复
    12. 结构化编程
      每个函数,函数中的每个代码块都应该有一个入口,一个出口。
      但是只要函数短小,偶尔出现return、break、continue可以。Goto只有在大函数中才有道理,避免使用。
  2. 如何写出整洁的函数:
    打磨代码,分解函数、修改名称、消除重复 缩短和重新安置方法,拆散类。

  3. 函数的目的:
    真正的目标在于讲述系统的故事,编写函数必须干净利落地拼接在一起,形成一种精确而清晰的语言,帮你讲故事

  4. ?函数是否非得要特别小:
    按照职责去划分函数, 不一定要分的特别小,关键思路是要通过函数划分,类的设计体现出来你的代码框架逻辑来

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值