写点什么

读《A Philosophy of Software Design》——(8)

作者:术子米德
  • 2022 年 4 月 07 日
  • 本文字数:687 字

    阅读完需:约 2 分钟

🤔☕️🤔☕️🤔

  • 读《A Philosophy of Software Design》——(8)Pull Complexity Downwards

  • 📖:作为模块开发者,竭尽全力让使用方更简单,即会给自己带来更多额外工作。也就是说,让模块的接口尽量简单,优先于让模块的实现更简单。

    🤔:曾经一度把接口设计为所有的可能性都留给调用方,也把所有的可能错误都返回给调用方,总觉得这是各种可能的组合都开放出来,使得使用方有足够的灵活性,想要什么都可以自己实现。现在想来,这个想法没错,不过它更适合封装技术平台差异的层面,并不太适合提供给业务实现方。在封装差异的层面,核心关注点是让差异屏蔽掉,使得上层有足够的机会组合出新的特性。但是在业务实现方看来,他需要的是让机制有效组合,快速适配业务流程。有再多的组合可能性,都没有实际的效益。如果还要让业务流程里捕捉各种异常,现在想来的确是个灾难。此处所谓的把复杂度拉下来,就是针对业务实现方而言,不要把更多的复杂抛给他们去处理,而是要提供刚刚好让业务快速组合的接口,把其它的复杂度都放到实现层面,这是更有助于机制助推业务实现。

  • 📖:把复杂拉下来的好处:功能实现得更内聚,实现复杂后使用就简单起来,接口也更简单易理解

    🤔:现在看 SOCKET 编程,相比于该接口下面的协议栈实现,其接口已经是不能再简单的简单。虽然对于第一次学习和使用 SOCKET 的开发而言,这样的接口集合还是略显复杂。不过其复杂度更多来自“插座”模型的不熟悉,相比于真正的协议栈,尤其是 TCP 这样复杂状态机的传输协议协议栈实现,SOCKET 绝对是简洁而优雅的网络编程接口典范之作。正是这份简洁优雅的特性,使得它的实际年龄比我还大。

        —— By 术子米德 @2022.03.26

发布于: 刚刚阅读数: 2
用户头像

术子米德

关注

遇见每天的自己,莫忘初心,莫丢念头 2020.03.05 加入

喜欢有的没的,喜欢自言自语式笔记

评论

发布
暂无评论
读《A Philosophy of Software Design》——(8)_架构师成长笔记_术子米德_InfoQ写作平台