手机浏览器扫描二维码访问
不过……
有的人敲字灌水都错字连篇,但是有人手写几十上百万字的小说,随便截一段都差不多能进语文课本……
所以,人与人还是有极大差别的。
不能因为“Linus也写bug”甚至“Linus也写过低级bug”,就认为“我写个一百个整数里找最大值的简单程序出三十个bug也是正常的”——初学者搞出这事,正常。
至于专业人员嘛……出一个都不正常。
不仅如此。
既然“写长篇出bug正常,发条短信就那么十几个字,错一个都不应该”;那么我们把长篇拆开成若干章,一章只写三千字呢?再把一章拆开成若干段,一段只写数百个字呢?
这就是为何写程序要先做模块设计、然后再把模块按职责拆分成类、类按功能拆分成函数、最后还要求一个函数不要超过一屏(大约80行)的原因了。
经过拆分之后,一个一个函数填写实现、然后再一个一个函数做单元测试,测完再组合起来搞功能测试、集成测试……
这样写程序,当然还是无法杜绝bug出现;但出bug的机率就微乎其微了。
而且程序和长篇小说不同。
小说里的角色,尤其是主角和主要配角往往是贯穿始终的,这就使得小说章与章之间存在很多内部联系;稍微搞不好就会导致前后失去呼应,比如主角一会儿伤在左手一会儿伤在右臂、或者前面挖个坑然后设个伏笔后面却忘了用,等等。
但是在程序里面,不同模块甚至不同函数之间,应该是毫无瓜葛的,每一个都可以摘出来独立成库——有瓜葛就说明用了全局变量或者静态对象,或者通过参数或者约定等传递了过多的东西——这就叫“低耦合”。
做到了“低耦合”,你就可以把一个复杂的大程序当一组简单的短文甚至短信写。
这样自然就很难出错了。
当然了,有些情况下,程序逻辑非常复杂且无法拆分,也就是所谓“无法约分的复杂性”,这种代码就必须端起十二分小心来,当然即便如此,bug出现率仍然要远高于其他代码。
一般来说,要把程序拆成“不可约分”的一组最小单元来写。
这个“不可约分”就是术语说的“高内聚”:这段程序只做一件事,这件事已经没法拆的更简单了,只能把它们放在同一段代码里一举解决掉。
因此,写程序时,事先的“谋划”非常重要。
一个有经验的资深工程师,可以在动手前就把一个复杂的大项目拆成一堆几乎互不关联的小程序,然后逐一实现它们、实现完再把它们组合起来就行了。
显然,“谋划”好了,一个程序的难度降低若干个数量级都是可能的。
说实话,在绝大部分能见到的软件中,都是或多或少的有bug的……
只不过,第一开发可能没想到,第二测试没测到,第三用户没碰到,第四客服的反馈没收到,那么——这就是一个“成熟稳健”的产品。
PS:留个言,你们是不是不喜欢看代码相关的或者看不懂这些……说出来我以后少写点,毕竟前期还是需要程序员的技术去赚钱的。当然你们的意见我也考虑一下。
问剑征仙 万界卡牌亡灵法师 大魏督主 爹地给力妈咪又怀了 大乘期才有逆袭系统 东方梦工厂 大秦:开局指点秦始皇 洪荒:开局梦中证道,睡觉就变强 云烟神帝 等我无敌后(我的修真和飞鸽传书日常) 挑战者游戏 震惊!我修仙秘密被孙女直播曝光 重生之暖男的自我修养 携美女闯三国 身为牧师,带把锤子不过分吧? 非著名影帝 十年一晌,可见君否 傅总夫人又闹离婚了 火影之忍界闪光 重生从手术室开始
他闯她的门,上她的床,吃她的人,总是理所当然!她以为她救的是一只羊,不料,那是头披着羊皮的狼!第一次,他地咚了她!第二次,他一言不合,将她压上了床!第三次,一个小馒头跟在她身后甜甜的叫着妈咪,他夜黑风高月,作案好时机,没有门,跳窗进,将熟睡的她压住不能动弹,阴狠地问,告诉我,那个野种到底是谁的?她惊醒,妩媚一笑,既是野种,那就肯定不是你的种!他恨得咬咬牙,勾起邪魅的笑,摸摸她的脸,...
他,来自未来,利用自己的知识创造了无穷的财富 他,是宇宙最高文明的继承人,利用强大的科技帮助自己的国家崛起,并且建立了自己的国度 他,一生桃花运不断,利用自己独特的魅力征服了各种各样无穷的美女 金钱,美女,权利,他一样不缺...
so,这只是一本简单的恋爱向轻喜剧奇幻小说啦有着未来最强魔法师之称的少年在小镇邂逅了一只迷迷糊糊的勇者少女,属于他们的青春恋爱物语在这一刻拉开了序幕本书男女老少皆宜,看腻了各种套路,就来这里换换口味吧热乎乎新鲜出炉的QQ群194329315(请务必自动忽略群名)...
一刀穷一刀富,刀下是让人贪念大作的帝王种翡翠,更是尔虞我诈的翡翠江湖,而我将带你真正了解翡翠下的江湖。作品亮点特殊职业文,贴紧现实代入感强烈,各种角色设定剧情设定容易引起读者的情感共鸣。...
一代魔尊重生回到都市,弥补遗憾,扮猪吃老虎。这一世陈宇要让所有的敌人都颤栗的跪倒在自己的脚下!这一世陈宇要让所有曾经看不起自己的人刮目相看!这一世陈宇要让所有最极品的女人都为自己拜倒!...
三年后温迟带着两岁半的萌宝归来,与孩子的亲爹苏烨重逢,苏烨是个炒鸡女儿控,两人开启女儿宠爱争夺战的同时,温迟脚踩后母,打脸绿茶妹妹。情节虚构,请勿模仿...