什么才是优秀的软件设计?

40 阅读2分钟

如果你经常看我写的关于程序员的内容,会发现我一直在说一个事情,就是程序员写代码时,要注意非功能性问题。这些问题产品prd里是不会写的。比如:

数据库压力突然变大了怎么办?

流量突然变大了怎么办?

第三方系统的接口突然大量超时了怎么办?

因为非核心功能出故障,影响到核心功能了,怎么办?

。。。。。

成熟的软件工程师,会在一大早就开始考虑这些问题,包括重试的,降级的,监控的,边界的。

也即是,当遇到异常场景时,程序不会撂挑子不干。这就是优秀的软件设计的其中一个体现。

那这就足够了吗? 如果你想更进一步呢? 如何做?

更为成熟的程序员,他还会做一个事情:就是在早期,在设计阶段,就去保证程序的稳定性。

我经常会跟团队里的高级程序员,举一个案例。就是关于支付系统,每个支付渠道用一个微服务的。

我们当时要对接微信,支付宝,抖音支付,国外支付等等各种各样的支付渠道,而我设计的这个支付系统,每日要处理50万笔订单的支付,如果因为某个支付渠道出故障了,导致支付系统瘫痪,那损失可太大了。

因此,在我们当时的那个场景下,一种支付方式一个微服务,就是一个好的软件设计。

记得当年微信支付回调出故障了,用户了给了钱,但是微信不回调。我们当时是立刻在收银台,把微信支付方式给置灰了,用户用不了。只能用支付宝等其他支付方式。

请记住:在设计阶段就保证程序的稳定性,是更为高明的一种做法。

那还有吗? 有的,就是你作为程序员,要时时刻刻的记住一件事:就是要保护核心模块。

为什么?

因为只要核心模块不出大事,剩下的都是小故障,怕哈呢?

因此,在每一个业务需求里,但凡改到核心模块的,你都小心对待。

用各种手段去呵护好核心模块,一旦你做到了,那么你的做法,也是优秀设计的体现。

如果你做到了上面的三点,那我认为你就是一个会做优秀软件设计的工程师了。