这个吞金兽不好养
超小超大

第四十二章 修复bug (2-2)

既然“写长篇出bug正常,发条短信就那么十几个字,错一个都不应该”;那么我们把长篇拆开成若干章,一章只写三千字呢?再把一章拆开成若干段,一段只写数百个字呢?

这就是为何写程序要先做模块设计、然后再把模块按职责拆分成类、类按功能拆分成函数、最后还要求一个函数不要超过一屏(大约80行)的原因了。

经过拆分之后,一个一个函数填写实现、然后再一个一个函数做单元测试,测完再组合起来搞功能测试、集成测试……

这样写程序,当然还是无法杜绝bug出现;但出bug的机率就微乎其微了。

而且程序和长篇小说不同。

小说里的角色,尤其是主角和主要配角往往是贯穿始终的,这就使得小说章与章之间存在很多内部联系;稍微搞不好就会导致前后失去呼应,比如主角一会儿伤在左手一会儿伤在右臂、或者前面挖个坑然后设个伏笔后面却忘了用,等等。

但是在程序里面,不同模块甚至不同函数之间,应该是毫无瓜葛的,每一个都可以摘出来独立成库——有瓜葛就说明用了全局变量或者静态对象,或者通过参数或者约定等传递了过多的东西——这就叫“低耦合”。

做到了“低耦合”,你就可以把一个复杂的大程序当一组简单的短文甚至短信写。

这样自然就很难出错了。

当然了,有些情况下,程序逻辑非常复杂且无法拆分,也就是所谓“无法约分的复杂性”,这种代码就必须端起十二分小心来,当然即便如此,bug出现率仍然要远高于其他代码。

一般来说,要把程序拆成“不可约分”的一组最小单元来写。

这个“不可约分”就是术语说的“高内聚”:这段程序只做一件事,这件事已经没法拆的更简单了,只能把它们放在同一段代码里一举解决掉。

因此,写程序时,事先的“谋划”非常重要。

一个有经验的资深工程师,可以在动手前就把一个复杂的大项目拆成一堆几乎互不关联的小程序,然后逐一实现它们、实现完再把它们组合起来就行了。

显然,“谋划”好了,一个程序的难度降低若干个数量级都是可能的。

说实话,在绝大部分能见到的软件中,都是或多或少的有bug的……

只不过,第一开发可能没想到,第二测试没测到,第三用户没碰到,第四客服的反馈没收到,那么——这就是一个“成熟稳健”的产品。

PS:留个言,你们是不是不喜欢看代码相关的或者看不懂这些……说出来我以后少写点,毕竟前期还是需要程序员的技术去赚钱的。当然你们的意见我也考虑一下。

这个吞金兽不好养提示您:看后求收藏(百发小说网http://www.baifabohui.com),接着再看更方便。

相关小说

我在魔教惩恶扬善 连载中
我在魔教惩恶扬善
万剑长空
作为正道魁首门派,苍明宗弟子,李慕临危受命,要前往魔教完成一个特殊......任务。
8.2万字4个月前
被人类捡到的我开始投身乡村建设 连载中
被人类捡到的我开始投身乡村建设
drifcat
面对被救助的狐妖,人类提出的条件是……给我去乡村振兴,三回啊三回!
15.5万字4个月前
大道韶华 连载中
大道韶华
雾外江山
小熊弟,你太年轻了,你以为这天下十大高手都是谁?其实都是我!暗夜魔主,仙秦秦皇,太上道主,诡一终极,真光至圣,一气乾坤,大焚真我,元水恒古,青帝长生!他们真的都是我!桀桀桀!
119.3万字4个月前
懂个茅山 连载中
懂个茅山
春堂里的野人
几多民间杂谈,都是扯水谈白酒后事。
12.6万字4个月前
夜游记 连载中
夜游记
谭氏渡情
632.9万字4个月前
人在漫威:开局一个光之国! 连载中
人在漫威:开局一个光之国!
变成了光
[[【飞卢小说网独家签约小说:人在漫威:开局一个光之国!】穿越漫威,苏洛开局召唤光之国。面对要进行宇宙生命重构的灭霸,十万光之国战士奥特曼出现了。而在这十万光之国奥特曼身后,更是有着原初之光诺亚等能与**神明和OAA分庭抗礼的神秘四奥!“听说,你想杀了宇宙一半的人?”苏洛微微一笑,而后无尽的光芒遍布宇宙!“生命,是属于光的,生命,由光来守护!”这一天,无尽多元宇宙开始匍匐在光之国的脚下!飞卢小说
11.1万字4个月前