10丨软件设计的目的:糟糕的程序员比优秀的程序员差在哪里?

VIP专免
4.0 菜籽 2024-02-24 242 2.09MB 9 页 免费
侵权投诉
10 | 软件设计的目的:糟糕的程序员比优秀的程序员差在哪里?
2019-12-13 李智慧
后端技术面试38讲
进入课程
讲述:李智慧
时长 10:02 大小 9.20M
有人说,在软件开发中,优秀的程序员比糟糕的程序员的工作产出高 100 倍。这听起来有
点夸张,实际上,我可能更悲观一点,就我看来,有时候,后者的工作成果可能是负向的,
也就是说,因为他的工作,项目会变得更加困难,代码变得更加晦涩,难以维护,工期因此
推延,各种莫名其妙改来改去的 bug 一再出现,而且这种局面还会蔓延扩散,连那些本来
还好的代码模块也逐渐腐坏变烂,最后项目难以为继,以失败告终。
如果仅仅是看过程,糟糕的程序员和优秀的程序员之间,差别并没有那么明显。但是从结果
看,如果最后的结果是失败的,那么产出就是负的,和成功的项目比,差别不是 100 倍,
而是无穷倍。
下载APP
程序员的好坏,一方面体现在编程能力上,比如并不是每个程序员都有编写一个编译器程序
的能力;另一方面,体现在程序设计方面,即使在没有太多编程技能要求的领域下,比如开
发一个订单管理模块,只要需求明确,具有一定的编程经验,大家都能开发出这样一个程
序,但优秀的程序员和糟糕的程序员之间,依然有巨大的差别。
在软件设计开发这个领域,好的设计和坏的设计最大的差别就体现在应对需求变更的能力
上。而好的程序员和差的程序员的一个重要区别,就是对待需求变更的态度。差的程序员害
怕需求变更,因为每次针对需求变更而开发的代码都会导致无尽的 bug;好的程序员则欢
迎需求变更,因为他们一开始就针对需求变更进行了软件设计,如果没有需求变更,他们优
秀的设计就没有了用武之地,产生一拳落空的感觉。这两种不同态度的背后,是设计能力的
差异。
一个优秀的程序员一旦习惯设计、编写能够灵活应对需求变更的代码,他就再也不会去编写
那些僵化的、脆弱的、晦涩的代码了,甚至仅仅是看这样的代码,也会产生强烈的不舒服的
感觉。记得一天下午,一个技术不错的同事突然跟我请假,说身体不舒服,需要回去休息一
下,我看他脸色惨白,有气无力,就问他怎么了。他回答:刚才给另一个组的同事 review
代码,代码太恶心了,看到中途去厕所吐了,现在浑身难受,需要休息。
惊讶吗?但实际上,糟糕的代码就是能产生这么大的威力,这些代码在运行过程中使系统崩
溃;测试过程中使 bug 无法收敛,越改越多;开发过程使开发者陷入迷宫,掉到一个又一
个坑里;而仅仅是看这些代码,都会使阅读者头晕眼花。
糟糕的设计
糟糕的设计和代码有如下一些特点,这些特点共同铸造了糟糕的软件。
僵化性
软件代码之间耦合严重,难以改动,任何微小的改动都会引起更大范围的改动。一个看似微
小的需求变更,却发现需要在很多地方修改代码。
脆弱性
比僵化性更糟糕的是脆弱性,僵化导致任何一个微小的改动都能引起更大范围的改动,而脆
弱则是微小的改动容易引起莫名其妙的崩溃或者 bug,出现 bug 的地方看似与改动的地方
毫无关联,或者软件进行了一个看似简单的改动,重新启动,然后就莫名其妙地崩溃了。
如果说僵化性容易导致原本只用 3 个小时的工作,变成了需要三天,让程序员加班加点工
作,于是开始吐槽工作的话,那么脆弱性导致的突然崩溃,则让程序员开始抓狂,怀疑人
生。
牢固性
牢固性是指软件无法进行快速、有效地拆分。想要复用软件的一部分功能,却无法容易地将
这部分功能从其他部分中分离出来。
目前微服务架构大行其道,但是,一些项目在没有解决软件牢固性的前提下,就硬着头皮进
行微服务改造,结果可想而知。要知道,微服务是低耦合模块的服务化,首先需要的,就是
低耦合的模块,然后才是微服务的架构。如果单体系统都做不到模块的低耦合,那么由此改
造出来的微服务系统只会将问题加倍放大,最后就怪微服务了。
粘滞性
需求变更导致软件变更的时候,如果糟糕的代码变更方案比优秀的方案更容易实施,那么软
件就会向糟糕的方向发展。
很多软件在设计之初有着良好的设计,但是随着一次一次的需求变更,最后变得千疮百孔,
趋向腐坏。
晦涩性
代码首先是给人看的,其次是给计算机执行的。如果代码晦涩难懂,必然会导致代码的维护
者以设计者不期望的方式对代码进行修改,导致系统腐坏变质。如果软件设计者期望自己的
设计在软件开发和维护过程中一直都能被良好执行,那么在软件最开始的模块中就应该保证
代码清晰易懂,后继者参与开发维护的时候才有章法可循。
一个设计腐坏的例子
软件如果是一次性的,只运行一次就被永远丢弃,那么无所谓设计,能实现功能就可以了。
然而现实中的软件,大多数在其漫长的生命周期中都会被不断修改、迭代、演化和发展。淘
宝从最初的小网站,发展到今天有上万名程序员维护的大系统;Facebook 从扎克伯格一个
人开发的小软件,成为如今服务全球数十亿人的巨无霸,无不经历过并将继续经历演化发展
的过程。
摘要:

10|软件设计的目的:糟糕的程序员比优秀的程序员差在哪里?2019-12-13李智慧后端技术面试38讲进入课程讲述:李智慧时长10:02大小9.20M有人说,在软件开发中,优秀的程序员比糟糕的程序员的工作产出高100倍。这听起来有点夸张,实际上,我可能更悲观一点,就我看来,有时候,后者的工作成果可能是负向的,也就是说,因为他的工作,项目会变得更加困难,代码变得更加晦涩,难以维护,工期因此推延,各种莫名其妙改来改去的bug一再出现,而且这种局面还会蔓延扩散,连那些本来还好的代码模块也逐渐腐坏变烂,最后项目难以为继,以失败告终。如果仅仅是看过程,糟糕的程序员和优秀的程序员之间,差别并没有那么明显...

展开>> 收起<<
10丨软件设计的目的:糟糕的程序员比优秀的程序员差在哪里?.pdf

共9页,预览3页

还剩页未读, 继续阅读

声明:菜根智库所有资料均为用户上传分享,仅供参考学习使用,版权归原作者所有。若侵犯到您的权益,请告知我们处理!任何个人或组织,在未征得本平台同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。
作者:菜籽 分类:数字化 价格:免费 属性:9 页 大小:2.09MB 格式:PDF 时间:2024-02-24

开通VIP享超值会员特权

  • 多端同步记录
  • 高速下载文档
  • 免费文档工具
  • 分享文档赚钱
  • 每日登录抽奖
  • 优质衍生服务
/ 9
客服
关注