前两节描述的所有功能都来源于用户需求,如能实现这些功能,此时已是一款可用的产品了,然而,可用的产品并不一定是好的产品。
产品的“好”有两方面,针对用户和针对研发人员。乔布斯眼中的苹果手机,一根指头改变世界,就是对用户友好性最极致的追求。用户友好型不属于本书讨论内容,我们侧重于如何让产品对研发人员友好。
本书第一章已经描述过许多传统产品研发模式的困局,假设现在我们启动研发过流和变压器差动两款继保设备,有哪些好的策略让我们的产品是对研发人员友好的呢?
1. 严格分层的软件架构:
我们做产品时,看似每个功能都是一个个独立的模块,但如果细细观察,会发现这些模块之间有着数不清的互相调用,而恰恰是这些调用最终导致一个产品的很多模块是混杂在一起的。
此时,经常会出现一种现象:我们增加或修改一些功能时,需要修改多处代码,即使小心翼翼,也容易犯错。我早起工作经历,就经常会面对刚发布的程序就被反馈一堆问题的尴尬。
因此,架构设计首先需要的就是模块之间解耦。为了解耦,可能需要增加一些回调函数,可能需要采取一些程序技巧,但相对于整个架构的清晰,这点小小的代价是非常值得的。
模块和模块总是有一定的调用关系的,解耦并非完全砍断各模块之间的调用,而是梳理他们之间的关系。此时,我们会自然的发现模块会聚集并形成层次结构,一般都是上层调用下层,下层调用上层的较少。
此时,如果能加强层之间的调用关系,仅允许上层调用下层,不允许下层调用上层,好似一些优秀的类库,并不会去调用我们自己写的代码一般,此时,