软件设计原则之分离关注点

1 问题:

分离关注点,和单一职责原则,是异曲同工的。当没有做到有效分离时,在代码中存在问题,主要有如下两个方面“

  • 技术和业务的混淆;
  • 不同业务数据变动方向的混淆。

2 解决方案:

  • 对技术和业务的混淆:解决方案是把业务处理和技术实现这两个关注点分开,比如:场景的技术异常与业务异常区分对待。

那如何区分技术与业务,一个简单的区分就是业务人员能够理解的就是业务的,比如,订单,而业务人员理解不了的就是技术的,比如,多线程。

  • 对于不同业务数据变动方向的混淆:解决方案,根据不同的数据变动方向进行拆分,比如:动静分离:把变和不变的内容分开;读写分离;把高频和低频的内容分开。

3 说明

只有分解的足够细小,才能更容易发现各不同模块之间的共性,这样才有机会把同样的信息聚合在一起,这也会软件设计的后续过程,组合做好了准备。

多说一句,在真实项目中,程序员最常犯的错误就是认为所有问题都是技术问题,总是试图用技术解决所有问题。任何试图用技术去解决其他关注点的问题,只能是陷入焦油坑之中,越挣扎,陷得越深。

一句话,分离关注点,发现的关注点越多越好,粒度越小越好。

4 如何更好地练习分离?

有一种从小事练起的方法,就是写代码时,把自己写的函数行数限定在一定的规模之下,比如,10行。超过10行的代码,你就要去仔细想想是否是有东西混在了一起。

这种方法锻炼的就是找出不同关注点的思维习惯,一旦你具备了这种思维习惯,再去看大的设计,自然也会发现不同的关注点。

你可能感兴趣的:(软件设计原则之分离关注点)