经常见到一些开发人员在讲,使用框架(例如Spring、ORM)是为了解决复杂度的问题,系统太复杂、业务太复杂,如果不用这些,做起来岂不是非常困难?
对此,我的看法是,期望工具解决系统复杂度的问题非常不现实,它们起到的是实现(代码)阶段的一些规范化和减少代码量,使程序员对于一些通用类型的模块和工具不再重复工作,但是对真正的系统复杂度,大体上是无能为力的。
复杂度的问题,我更赞成的是“系统复杂,实现复杂;系统简单,实现简单”,复杂系统设计和实现非常简单,是不切实际的幻想;简单系统,做的无比复杂,设计师难辞其咎。
真正的复杂度降低,应该是靠系统分解来做到的,完整系统切分为一系列相互依赖和通信的子系统组成,合理切分,合理定义依赖和通信是关键;子系统如果还复杂,要切分为模块,模块间一样存在依赖和通信,也需要合理定义;如果模块还是非常复杂,要定义其中的子模块,再往后,定义其中的程序单元(例如包、类、函数等等)。
说整个系统是复杂的,这个是常见的现象,甚至说,一个子系统复杂,也很正常,但是你要是经过多次切分,到了一个程序单元那里,还复杂无比,那说明架构师不称职。
就像做一把椅子,设计师定义好椅子面、腿、靠背的样式、尺寸以及它们相互对接的部分的明确要求,每个部分实现都不复杂,每个部分只要按照架构师给它的“部件需求规格说明”来设计自己的部分即可。而且,架构师也不用管部件的设计细节,定义先用锯子还是先用刨子。在一个“椅子产品”的设计和实现中,架构师和部件设计实现者各司其职就可以了。
实际的软件系统当然比作一把椅子复杂得多,但是这个例子中的方法,是解决复杂度问题的正道。没有工具能够解决你特定业务的的复杂度,因此,应该把一个称职的、优秀的架构师,作为系统设计和开发的核心,这样,才能做到《道德经》说说“挫其锐,解其纷”,做出好的产品。
相关推荐
ASP.NET实例开发源码——正道律师事务所管理系统v2.0
庞门正道课程-平面设计如何转型互联网设计.pptx
主要内容包括控制系统导论、系统数学模型、状态空间模型、反馈控制系统的特性、反馈控制系统的性能、反馈系统的稳定性、根轨迹法、频率响应方法、频域稳定性、反馈控制系统设计、状态变量反馈系统设计、鲁棒控制系统...
万物互联的时代即将到来,互联网作为当今最为火热的方向之一,无数开发者沉迷其中,那么从事物联网开发需要哪些知识储备呢?本次分享为你揭秘。
双赢与多赢才是正道:零和博弈.docx
社交电商的正道
社交电商的正道.pdf
硬件维护之人间正道——CPU.pdf
初中语文文摘历史行正道何必拘小节
智能家居:找准方向是正道.pdf
正道集团:二零一九年年报.PDF
和平发展合作共赢才是人间正道ppt模板.pptx
这篇主要对K60 Tower系统官方的的硬件和软件进行了简单的介绍,有了这个...人家的毕竟是人家的,用着不舒服,只有自己消化吸收了用自己容易理解的风格建立一套有自己特色的开发系统才是正道,呵呵,拭目以待,下回分解~