设计模式之美学习(二十一)

本文最后更新于:8 个月前

对于一个工程师来说,如果要追求长远发展,你就不能一直只把自己放在执行者的角色,不能只是一个代码实现者,你还要有独立负责一个系统的能力,能端到端(end to end)开发一个完整的系统。这其中的工作就包括:前期的需求沟通分析、中期的代码设计实现、后期的系统上线维护等

前面我们还提到过,大部分工程师都是做业务开发的。很多工程师都觉得,做业务开发没啥技术含量,没有成长,就是简单的 CRUD,翻译业务逻辑,根本用不上设计原则、思想、模式。

技术人也要有一些产品思维。对于产品设计、需求分析,我们要学会“借鉴”,一定不要自己闷头想。一方面这样做很难想全面,另一方面从零开始设计也比较浪费时间。除此之外,我们还可以通过线框图和用户用例来细化业务流程,挖掘一些比较细节的、不容易想到的功能点。

面向对象设计聚焦在代码层面(主要是针对类),那系统设计就是聚焦在架构层面(主要是针对模块),两者有很多相似之处。很多设计原则和思想不仅仅可以应用到代码设计中,还能用到架构设计中。实际上,我们可以借鉴面向对象设计的步骤,来做系统设计。

面向对象设计的本质就是把合适的代码放到合适的类中。合理地划分代码可以实现代码的高内聚、低耦合,类与类之间的交互简单清晰,代码整体结构一目了然。类比面向对象设计,系统设计实际上就是将合适的功能放到合适的模块中。合理地划分模块也可以做到模块层面的高内聚、低耦合,架构整洁清晰。在面向对象设计中,类设计好之后,我们需要设计类之间的交互关系。类比到系统设计,系统职责划分好之后,接下来就是设计系统之间的交互了。

思考

  • 对公司业务及已有系统的熟悉程度,有时候甚至会超过个人的技术能力,更能决定一个人在公司内部的发展前途。但是,当我们出去面试的时候,面试官大部分情况下更加关注你的技术能力,而非特定的业务细节,特别是你做的业务并不是太复杂,或者跟要面试岗位无关的时候。
    这两者听起来比较矛盾。作为一名技术人,为了谋求更好的发展,你觉得是应该多花点时间研究业务呢,还是要多花点心思在技术上呢?

参考:实战一(上):针对业务系统的开发,如何做需求分析和设计?



欢迎关注我的公众号😘