豫川书院 通过搜索各大小说站为您自动抓取各类小说的最快更新供您阅读!

晚上。

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

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

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

他感觉到的只是修改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:留个言,你们是不是不喜欢看代码相关的或者看不懂这些……说出来我以后少写点,毕竟前期还是需要程序员的技术去赚钱的。当然你们的意见我也考虑一下。

喜欢这个吞金兽不好养请大家收藏:(www.yuchuanshuyuan.com)这个吞金兽不好养豫川书院更新速度全网最快。

豫川书院推荐阅读: 豪门战神我的系统是正义都市之腾龙战神开局奖励一座国际投资银行奇迹在半岛开局成为学术泰斗开局签到十个首富姐姐都市最强保镖开局唱歌奖励千亿集团奔腾年代——向南向北渔村小仙医开局表白校花:获得千亿豪宅五千年第一长生赘婿铁血龙婿超级大神豪都市神医行三界红包群龙王奶爸神豪:开局购买力增幅百倍开局签到豪宅缥缈成神路我的漂流瓶逆天了最强龙魂仙婿都市之我是世界首富黄泉战神直播成虎王美女总裁爱上小保安:绝世高手超神外卖:开局签到千亿公司大小姐的全能护卫我的1978小农庄神豪:预知未来,开局就中八千亿结发妻子的谎言最强医圣我偷吃了秦始皇的仙丹猎美高手神豪正在恋爱中我的战神身份被巨星老婆曝光了我的冰山总裁未婚妻都市同居物语捡个飞碟送外卖我成了震惊全世界的全能学神重生之美利坚土豪前女友又上门了餐饮大佬天降五百亿从特种兵开始融合万物超级小医生绝品神医他的白月光
豫川书院搜藏榜: 无上战神绝色总裁的超级高手极品修真强少刚被悔婚超级天后带娃堵门我和女神称霸荒岛的日子开局在出租屋里捡到一个亿影视世界:从纨绔子弟再就业开始开局签到就无敌花都最强逆天主宰豪门大少开局无限一元秒杀新技能都市最强仙帝传奇1997我加载了气运管理系统极道狂飙贴身保安重生乡村霸主传奇从综艺开始第三重人格近身狂医光头超人在都市仙帝奶爸在都市最强长生赘婿武侠世界抽奖系统我真不想花钱了天降狂婿都市小世界万界淘宝商随身带着未来空间绝色老板爱上小保安史上最牛玩家兵王归来灭天归来当奶爸透视小村医狂浪龙婿我成了天庭代言人那些热血飞扬的日子我有四个神豪妹妹都市酒仙系统我神豪身份被九个绝色姐姐曝光了我在异界送外卖至尊高手超脑天医丈夫的复仇倾国佳人王牌保镖极品太子爷四合院里的老中医穿越四合院里做倒爷仙医妙手
豫川书院最新小说: 再启仙途热搜第一:叫你捡漏你开挂啊汽车公司?不,是国货之光我的金融帝国我写的娱乐文被杨老板看到了百元求生:从潘家园捡漏开始放弃留学,我打造了世界第一名校浪在娱乐圈奶爸,开局校花找上门,当爸了?硅谷大帝重生之娱乐风暴韩娱之kpopstar星媒舵手四合院里的老中医地窟求生:开局食物增幅三十倍文娱:让你唱歌,你搁这作法?带着爸妈去上班娱乐:别联系了,真不熟回到过去当女神四合院里的唯一老实人怪物食堂从重生开始合租好莱坞制作首富后才知是反派我的夫妻关系竟能数据化平行空间我的美女上司重生之无悔人生校园超级霸主贴身女仆很妖娆纨绔邪神混世穷小子极品鉴定师极品学生保镖天下雄途贴身护美校园纨绔特工我的美女姐妹花贴身美女攻略续世枭雄我的老婆是警花文理双修校园邪神传极品男人全能天才混都市重生之快意纵横超级囚徒软玉温香极品保镖