美文网首页
何时分?何时合?

何时分?何时合?

作者: 全新的饭 | 来源:发表于2022-05-10 11:12 被阅读0次

    给定的2个功能,应该把它们放到一起实现,还是各自实现各自的?

    分或合的依据:哪个能降低使用功能者的使用成本(理解、操作……)
    即降低复杂度。

    无限细分的坏处:增加了复杂度

    1. 模块太多,要找到目标模块很难
    2. 需要增加额外代码去管理一组关系稍近(需一起使用来实现一项功能)的模块
    3. 依赖关系太多,增加认知成本
    4. 可能会出现重复内容

    两个功能的关系

    关系紧密的就应放在一起,不紧密的就应分开。
    怎样判断两个功能是否相关?
    它们是实现一项功能过程中的不同步骤,在更高的抽象中归属于同一概念,需要一并了解之后才能看懂它们是干嘛用的。

    可以将它们包一层后再供外部调用。

    何时合?

    合了之后能简化接口。
    合了之后能消除重复。

    重复

    对待重复有2种处理方式

    1. 提取重复的部分生成新模块,其他地方调用它。
      重复的部分越长,这种做法越有价值。
      需注意:提取重复后,是否需传入很多参数才能用?考虑将这些参数包成一个数据结构传入。
    2. 重复真的有必要?
      修改实现流程(只要保证最终功能仍可实现)可能就可以减少重复。

    通用代码和专用代码

    当你发现你在不同的地方写了几乎相同的代码内容,这说明你当前的抽象架构可能不够合理。
    越底层越通用,越顶层越专用:将专用代码尽量放到较高层,将通用代码留在底层。

    方法的拆分和合并

    核心目标:提供简单明晰的抽象,降低使用者的使用成本。
    其接口(签名)比具体实现应简单得多。

    结论

    分或合的依据是怎样能更好地降低复杂度。
    理想状态:

    1. 隐藏尽量多的信息(用起来简单)
    2. 依赖尽量少(开发者理解起来简单,方便修改)
    3. 接口尽量深(开发者理解起来简单,方便修改)

    当前大前提是:能提供满足需求的功能。

    相关文章

      网友评论

          本文标题:何时分?何时合?

          本文链接:https://www.haomeiwen.com/subject/pmrlurtx.html