为何糟糕的代码随处可见?

想知道为什么糟糕的代码随处可见吗?本文会告诉你以下三个原因。

过去几天,我一直在苦思冥想,为什么我们的行业每时每刻都会生产烂代码。能使用高质量代码搭建系统的开发人员真的非常之少,少如大海捞针。

1、显而易见的原因

我能想到的最明显的原因就是程序员有好坏之分、技术水平有高低之分,有人对这份工作充满热爱而有人只关心工资。

所以,对此我不再深究。

表层的原因还有多少?导致烂代码的根本原因又是什么?我不得不进行深入挖掘以找寻答案。

2、较低的预期

举个例说,大学当中所学的编程,无论是自学还是从书本所学,都未能反映真实工作所需。因此,新入行的程序都需要接受培训,了解如何编写优秀的代码。人们认为,真正的编程课来自于经验的积累。所以我们的行业对新手的预期通常是——烂代码编写者!

如果新手被预期会生产低质量的代码,不管你信与不信,结果是:你真的会得到烂代码。

尽管上述逻辑部分是正确的,但我并不想全面接受这些理由,主要有三个原因:

  • 如果在职业生涯的早期就以低标准要求他们,就等于在宣称代码质量并非重要的因素。这么做最直接的后果就是引入了大量低水平的开发人员,也导致了第2点…
  • 通过强迫他们与低质量的开发人员一起工作,使得真正热爱这个行业的人、以自己高质量代码为傲的人,处在水深火热中。
  • 上述两个原因直接导致了如今的行业现状,每个人都认为自己会写代码,专业的开发人员被当作商品对待。

所以我们应当对新手有更高的预期。如果一个医生不能以高标准完成一台手术,谁会雇佣他?如果一个飞行员不能保证飞机不坠毁,谁会雇佣他?很明显不能接受,所以,为何软件行业会接受低质量代码呢?

那么,低质量开发人员产生的根本原因又是什么呢?

3、编程书籍

几天前,我翻阅了一些以前的旧书,看到几本Java的书籍,一本是写给初学者的,一本是为SCJP认证准备的,我就不说书名了,原因稍后你就会看到。

不幸的是,初学者所看的书籍无意中展示了烂代码的模样。

许多为初学者编写的书籍充满了烂代码,Robert Martin在《代码整洁之道Clean Code》和《实用编程Pragmatic Programming》中所提的各种类型的烂代码在这种书籍中随处可见。为何糟糕的代码随处可见

你也许会看到…

  • 各种胡乱命名的变量、类、方法——例如循环变量名i、ii、j、k;类名 clazz、SampleChapter1等等
  • 不重视模块划分——长达三页的main()函数,而不是分解为多个方法。
  • 糟糕的编码实践——没有好的编码实践,比如验证和异常处理,相反,他们常会使用一个通用的try()…将所有代码放在类中的catch体。(注:try、catch为Java中的异常处理机制)。大量的使用if-else, switch, goto语句等等。
  • 快捷键——教科书应当摆脱“速战速决”的编程风格,例如,在一个方法中找到10个参数屡见不鲜。做两种类型的计算?传递一个bool类型的形参,然后添加一个if-else结构。需要添加新功能,在两页长的代码中再添加更多的代码。此处就列出一点点。

学习编程的最好方法是:掌握语言的语法、掌握高效开发所需的工具、掌握构成代码的组件与模块的设计方法——按照这个顺序。

不幸的是,很多书仅仅停留在语法的讲解上,而未涉及工具的使用与设计方法的改良。初学者往往会学得比作者意图所教的更多,比如这些书本来只是教语法的,而初学者却还从中学到了编程风格与方法论。

人们学习编码时,告诉他们代码是写来给人读的,而不只是给编译器看的很重要。

我希望,如果读过这篇文章的人,以后成了作者,能在书中给出优秀规范的代码示例,我很愧疚在我的一些文章中使用了权宜之计的代码。学习编写高质量的码不应仅限定在专家级的书中,而应当成为每本书的一部分。

如果初学者所用的书都充满了烂代码,我们又怎能期望人们写出高质量的代码呢?

关于 “为何糟糕的代码随处可见?” 的 1 个意见

评论关闭。