丝瓜小说网

手机浏览器扫描二维码访问

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

不能因为“Linus也写bug”

甚至“Linus也写过低级bug”

,就认为“我写个一百个整数里找最大值的简单程序出三十个bug也是正常的”

——初学者搞出这事,正常。

至于专业人员嘛……出一个都不正常。

不仅如此。

既然“写长篇出bug正常,发条短信就那么十几个字,错一个都不应该”

;那么我们把长篇拆开成若干章,一章只写三千字呢?再把一章拆开成若干段,一段只写数百个字呢?

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

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

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

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

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

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

做到了“低耦合”

,你就可以把一个复杂的大程序当一组简单的短文甚至短信写。

这样自然就很难出错了。

当然了,有些情况下,程序逻辑非常复杂且无法拆分,也就是所谓“无法约分的复杂性”

,这种代码就必须端起十二分小心来,当然即便如此,bug出现率仍然要远高于其他代码。

一般来说,要把程序拆成“不可约分”

的一组最小单元来写。

这个“不可约分”

就是术语说的“高内聚”

:这段程序只做一件事,这件事已经没法拆的更简单了,只能把它们放在同一段代码里一举解决掉。

因此,写程序时,事先的“谋划”

非常重要。

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

显然,“谋划”

好了,一个程序的难度降低若干个数量级都是可能的。

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

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

的产品。

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

当然你们的意见我也考虑一下。

read3();看小说,630book.cc

热门小说推荐
复仇甜妻:总裁的专属女王

复仇甜妻:总裁的专属女王

谁说女王就得霸气就得无所不能?在工作上独当一面的她很头疼自己的私人问题。男友背叛,父亲逼迫,竟铁了心要做主她的婚事。本欲逃婚,最后却意外被他扔上了床。英俊的脸上勾出邪魅冰冷的笑没想到你还是落在了我的手里,这次可不会像上次一样放过你!高大的身躯压下来,瞬间让她手足无措不是,你不要不要什么?他按住她挣扎的双手,父债子偿,这是你父亲欠我的!...

大道问仙

大道问仙

仙人仙人,先是人,才是仙,凡俗第一杀手天杀,因一颗不甘之心悍然踏入仙道,所自信即便只是一小小散修,也必将能搅动这天下风云,登临仙道最绝巅!nbspnbsp...

拔山

拔山

这一次的邂逅,是意外还是命运注定的交汇?神秘珠子的传承,星坠异象震惊天玄大陆,一步步蜕变,一步步变强,文弱的少年终将成长为一代巨枭,纵横天玄,笑傲八荒!...

农女巧当家

农女巧当家

农女巧当家由作者舒薪创作全本作品该小说情节跌宕起伏扣人心弦是一本难得的情节与文笔俱佳的好书919言情小说免费提供农女巧当家全文无弹窗的纯文字在线阅读。...

倾世宠妻

倾世宠妻

倾世宠妻由作者寒武记创作全本作品该小说情节跌宕起伏扣人心弦是一本难得的情节与文笔俱佳的好书919言情小说免费提供倾世宠妻全文无弹窗的纯文字在线阅读。...

工业民科

工业民科

1977年,林强生又站在了最初的地方。寻找,那最初的梦想。看,天上有一只银龙在飞!(出自骑在银龙的背上)\▽/(求推荐票!求点击,求收藏!求订阅!多谢各位仁兄打赏!谢谢!)(推荐订阅啊,大侠们!看得好的,赏那么一个两个,在下感激不尽啊!)(不好意思在书里夹话,就在这里求了!鞠躬感谢各位观看!)...

每日热搜小说推荐