手机浏览器扫描二维码访问
晚上。
已经和王晓雪收拾好了明天需要带回家的东西之后,叶新晨就打开了曹庆阳发给他的东西。
趁着现在时间还足,所以叶新晨也是准备直接花费一点时间帮曹庆阳给搞定。
打开文件,叶新晨看着这个代码,陷入了沉思,他陷入沉思的原因不是因为这个修复漏洞很难,相反,很简单,叶新晨半个多小时就给他修复好了。
他感觉到的只是修改BUG和找BUG那真的是两个情况。
不过有些人也肯定很疑惑,程出现BUG是必然出现的情况还是程序员水平有限导致的?
这个嘛……仁者见仁,智者见智。
就比如这个——
print(“hello,world.“)
你看,这个“程序”就是没有BUG漏洞的……
实际上但凡有过一点正式开发经验的程序员,写个简单的helloworld都能写出BUG的恐怕不多见吧。
别说helloworld了,一个简单的、不涉及“隐秘”机制的百行小程序,绝大多数资深程序员也可以直接写成0bug。
因为这些实际上是对计算机的原理深度决定的,比如你对计算原理或者语言机制理解越深,对你来说“隐秘”的东西就越少,写出高质量代码的机率就越高。
而且,就像黑土平台里面的交流板块哪怕只是在上敲一篇一千个字的灌水文,有几个可以保证无语法错误、无错别字且标点符号使用正确呢?
尤其这还是在机器替你写字,使得“提笔忘字”“书写错误”之类错误无法存在的前提下:这样你都不能保证全对……
那么不仅大小写敏感、而且逻辑更为曲折复杂、容不得半点含糊的计算机程序呢?
因此,有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:留个言,你们是不是不喜欢看代码相关的或者看不懂这些……说出来我以后少写点,毕竟前期还是需要程序员的技术去赚钱的。当然你们的意见我也考虑一下。
read3();看小说,630book
请勿开启浏览器阅读模式,否则将导致章节内容缺失及无法阅读下一章。
从香江开始 澳洲风云1876 唐峰林梦佳 首富重生:开局一辆二八大杠 独占金枝 唐峰林梦佳小说 神级系统:开局亿万奖金 兵王林昆全文免费 女神的贴身神医 妈咪快看爹地又跪了 都市之上门神医 神豪:我!分手后被女神姐姐告白 都市医仙 风水大相士 苟在女帝宫,我无敌了! 卧龙赘婿 我真的能开地图炮 我在玄幻世界当掌门 NBA:不玩了,你欺负人! 直播!开局短视频播放量一千万
关于搬空钱财,我反手给继妹报名下乡林惊月,热衷于摆烂,得过且过的白富美一枚,整天就是混吃等死,没什么良心。谁知道天有不测风云,一天去自家农场游玩,脚一滑,栽进了稻田里,哦豁,再醒来成了七十年代一枚极品知青。继妹为了她的工作偷偷给她报名?好的,学到了,她也给继妹偷偷报名,来啊,互相伤害!亲爸贪了亲妈抚恤金,好的,让他加倍奉还,收刮家里钱财,让他喝西北风。林惊月苦(kai)逼(xin)的维持人设,作天作地,一言不合就动手,揍得别人哭爹...
小甜饼现代都市明艳钓系大小姐x高岭之花性冷淡一场疯狂撩人反被撩的故事林晚霁是个财迷,立志赚好多钱是她的目标,却意外因为一档职场综艺走红,期间她明艳旖旎的外貌成为了职场人气女,网上对她的形容这姐一出马,便是王炸。在这之前她接到过一个陌生电话。给你一千万,去和我儿子谈恋爱林晚霁???贺京珩身处豪门圈的顶级掌门人,矜贵优雅,举足之间透着难以接近的危险,引...
兵王终有归来日,潜龙还有再起时!Ps推荐一本爽文终极特种兵王。...
特战队员荣归故里,为恢复正常身份入校园遇绝品女教师。校花为他的才华折服,院花想给他生猴子,班花当了跟屁虫哎哎哎,美女,和谐社会咱不能这么奔放,你把衣服穿好,咱聊聊人生还是可以的。女教师群号548486453,入她的裙和女教师一起好好学习,天天向上!...
我和严格,纠缠了七年,最后还是逃不过你死我亡的折磨。睡了祝凉臣,我从此背负上乱伦的骂名,却也甘之如饴。万劫不复时,祝凉臣手捧鲜血对我说沈期,所有的苦痛都是你自找的,但我会陪你一起痛。严格将我伤到彻底,毁我一切,哭笑着将从前的一切毁灭七年之痒,互相背板互相伤害,或许是对那场爱情最残忍的批判。...
从来没有任何时候像这个时代一样,人们可以毫不在意自己的生命,随时为国家的富强将自己的生命献上祭坛满腔的热血,似乎就为了一次美丽的绽放,一个个年轻的生命就这样从容的走向死亡那些大难不死的劫后余生者,为了各自心中的理念和信仰,不断的在黑暗中前行摸索此书献给戒念的爱人和即将要出世的孩子,希望所有的人都能够沐浴和平自由的阳光下献给喜欢戒念文字的亲爱读者们,还有便是献给所有百年来为争取民族独立和中国富强而牺牲的先辈...