降低软件复杂度 和 写注释写总结 2019-10

读书笔记. 

最近在学习软件工程师面试会碰到的系统设计题目. Instance Messenger 在线聊天工具.

昨晚我又看了一下, grokking 精通系统设计 和 降低代码复杂度的书,说说我自己的理解,应用服务器为什么分了三层?
初步设计我们只需要一个 Chat 会话服务器就可以了,所有功能在一个应用服务器里完成。
最后我拿出来那张图片有三层,分别是 message 消息服务, channel 群聊频道服务 和 push 推送服务,
把他们分层就降低了每一层的复杂度, 接口简单,各司其职。

降低复杂度大概有三种方法,一个是上下分层,就像著名的 TCP/IP 七层划分.
一个是水平分模块;
还有一个是写注释,你的代码并不能完全反应你的思想,跟我们做题写总结差不多。哈哈。

不知道我这样理解对不对?

有的层次更适合模块化水平扩展, 更有利于均摊负载。比如,push service.

 

写总结, 写解题思想最重要. 如果你不能写出一个简洁完整的注释, 来阐述你的思路, 说明你没有能够很好的抽象, 你都不知道你自己在干什么.
同样适用于解答算法题目, 代码模块,函数,对象, 和系统设计.

 

附录,

 

降低软件复杂性一般原则和方法

https://tech.meituan.com/2019/09/19/common-method-of-reduce-complexity.html

 

posted @ 2019-10-06 01:25  木匠_Charlie  阅读(194)  评论(0编辑  收藏  举报