这个吞金兽不好养

花花小君

首页 >> 这个吞金兽不好养 >> 这个吞金兽不好养最新章节(目录)
大家在看 掌权者 校园花心高手 近身兵王 校花的全能保安 捡个杀手做老婆 仙门走出的男人 寻宝全世界 攀上漂亮女院长 都市全能高手 超品相师 
这个吞金兽不好养 花花小君 - 这个吞金兽不好养全文阅读 - 这个吞金兽不好养txt下载 - 这个吞金兽不好养最新章节 - 好看的都市生活小说

第42章 修复bug

上一章 目 录 下一章 阅读记录

晚上。

已经和王晓雪收拾好了明天需要带回家的东西之后,叶新晨就打开了曹庆阳发给他的东西。

趁着现在时间还足,所以叶新晨也是准备直接花费一点时间帮曹庆阳给搞定。

打开文件,叶新晨看着这个代码,陷入了沉思,他陷入沉思的原因不是因为这个修复漏洞很难,相反,很简单,叶新晨半个多小时就给他修复好了。

他感觉到的只是修改BUG和找BUG那真的是两个情况。

不过有些人也肯定很疑惑,程出现BUG是必然出现的情况还是程序员水平有限导致的?

这个嘛……仁者见仁,智者见智。

就比如这个——

print(“hello, world.“)

你看,这个“程序”就是没有BUG漏洞的……

实际上但凡有过一点正式开发经验的程序员,写个简单的hello world都能写出BUG的恐怕不多见吧。

别说hello world了,一个简单的、不涉及“隐秘”机制的百行小程序,绝大多数资深程序员也可以直接写成0 bug。

因为这些实际上是对计算机的原理深度决定的,比如你对计算原理或者语言机制理解越深,对你来说“隐秘”的东西就越少,写出高质量代码的机率就越高。

而且,就像黑土平台里面的交流板块哪怕只是在上敲一篇一千个字的灌水文,有几个可以保证无语法错误、无错别字且标点符号使用正确呢?

尤其这还是在机器替你写字,使得“提笔忘字”“书写错误”之类错误无法存在的前提下:这样你都不能保证全对……

那么不仅大小写敏感、而且逻辑更为曲折复杂、容不得半点含糊的计算机程序呢?

因此,有BUG漏洞那真的是无可避免。

当然还有一种情况,你的程序本身是无bug的;但支持环境比较坑……

这种正常来说不算程序bug,当然实践中,你可能没办法坐等OS或者浏览器等厂商修改——所以结果就是你只好积极行动起来,在自己的程序里为别人的错误擦屁股……

这在业界被称为workaround: Workaround - Wikipedia。

正常来说,workaround是临时的,并且,如果不是诸如0day之类特别关键、刻不容缓的问题,搞workaround往往是出力不讨好的——因为它包含了丑陋,易错,含糊,难以理解;而且等OS或者浏览器等的原始厂商修了它自己的bug,你原本好好运行的workaround往往反而会引起问题。

尤其是,有时候OS或者浏览器厂商修复速度比较慢、致使某种workaround反倒成为“主流技术”;那么当“正统”修复方案和workaround冲突时,OS或者浏览器厂商往往不得不将错就错,以免捣毁那些用了workaround的实现……

这类复杂情况暂不讨论,提它主要是为了说明,搞清楚bug的真正发生点是极为重要的。

修不到bug的根源、滥用workaround,度过的是眼前的难关,牺牲的却是整个项目的稳固性。

类似的,尽量把程序写的“大众化”一点,没有必要不碰新特性,也可以在很大程度上避免“遭遇官方bug”问题——如果你自己理解上再有点偏差,用新特性就和作死无异了。

不过……

有的人敲字灌水都错字连篇,但是有人手写几十上百万字的小说,随便截一段都差不多能进语文课本……

所以,人与人还是有极大差别的。

不能因为“Linus也写bug”甚至“Linus也写过低级bug”,就认为“我写个一百个整数里找最大值的简单程序出三十个bug也是正常的”——初学者搞出这事,正常。

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

不仅如此。

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

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

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

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

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

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

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

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

这样自然就很难出错了。

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

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

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

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

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

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

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

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

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

喜欢这个吞金兽不好养请大家收藏:(m.17sct.com)这个吞金兽不好养一起上词条更新速度全网最快。

上一章 目 录 下一章 存书签
站内强推 知北游 裁决 掌权者 巡阴人 大明官 沉香豌 重生药王 刑徒 穿越后,我和夫君一起重生了 满唐华彩 诸天从拯救大明开始 锦绣农女种田忙 悬案组 剑王朝 狼与兄弟 永恒之心 重归黄金年代 极品富二代 陆少的暖婚新妻 豪门隐婚:腹黑总裁专宠妻 
经典收藏 生于1984 翩翩女儿身 无限刷钱系统 校花的全能保安 天才邪医 别样仕途:靠近女领导 大鉴定师 我爷爷是迪拜首富 妙手天师 成为作者后的我无敌了 四合院:随身带着农场去重生 开局呼风唤雨引来求仙者 我在精神病院斩神除魔 回档2001之后 变成血族是什么体验 我的极品女老师 彼岸岛彼岸 医道花途 文娱从写网文开始 无限能力的我,选择创业! 
最近更新 掌权者 校园花心高手 近身兵王 最强战兵 校花的全能保安 都市修真医圣 我的贴身校花 我的绝色总裁未婚妻 捡个杀手做老婆 仙门走出的男人 寻宝全世界 攀上漂亮女院长 都市全能高手 一路青云 宝鉴 超品相师 重生之神级败家子 总裁校花赖上我 重生之完美未来 神藏 
这个吞金兽不好养 花花小君 - 这个吞金兽不好养txt下载 - 这个吞金兽不好养最新章节 - 这个吞金兽不好养全文阅读 - 好看的都市生活小说