手机浏览器扫描二维码访问
不能因为“Linus也写bug”
甚至“Linus也写过低级bug”
,就认为“我写个一百个整数里找最大值的简单程序出三十个bug也是正常的”
——初学者搞出这事,正常。
至于专业人员嘛……出一个都不正常。
不仅如此。
既然“写长篇出bug正常,发条短信就那么十几个字,错一个都不应该”
;那么我们把长篇拆开成若干章,一章只写三千字呢?再把一章拆开成若干段,一段只写数百个字呢?
这就是为何写程序要先做模块设计、然后再把模块按职责拆分成类、类按功能拆分成函数、最后还要求一个函数不要超过一屏(大约80行)的原因了。
经过拆分之后,一个一个函数填写实现、然后再一个一个函数做单元测试,测完再组合起来搞功能测试、集成测试……
这样写程序,当然还是无法杜绝bug出现;但出bug的机率就微乎其微了。
而且程序和长篇小说不同。
小说里的角色,尤其是主角和主要配角往往是贯穿始终的,这就使得小说章与章之间存在很多内部联系;稍微搞不好就会导致前后失去呼应,比如主角一会儿伤在左手一会儿伤在右臂、或者前面挖个坑然后设个伏笔后面却忘了用,等等。
但是在程序里面,不同模块甚至不同函数之间,应该是毫无瓜葛的,每一个都可以摘出来独立成库——有瓜葛就说明用了全局变量或者静态对象,或者通过参数或者约定等传递了过多的东西——这就叫“低耦合”
。
做到了“低耦合”
,你就可以把一个复杂的大程序当一组简单的短文甚至短信写。
这样自然就很难出错了。
当然了,有些情况下,程序逻辑非常复杂且无法拆分,也就是所谓“无法约分的复杂性”
,这种代码就必须端起十二分小心来,当然即便如此,bug出现率仍然要远高于其他代码。
一般来说,要把程序拆成“不可约分”
的一组最小单元来写。
这个“不可约分”
就是术语说的“高内聚”
:这段程序只做一件事,这件事已经没法拆的更简单了,只能把它们放在同一段代码里一举解决掉。
因此,写程序时,事先的“谋划”
非常重要。
一个有经验的资深工程师,可以在动手前就把一个复杂的大项目拆成一堆几乎互不关联的小程序,然后逐一实现它们、实现完再把它们组合起来就行了。
显然,“谋划”
好了,一个程序的难度降低若干个数量级都是可能的。
说实话,在绝大部分能见到的软件中,都是或多或少的有bug的……
只不过,第一开发可能没想到,第二测试没测到,第三用户没碰到,第四客服的反馈没收到,那么——这就是一个“成熟稳健”
的产品。
PS:留个言,你们是不是不喜欢看代码相关的或者看不懂这些……说出来我以后少写点,毕竟前期还是需要程序员的技术去赚钱的。
当然你们的意见我也考虑一下。
read3();看小说,630book
请关闭浏览器阅读模式后查看本章节,否则将出现无法翻页或章节内容丢失等现象。
帝国大嫁军爷养妻成宝由作者秋如意创作全本作品该小说情节跌宕起伏扣人心弦是一本难得的情节与文笔俱佳的好书919言情小说免费提供帝国大嫁军爷养妻成宝全文无弹窗的纯文字在线阅读。...
在一个骑刃王世界,不同于原着,这是每人都拥有骑刃王的世界,年满岁便可召唤骑刃王。在国外,一座岛屿上,一辆通体黑色的骑刃王在正中央,四周满是骑刃王。然而…在这么危险的时刻,那辆黑色调骑刃王里的车手却不慌张。噬魂破!...
在不同世界里体现不同的人生,你希望下一个是那个世界?我的世界我做主,猪脚神马的无视掉。我想我不会特意去黑任何一个主角,他们既然作为主角,就会有他们的闪光点,不然也不会被别人接受,我只是想如果那些配角放弃他们的执着,是不是会有另一番天地?我的qq2327915471欢迎加我。公告今天收到通知,将在星期一(2013527)入v,到时会三更,希望大家多多支持!谢谢!...
凡人一枚,万界独尊,何也?主人公说我这间祖屋虽然破旧不堪,但却非常受欢迎啊。神魔妖仙鬼怪皇帝大侠凡人什么的每天都会来我这儿开会,没事儿收点场租费什么的吧。什么?没有钱?那武功秘籍有没有?丹药古董有没有?暖床丫鬟有没有?...
即将高考的学渣赵勇意外获得了邪恶透视系统,原本高度近视的他变得视力超群,不仅可以透视,还可以通过眼神直达别人的心灵,读懂人心!他从一个学渣靠着透视能力作弊成为了学霸,考进了著名的大学,并且逐渐走向了人生巅峰...
附本作品来自互联网本人不做任何负责内容版权归作者所有11第1章邵芊芊每天饭前必须要做的一件事,就是双手合十许愿自己的顶头上司郁希薇明天忙得不可开交没有空搭理自己。这个年龄上奔三心灵上永远十八的女人简直堪比一千只麻雀五百个巫婆,不,是一万只麻雀五千个巫婆,每次都要用一大堆的事情来蹂躏邵芊芊单薄的...