# 起源


再次在在线笔记的架构选择中使用了三层架构,之前还是在三年多前学习 ASP.NET 的时候使用过,后来并未怎么写过代码,于是已经忘却。

# 新的发现


刚开始,我的在线笔记没有分层,所有的代码全部写在一个 js 文件中,刚开始,只有几个接口的时候没有什么感觉,到了后来,接口数量和业务逻辑越来越多,我才明白了分层的重要性。
我也明白了代码需要高内聚低耦合的重要。

# 三层的优势


循环依赖。低层不会调用高层,高层调用次高层,次高调用底层。缺点就是循环调用,纵向耦合性太强,底层的依赖模块不能随意删除(或者说底层模块本来就不需要更换什么的)。但是搭起了三层架构以后,业务的拓展就非常的方便。由于是面向接口的前后端分离模式,增加功能只需要横向拓展,增加新功能就像搭积木一样,在架构大体搭建完成以后,功能的增加就像搭积木一样,功能模块与功能模块之间横向的耦合几乎为 0!这使得后端的开发成为了像建房子一样轻松的事情,大体的框架已经具有,只需按照设定的规则编写功能模块,就能迅速进行功能开发。我甚至想到,可以写出一个可视化工具用来构建后端的开发,几乎是可行的,但是由于功能需要的数量可能没那么多,加上测试还是有一定的困难,暂时先放下,有机会再去试验。

# Promise


我一度对于 js 的异步非常讨厌。它使我无法控制代码运行的顺序,经常会导致难以理解的 bug 出现,诚然这与我对 js 的了解脱不了干系,但也说明 js 的缺陷确实还是很大。但今天我终于学会了 Promise 的使用,作为对异步的修改,在我弄懂它之后,我感觉到了莫大的喜悦,它使我对于 js 的使用简单了许多。

# 可拓展性


在知乎的一篇文章中看见,程序员仿佛就像是在与未来的人交流,我深有同感。代码就像是写给未来能看到这代码的人的一封信一般,所以,需要尽可能的简单易懂,这种跨越时间,空间。与灵魂的交流,让人感觉到奇妙。

代码也是需要留下可拓展的空间的。尽量去做到高内聚低耦合,这样就为未来的拓展留下了足够的空间,就算是重写,也能有迹可循。反之,如果写的太烂,循环的调用,各种强耦合,使得代码完全失去了扩展的余地,那就是十分害人了。