从Clean Code一书,对系统维运成本的看法

Clean Code

先前在网络看到很多人在推荐与分享 Clean Code 这本书,当时,并无很强烈动机想要看这本书。先入为主的觉得这又只是一本介绍程序 Design Patten 的书罢了。实际上到书店翻开这本书之后,尤其在前面几页中看到下面这一张图。心中Wow一声,心想这本书一针见血的刺进我的痛。

这本书介绍非常多程序开发者因该注意的程序撰写概念跟守则,这里就不一一介绍,有兴趣的人建议可以买来看看。不过个人觉得此书有些章节中,阅读者若是没有两三年的实务程序开发经验或是维护许多大型系统的经历,可能无法感同身受或是认同书中的一些作法及想法。

Clean Code对于维运成本有甚么关系呢?个人认为有良好的Clean Code概念,不仅可以降低团队的开发成本,也可以让系统维运成本也跟着降地。系统维运项目大致有下面几点:

系统数据维护

Bug修正

功能规格的修正或是修改

开发新功能与新需求

维运成本考虑就只有下面三项:

时间

人力

风险

个人认为最耗成本的维运项目是第二项到第四项。一般而言企业内部的IT要真正只需维护自己所开发的系统的情况并不多,绝大多数的人都必须去承接前人所留下或是外部导入的系统。由此可知,当新团队或是新人承接后,不仅是对原本系统架构及ProcessKnowhow不熟外,可能连代码在写甚么都看不懂也大有人在。故经常发生 好的代码带你上天堂,坏的程序码会让你生不如死 的戏码。因此,当系统的代码是很杂乱时,所付出的代价就是,若系统要进行Trouble shooing时,问题被解决的时间就会被拉长,且若是用户有新新需求或是功能变更时,程序的开发时程将会被拉长,纵使只是加一个小功能,所花费的的时程会比之前系统创建的时间还长。尤其当这系统架构随时间越来越大或是错综复杂时,所花费的修改或是添加功能的成本也随之越大。最可怕的是,当新团队接手后,完全无法针对该系统进行修改或是维护时,势必需要重新创建一套新系统时候,这是不仅是成本的消耗,同时,还必须承担新旧系统交换上下线、新系统须包含旧系统功能、新系统时程…等风险,当然,风险与时间是成反比的。

当一个团队在开发系统时,若只在乎"完成"系统功能而不考虑架构及代码规范,进而产出杂乱的代码,在短期内或许可以满足需求,看似用很少的成本,发挥极大的效益。但是,就系统营运的时间拉长,,实际上后续的维运却是必须再花费更多成本支出,才能满足其维运需求。


从上图可知,若是该系统的代码越杂乱(只求速度与代码产能的后果),此系统后续的各项功能开发或是变更,所完成的时间是越来越长,因为,程序产能是越来越低了。然而,主管为了解决这现象,往往就会出现人月神话的场景。但是,往往只能治标无法治本。

程序产能码 / 人力 = 时间

就一般程序员而言,在程序开发约三个月后,大概就会忘记之前程序为什么要这样写。可想而知,一开始就把的代码变得很杂乱,不易阅读。在三个月后有新需求或是用户功能变更的时候,团队又需要花大量的时间成本重新Review Code,造成往往只需要花几个小时就可以完成的功能,却必须痛苦的好几天或是好几周才有办法完成。若是又有遇到时间压力,最后不是系统品质下降,就是另一个杂乱的代码诞生。在这本书中提到「我们抱怨需求一变再变,违背原本的设计,我们感叹开发进度过于紧凑,导致无法把事情做好。我们滔滔不绝将原因归咎于愚蠢的主管,偏执的客户,无用的市场型态,但是错并不在这些事物上,而是在我们本身,我们不够专业」,这句话我认为说得很好,因为,无论是PM或是用户都是针对他们需负责的工作而做事,相对的开发者或IT人员该负责的工作就是在交付功能之余,也须保护代码不要过于混乱。而若是要达到所谓 Clean Code 那样不是要花费更大的成本? 我认为不然,就以可靠度工程中的浴缸曲线理论来思考。当一个系统开发期间,花费较高的成本,其实是在初期的系统分析与架构设计,中间的程序开发成本相对是低的,而若是因为初期的架构有问题或是中间开发代码是不易维护,则会影响到后面的维运或是需求增加,进而将会造成维运成本的垫高,而越后面的修正是会花费比初期更高的成本才有办法完成任务。


最后,软件工程常常会提到开发需要有许多文档或是单元测试及一堆测试后才可以上线,基本上这是无误的,不过,就以制造业的IT开发者来说,往往时程与需求都被压的喘不过气,若是有分析文档与说明手册,就已经很不错,要做到测试部分,如果可以在上线进行压力测试及集成测试就很棒了。要进行单元测试实在不可能,且也不一定公司会有这样测试单位,因此,常常开发者就是测试者,结果就是甚么都没有。上线的系统不可能完全都没有任何Bug或是一个完美的系统,甚至不修改功能的系统,我觉得在制造业这是不太可能发生,但是,至少保持良好的代码或是可读性高的代码,对于后续的维运是有帮助,至少出问题时候,还可以快速找到问题所在,而不是像侦探一样大海捞针去找线索,系统需要Enhance时,开发时程也会较快许多。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容