随着我们解决的场景越来越专业化和复杂化,大型SPA应用的流行,前端承担的职责越来越多。代码的质量和系统的完整性越来越难把握。很容易导致迭代着迭代着发现代码改不动了。最后只能新起炉灶,重新开发。归根到底在于复杂度的失控,本文会尝试分析其中的问题以及从前端如何应用领域模型开发的角度给出一些建议。
为什么迭代越来越难
我们的系统架构精心设计过,按照标准的系统分层来管理复杂度。逻辑层,展示层,数据层。每一层都精心设计。我们抽象出独立的类来放通用逻辑。对着代码不断地重构,将有复用能力的点进行抽象。为什么需求的变动还是能经常摧毁我们的设计呢。
原因在于:
问题域本身错综复杂技术模型与领域模型不匹配知识的丢失
问题域本身错综复杂
软件本身是为了管理复杂度,我们现在面对的问题域错综复杂。为了创建真正好用的软件,开发者必须有一整套与之相关的知识体系。为此要知道的知识的广度让人生畏。一旦我们不能理解问题域,我们就没法做到控制问题域的复杂性。当复杂性失去控制的时候,开发人员就无法理解软件。当领域的复杂度没有得到解决时,基础技术再好的构思也无济于事。
技术模型与领域模型不匹配
上面我所描述的设计都是技术层面的设计。我们很容易抽象出一个独立的类来放通用逻辑,可是很难给它业务上的定义!这个通用类只有技术维度上的通用。问题在于技术维度上的通用很容易被业务摧毁。需求上的变动或者膨胀,技术维度的通用很容易被摧毁。
举个例子,页面变化了,某个视图组件被复用了,他可能就要被提取到上层的