如何降低代码的复杂度?
简单解释一下。
《人月神话》作者 Fred Brooks 提到,软件开发的复杂度可以划分为本质复杂度(Essential complexity )和偶然复杂度(Accidental complexity)。
本质复杂度是解决问题的最小复杂度,它是一个客观的东西,跟你用的工具、经验或解决渠道都没有任何关系,比如开发一个 3d 游戏的复杂度就是要大于开发一个提醒事项的复杂度,这是项目本身的功能、需求客观决定的。
而偶然复杂度,顾名思义,跟偶然相关,跟每个人使用的工具、方法和经验紧密相关。还是上面那个 3d 游戏和备忘录的例子,一个经验丰富的开发者跟一个刚学不久的小白,开发同一个 3d 游戏,谁会更容易完成,碰到的复杂度更小?显然是前者,因为前者趟过很多坑,知道什么方法可以最快、最大程度上解决他所碰到的问题,也知道运用什么工具来解决问题。但是对小白来说,这个复杂度就高多了,他会碰到各种难缠的问题,尝试各种各样的手段去解决,直到真正的问题水落石出,这期间花费的时间和精力肯定是远远超过一个成熟开发者的。
你遇到的复杂度,可能两者都有,建议先提升自己的水平,把偶然复杂度减去。如果一时半会没有时间,可以试试用一些低代码平台(如 iVX 这种),低代码解决的问题,就是尽可能降低偶然复杂度,让这种因人而异的技术差异变得更小、更稳定。
不过,再怎么降低复杂度,本质还是一个逻辑问题和对程序的熟练度决定了他开发一个项目的难度,真正的小白遇到任何问题都可能束手无策,而熟练的开发者则是驾轻就熟,低代码正是为了帮助开发者找到最短解决问题的途径,将底层的技术细节屏蔽,减少不必要的技术复杂度。
评论