降低软件复杂度 和 写注释写总结 2019-10
读书笔记.
最近在学习软件工程师面试会碰到的系统设计题目. Instance Messenger 在线聊天工具.
昨晚我又看了一下, grokking 精通系统设计 和 降低代码复杂度的书,说说我自己的理解,应用服务器为什么分了三层?
初步设计我们只需要一个 Chat 会话服务器就可以了,所有功能在一个应用服务器里完成。
最后我拿出来那张图片有三层,分别是 message 消息服务, channel 群聊频道服务 和 push 推送服务,
把他们分层就降低了每一层的复杂度, 接口简单,各司其职。
降低复杂度大概有三种方法,一个是上下分层,就像著名的 TCP/IP 七层划分.
一个是水平分模块;
还有一个是写注释,你的代码并不能完全反应你的思想,跟我们做题写总结差不多。哈哈。
不知道我这样理解对不对?
有的层次更适合模块化水平扩展, 更有利于均摊负载。比如,push service.
写总结, 写解题思想最重要. 如果你不能写出一个简洁完整的注释, 来阐述你的思路, 说明你没有能够很好的抽象, 你都不知道你自己在干什么.
同样适用于解答算法题目, 代码模块,函数,对象, 和系统设计.
附录,