本文由腾讯云 社区自动同步,原文地址 http://stackoverflow.club/article/programmer_should_know_laws/
二八定律
二八定律是19世纪末20世纪初意大利经济学家帕累托发现的。他认为,“在任何一组事物中,最重要的只占其中一小部分,约20%。其余80%尽管使多数,却是次要的”。因此又被称为二八定律。
这应该是应用最广泛的一个定律了。在代码中也是约20%的核心代码逻辑支撑了整个系统的运转,对老系统的治理过程中我们也会先找出20%的代码去重构,在大促备战中先是梳理出20%的功能,而这些功能往往恰好是“黄金”功能。
海恩法则
海恩法则是德国飞机涡轮机的发明者德国人帕布斯・海恩提出一个在航空界关于飞行安全的法则,海恩法则指出:“每一起严重事故的背后,必然有29次轻微事故和300起未遂先兆及1000起事故隐患”。该法则强调两点:“一是事故的发生是量的积累的结果;二是再好的技术、 再完美的规章,在实际操作层面,也无法取代人自身的素质和责任心。”
海恩法则对我们是一种警示,我们平时对测试中和线上的小问题都不可忽视,比如对于笔者所在的公司,每次大促之前我们都要对核心系统和核心流程做梳理,不能放过任何一个小的问题,而且越是平时不被关注的边缘系统越容易出问题。
我们常说一切问题皆是人的问题,所以在平时我们还要注重人的自身素质提高的培养。
墨菲定律
墨菲定律的具体内容是“凡是有可能出错的事就一定会出错”,指的是任何一个事件,只要具有大于零的概率,就可以确定它可以发生。
该定律跟海恩法则常常被我们应用在大促之前的备战中,当然平时也会经常用到,只是大促备战的过程中更加重视。凡是我们怀疑的系统薄弱点,都要拿出来仔细过一遍,绝不能轻易放过一丝一毫的怀疑,避免因疏忽遗漏导致线上重大事故的发生。
康威定律
康威定律指的是“系统设计的结构必定反映其团队的组织结构”。一个直接跟程序设计有联系的定律。换言之,有什么样的团队结构就产生什么样的技术架构。
SMART原则
“SMART原则是目标管理中的一种方法,SMART原则中的S, M, A, R, T分别对应了五个英文单词Specific(明确), Measurable(可衡量), Achievable(可达成), Relevant(相关),和Time-bound(有时限)”。
我们在指定一个架构目标的时候要符合这样的原则,对一个老系统做架构升级改造,需要目标明确,达到控制和逻辑分离,子系统之间解耦;可衡量,各个系统上线之后是否会相互影响;可达成,分离和解耦的目标是一定可以实现的;相关,比如跟其他系统的边界交互处要考虑的因素都有哪些;有时限,目标不能无休止进行下去,一定要有一个清晰的完成日期。
摘抄自《架构修炼之道》