劣质代码

劣质代码是怎么产生的


劣质代码令人深恶痛绝。那么它们究竟是怎么产生的呢?只有明白了它们的产生根源,才能够从根本上杜绝劣质代码的产生。

劣质代码的产生主要来自于几个方面:

1. 理论知识的匮乏

    缺少理论知识,以至于不知道什么是优质代码,什么是劣质代码。本文将从质量、

2. 编程语言知识不足

    由于对编程语言的接触只限于表面的常见功能,更多的高级功能从来没有用过,所以不知道有能够写出更精简的代码的方法。
    本文将以Java为例,阐释那些高级而又不常用到的功能。

3. 编程工具的不熟悉。

    也许有些夸张,我见过有人用键盘上的箭头移动光标到最开始,而不是用Home键的,见过全局替换用眼睛而不是用工具的。尽管每天都在使用编程工具,但是却不知道那个就在指边滑过的菜单是干什么用的。就好像洪太尉遇到张天师。本文将以Eclipse为例介绍一些高效而又实用的功能。

4.英语能力的不足

    以前写代码阅读质量方面书籍的人都是欧美人,英语自是不在话下,因此也很少提到英语能力的问题。但是这是亚洲人的弱项,编程中经常用到英语,对英语的适当提升能够有效的帮助改善代码的可读性。本文将就各种常用词性、句式、词组等入手介绍编码中的英语应该如何应用。

5.管理上的疏漏

    尽管代码不是管理人员写出来的,但是如果管理人员不知道什么是好的代码或者如何才能够写出好的代码,那么他将会把整个团队往低效的方向引领。本文将就管理人员在管理行为上的错误将会如何影响代码质量方面进行阐述。


劣质代码带来的劣质体验

     时下很流行讨论用户体验。当我们浏览一个网站或者使用一个软件的时候,如果它的界面组织的不够友好,我们就会感到沮丧,离开,而且不想再次回来。程序员修改程序的时候所产生的体验就是对代码的体验。他们时而因为代码的精彩而感到兴奋;时而因为代码的结构混乱而愤恨不已;时而因为某个精彩的方案而感到激动;时而因为某个糟糕的命名而焦头烂额。就像网站的用户体验包括页面布局、文字、图片、链接等各种属性一样,代码通过其命名、注释、风格和结构给程序员带来不同的体验。

     糟糕的代码不仅仅给程序员带来糟糕的体验,它同时带来质量问题,也让人们为它付出额外的心血,却难以产生额外的价值。对于程序员来说,劣质代码就是噩梦,它带来各种不愉快的体验。本系列将讨论如何通过改善编码的方式来改善阅读体验,同时对软件质量进行提升。因此,本系列并不仅仅是面向程序员的,它同样适用于公司经营层、项目经理、过程管理人员和测试人员,以及其他我没有列出但是能够从中获益的人们。

     如果你在编码中遇到了下列问题,那么你多半是遇到了糟糕的代码:

    1.Bug难以复现

  常常会有bug以“无法复现”而关闭。bug为什么难以复现呢?因为形成bug现象的原因条件组合太复杂了。很难再次通过有效地组织操作手法来复现bug,或者说,当时能够发现这个bug纯属是偶然因素。

  2.Bug难以追踪

     虽然Bug的复现步骤已经明确了,但是Bug的发生原因却找不到,不知道到底是A变量引起的还是B方法造成的。为了能够跟踪Bug,需要在诸多函数方法中打印无数个Log,需要跟踪大量的变量值变化情况。需要设置若干个断点。这花费若干时间,而下次Bug再次发生时,还要重复上述步骤。

 3.Bug难以修改

  Bug的产生原因费尽千辛万苦找到了,但是却不敢动手,因为涉及到的函数(方法)被调用的地方太多了,不知道修改了之后会引起什么问题;又或者涉及到的变量就算设置了我们想要的值却又被莫名其妙的重置了,因为某个函数(方法)被调用了6次。你甚至难以确定为什么要对同一个函数(方法)调用6次。

 4.难以扩展

     当用户提出要求要增加新的功能时,你感到很为难,因为已经写好的代码好像无从下手了。但是硬着头皮你开始修改,却又忐忑不安。你发现新加的功能如果想要实现,就必须要放弃另外的一个功能,但是管理者又要求你鱼和熊掌兼得。很显然,这不像找一头会捉鱼的熊那么简单。

 5.代码难于理解

  刚接手代码的时候你打算从中找到业务需求上所描述的流程关系,可是并没有那么明显的入口让你开始着手,你只好一行一行的看,但是更多的时候你在滚动鼠标滚轮,而不是看代码,更多的时候你在各个函数(方法)中跳跃,而不是理解逻辑关系。更多的时候你在琢磨那句过时了的注释,或者在庞大的注释中挑出代码,就好像从沙子中挑米一样。

 6.难以自动测试

  你想用自动测试来保证代码的质量,但是代码却并不那么爽快,调用代码所涉及到的外部数据足够你准备上一整天的,而且,就算你准备好数据了,代码也不是那么容易调用的。 它可能要求必须从UI上来运行,因为其中有UI相关的处理;或者它要求你必须传递一个你无法准备的Context参数。总之,想要启动自动测试,你得先对代码做出手术。



知识共享许可协议
《劣质代码》常伟华 创作。
采用 知识共享 署名-相同方式共享 3.0 中国大陆 许可协议进行许可。
  • 多说评论
  • 签名
  • 新浪微博
  • 默认评论
  • Tab Header 5

0 条评论 / 点击此处发表评论

Tab Content 5

开发技术


开发平台和工具

sitemap     163.75ms