这个吞金兽不好养

花花小君

首页 >> 这个吞金兽不好养 >> 这个吞金兽不好养最新章节(目录)
大家在看 败家系统在花都 战地摄影师手札 超品战兵 天火大道 脑海带着一扇门 超级军工帝国 重生之神级败家子 重生之繁花似水 吹神 官道无疆 
这个吞金兽不好养 花花小君 - 这个吞金兽不好养全文阅读 - 这个吞金兽不好养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.goafoto.com)这个吞金兽不好养晋江免费小说更新速度全网最快。

上一章 目 录 下一章 存书签
站内强推 败家系统在花都 拜见教主大人 双世宠妃原著:爷我等你休妻 全职法师 超品战兵 张三丰异界游 萌宠甜心:恶魔少爷深深吻 易鼎 脑海带着一扇门 至尊鸿途 灵气复苏,我从种田开始修仙 武道大诸天 超级基因优化液 富贵荣华 重生之先声夺人 四合院之饮食男女 从影视世界学习技能 霸武 超级小医生 我的女友有别于人 
经典收藏 都市修仙之青帝归来 史上第一混乱 我在女子监狱当管教 我在九十年代 从写吞噬星空开始成神 跨越十二年的对话 重启复兴之门 我与女总裁的日常生活 金手指拍卖会 无奈爆富 美利坚之山林称王 至尊兵王 极品修真强少 神豪的娱乐生活 都市之仙尊归来 超神建筑商 爱情就在公寓里 王者 重生之资源大亨 墓后之主 
最近更新 败家系统在花都 战地摄影师手札 超品战兵 重生1977年从知青开始 天火大道 陈二狗的妖孽人生 悠闲乡村直播间 大艺术家 脑海带着一扇门 超级军工帝国 重生之神级败家子 重生之繁花似水 吹神 超级小医生 重生之先声夺人 官道无疆 深空彼岸 新世界的羊 重生从世界杯前开始 韩警官 
这个吞金兽不好养 花花小君 - 这个吞金兽不好养txt下载 - 这个吞金兽不好养最新章节 - 这个吞金兽不好养全文阅读 - 好看的都市生活小说