整洁代码中的魔术值

    之前在项目上进行《编码规范》培训的时候,发现很多人不清楚魔术值是什么。但是,了解CleanCode,整洁代码的话,一般都比较清楚。比如在《代码整洁之道》这本书中,第二章就出现了关于魔术数的描述。魔术值就是代码中直接出现的数值。从CleanCode的角度来说,肯定是提倡尽量避免代码中出现魔术值的。至于原因,基本上都是其会使代码可读性大大下降。
    在之前修订项目上《编码规范》的时候,我们也纠结过,到底要不要将不出现魔术值作为强制性的规范要求,还是仅仅作为推荐或者参考规范,而不强制的推行。后来,因为一次现场质量事故的故障回溯,使得项目上最终决定,将不允许出现魔术值作为强制性的代码规范在全项目推广。
    事情的前因后果是这样的:
        造成现场严重问题的故障回溯中,我们发现,代码逻辑的边界值没有得到测试覆盖,而在代码走查过程中,参与了代码走查的QA也未能对该边界值提出要进行测试覆盖,同时也没有对应的测试用例来体现,因此问题泄露到了现场。因此,项目上要求,QA在参与代码走查的过程中,必须对常量高度敏感,理解常量的意义,同时要对常量出现的地方评估是否有必要做边界测试,并且同时要编写边界测试用例覆盖。对于代码并不是非常深入熟悉的QA来说,要在代码走查过程中,快速准确的识别出逻辑边界,代码中的魔术值无疑是非常大的绊脚石。因此,强制不允许魔术值的出现,有利于QA在代码中快速识别边界值并了解边界含义,实际上,这也是增加代码可读性的另一种更加务实的体现。
    在宣贯项目的《编码规范》过程中,很多同事对这一条规范实际上第一反应都是比较排斥的,这主要是从自身出发考虑问题。但是,我们通常要考虑到其他人,比如模块的备份人员,QA,甚至是在更远的将来需要接手这个模块的同事。

你可能感兴趣的:(整洁代码中的魔术值)