手机浏览器扫描二维码访问
不仅如此。
既然“写长篇出bug正常,发条短信就那么十几个字,错一个都不应该”
;那么我们把长篇拆开成若干章,一章只写三千字呢?再把一章拆开成若干段,一段只写数百个字呢?
这就是为何写程序要先做模块设计、然后再把模块按职责拆分成类、类按功能拆分成函数、最后还要求一个函数不要超过一屏(大约80行)的原因了。
经过拆分之后,一个一个函数填写实现、然后再一个一个函数做单元测试,测完再组合起来搞功能测试、集成测试……
这样写程序,当然还是无法杜绝bug出现;但出bug的机率就微乎其微了。
而且程序和长篇小说不同。
小说里的角色,尤其是主角和主要配角往往是贯穿始终的,这就使得小说章与章之间存在很多内部联系;稍微搞不好就会导致前后失去呼应,比如主角一会儿伤在左手一会儿伤在右臂、或者前面挖个坑然后设个伏笔后面却忘了用,等等。
但是在程序里面,不同模块甚至不同函数之间,应该是毫无瓜葛的,每一个都可以摘出来独立成库——有瓜葛就说明用了全局变量或者静态对象,或者通过参数或者约定等传递了过多的东西——这就叫“低耦合”
。
做到了“低耦合”
,你就可以把一个复杂的大程序当一组简单的短文甚至短信写。
这样自然就很难出错了。
当然了,有些情况下,程序逻辑非常复杂且无法拆分,也就是所谓“无法约分的复杂性”
,这种代码就必须端起十二分小心来,当然即便如此,bug出现率仍然要远高于其他代码。
一般来说,要把程序拆成“不可约分”
的一组最小单元来写。
这个“不可约分”
就是术语说的“高内聚”
:这段程序只做一件事,这件事已经没法拆的更简单了,只能把它们放在同一段代码里一举解决掉。
因此,写程序时,事先的“谋划”
非常重要。
一个有经验的资深工程师,可以在动手前就把一个复杂的大项目拆成一堆几乎互不关联的小程序,然后逐一实现它们、实现完再把它们组合起来就行了。
显然,“谋划”
好了,一个程序的难度降低若干个数量级都是可能的。
说实话,在绝大部分能见到的软件中,都是或多或少的有bug的……
只不过,第一开发可能没想到,第二测试没测到,第三用户没碰到,第四客服的反馈没收到,那么——这就是一个“成熟稳健”
的产品。
快穿1v1,男主同一人近来,妖族兴起什么反派逆袭系统,委派任务者去攻略或者伤害男主。神族对此不能坐视不理,特派神女颜若保护我方男主。颜若男主是最特别的,我知道这个人一定是男主!镜妖不,这是反派boss呐颜若这个妖族攻略者在攻略他,他一定是男主!镜妖不,这个攻略者攻略错人了,这个还是反...
...
厉莫庭这个男人,卖相好,智商高,品位挑,是个女人都想拥有他。白浅花了三年的时间去搞定他,结果只到边沿,还没施展各种手段,就被踢了出来滚开,我对一堆五花肉没兴趣!好吧,高攀不了,他不喜欢她,总还有人喜欢的。结果她一转身,怎么就被强了根据最佳生育原则,只有我这样的男人跟你生出来的孩子,才能挽救你那可怜的智商小说关键词暖婚蜜爱厉少太傲娇无弹窗暖婚蜜爱厉少太傲娇txt全集下载暖婚蜜爱厉少太傲娇最新章节阅读...
一场死亡游戏,她成为神秘帝少不可碰触的逆鳞。借尸还魂,她只想借他暂避风雨,他却步步紧逼,云二小姐,本少不够帅么?她声音飘忽,楚少是我见过的最帅的男人。那云二小姐还进入不了状态?他笑的邪魅,将她笼罩在暗影之下,陪本少睡,你要什么本少都可以满足你一夜荒唐,她累成一滩烂泥,他妖孽而笑,记得锻炼身体,昨夜表现太差!从此,他帮她报仇雪恨步步繁华她帮他暖床陪睡生猴子!腹黑帝少VS重生蛇蝎女,掀开那一层薄纱,才发现深情相许已十年!...
因为被一块镜子划破手指,简星道拥有了一项异能虚拟摄取。饿了,打开电脑搜索美食照片,手穿过屏幕,直接从里面端出来一份和照片上一样的美食。渴了,拿出手机搜索冰镇饮料图片,手穿过屏幕,直接拿出一瓶冒着冷气的冰镇饮料。随着异能的提升,越来越多的东西开始可以摄取,小动物,贵金属,玉石,古董名画,神话中的人物,甚至还透过巨幅海报将老美缩小版的最新战机,航母拉到现实然而,简星道最大的心愿还是想通过这项异能,让车祸中死去的父母回归现实...
表嫂把我骗入传销,却遇到了高中时代的班花,没想到多年不见,班花竟然...