大多数开发者认为“老项目和人有一个能跑就行”,不愿意对其做较大的改动。所以有个名词叫祖传代码。我猜几乎每家公司都会遇到这种情况吧。
原因太多了,以下都是我结合各行各业吐槽列出(但不限于)
1.需求乱提:不合理的需求未万恶之源,可能这个需求会导致特别复杂。12306的业务场景堪称变态,造成这种是我国地域发展不均衡的,实在也改不了。但是也有不少公司的需求不亚于12306的复杂度,那就不应该了。按照这种需求写的代码,想很清晰是不太可能了。
2.设计乱来:其实就是没设计。今天建立个表,明天加个字段。表是什么含义不知道预留了,tab001 002.字段也是预留字段1,预留字段2.。。。。。。你会发现一个有趣的现象就是几乎从来没人用预留字段。因为不敢用。不知道自己会不会影响别人。所以预留了个寂寞。
3.开发乱写:比如一个表50个字段。如果是核心表,我会设计提供最小化原则,只提供几个关键的,其他的来一个定制的,按需提供。确保最频繁的操作一定最轻量化。但是现实中,我看到的一般都是最大化提供。提供出去一个全部的作为公共。即使其他场景用一个,也要取全部。更有甚者全部取到页面上,然后是仅仅不显示。这种消耗和传输都实实在在发生了。
4.运维不力:管控不了开发,然后扩展到架构层面引入中间件和异构数据库。这本身有增加了开发难度和成本,给祖传代码继续加码。
今年不是有文章说有云了,还要不要DBA。其实就以上几个场景来说,1 2公有云是一点都解决不了,要DBA去解决。3 4 公有云最希望你发生,用的越多成本越高。DBA是可以去解决的。当然这里的DBA已经到了最高的Architect的程度了。至于私有云就是1234几乎都管不了。
一般来说CTO都不希望出故障,如果出了故障要先发现以及快速解决。在123的前提下,做到这点非常难。我个人愚见还是管好123,才能最大程度防患于未然。