技术开发 频道

重视代码质量 不能等到“亡羊补牢”

IT168 专稿

    代码质量是一种特殊的质量。它经常在理论中被提起,而往往在实践中被忽视。长期来看它的作用很重要,但最后期限临近时,它又变得可有可无。它没有在日程表里直接体现,却影响着整个计划的执行。它有着语法上的、运行时稳定性方面的,以及更广泛的、关于设计的各种定义。那么,代码质量到底是什么?为什么它那么重要呢?

软件质量≠代码质量

    虽然软件与其背后的代码有着明显的关系,但两者还是有微妙的不同。软件是交付给用户,并由用户体验的产品;代码则是对于软件正规且详细的描述。当然,代码中的错误会导致软件上的缺陷,但是代码质量仍然要比KLOC(每千行代码)Bug密度或软件的外观重要得多。

    软件的质量,或者称之为感知质量(perceived quality),取决于软件所实现的功能、该功能的易用性、可能出现的缺陷、用户体验到的软件效果和软件执行效率等因素。代码的感知质量可以采用同样的方式来评估,包括代码实现了什么功能?代码在易用性方面有哪些表现?它本身是方便而有效的吗?代码正确吗?代码的资源利用方式正确或效率高吗?

提高代码的“可居住性”

    在《架构在敏捷开发中的作用》一文中曾经提到,拙劣的架构会增加变化的困难和成本,从而对变化有抵制效果。这种抵制明显地体现在代码上面。软件结构不仅是一个口号或框架;它是代码的特征,并最终由代码将这一特征表现出来。代码与结构不会(也不能)背道而驰,但是实际的代码与预期的结构却会(并且经常)背道而驰。

    Richard Gabriel在《软件模式》中指出,正如我们可以从建筑的结构图中看出建筑的居住环境和工作环境,我们也可以从软件结构中看到代码的环境。

    “可居住性”(habitability)是源代码的特征,它使程序员、编码员、Bug修正人员和其他与代码有关的人员能够明白代码的构建方式和目的,并能轻松自如地对其进行修改。可居住性指某个地方的居住舒适程度,比如家。这也是我们在软件方面的希望——让开发人员感觉像在家里一样,可以自由地处理各类代码,并且能够轻松记住其位置。

    开发人员的大量时间都“居住”并“工作”在代码中,因此提高代码的“可居住性”非常重要。当然,这并不意味着要在源代码中铺满地毯并装满各种各样的小饰品,比如过多的注释或者过于繁琐的逻辑。但确实应该有一些共通的安排和模式。如果没有这样的安排和清晰度,代码就会变得脆弱、混乱、难以理解与不一致,并且要么是过分的简单要么是没有理由的复杂(或者两者的结合)。这不仅会造成项目全局与局部两方面的损失,还会导致开发速度的降低,并因此提高开发成本。

0
相关文章