帮助编写简洁代码的7个编码规范
软件编码规范有很多条,下面7条规范特别重要,它们可以帮助你编写出简洁的、可维护的代码。
规则1:不要编写单元级别的代码坏味道
需要避免的单元级别的代码坏味道包括:过长的代码单元、复杂的代码单元以及长接口的代码单元、使用重复代码以及单元间存在紧耦合。其中前面三个原则会更为常见。
这些坏味道会使得代码不易理解、测试,可维护性变差。
规则2:不要编写不好的注释
虽然编码规范通常会有注释率的要求,但是注释必须要有价值,它能够说明复杂代码的逻辑,或者代码修改的原因。如果单纯地为了满足注释率的要求而添加了一些不好的或没有价值的注释,那可能会给人阅读代码带来障碍,反而影响可维护性。
规则3:不要保留注释掉的代码
软件开发人员在软件调试的过程中习惯用注释的方式屏蔽掉部分代码。但是,永远不要提交包含被注释掉的代码的软件版本。因为保留这些已经被注释掉的代码,可能会给软件维护带来障碍。
如果你觉得这些被注释掉的代码可能还会有用,你可以在开发库中保留它之后安全地删除它们再提交受控库。
规则4:不要保留废弃代码
废弃代码指的是根本不会被执行或者代码可能被执行,但是没有任何地方使用它的输出的代码。比如被注释掉的代码,方法中无法到达的代码,无用的私有方法 (私有方法没有被类中的任何代码调用)。
规则5:不要使用过长的标识符名称
好的标识符命名让代码读起来仿佛一种享受,而不好的标识符命名却让代码难以理解。
通常我们要避免使用过长的标识符名称。因为过长的标识符往往会意味着表示过多职责(例如 generateConsoleAnnotationScriptAndStylesheet)或者包括过多技术术语(例如GlobalProjectNamingStrategyC onfiguration)的标识符名称。
规则6:不要使用魔术常量
魔术常量指的是在代码中没有被清晰定义的数字或者字符串。以下面代码为例:
float CalculateFare(Customer c, long distance)
{
float travelledDistanceFare = distance * 0.10f;
if (C.Age <12)
{
travelledDistanceFare *= 0.25f;
}
else
if (C.Age >= 65)
{
travelledDistanceFare *= 0.5f;
}
return 3.00f + travelledDistanceFare;
}
这个代码示例中的儿童和老人的年龄界限看似熟悉的数字,但是请记住这些数字可能会在代码中的很多地方都会使用,而且票价率的熟知也可能会因为业务需要随时发生改变。
正确使用数字常量的做法应当如下面的代码所示:
private static readonly float BASE RATE = 3.00f;
private static readonly floatFARE PER KM = 0.10f;
private static readonly float DISCOUNT RATE CHILDREN =0.25f;
private static readonly float DISCOUNT RATE ELDERLY = 0.5f;
private static readonly int MAXIMUM AGE_CHILDREN = 12;
private static readonty int MINIMUM AGE_ELDERLY = 65;
float CalculateFare(Customer c, long distance)
{
float travelledDistanceFare = distance * FARE_PER KM;
if (c.Age < MAXIMUM_AGE_CHILDREN)
{
travelledDistanceFare *= DISCOUNT_RATE_CHILDREN;
}
else
if (C.Age >= MINIMUM AGE ELDERLY)
{
travelledDistanceFare *= DISCOUNT_RATE_ELDERLY;
}
return BASE RATE + travelledDistanceFare;
}
规则7:不要使用未正确处理的异常
如果异常没有被正确处理,软件频繁给出出错的信息,会极大地降低用户满意度,软件的质量大打折扣。正确处理异常要遵循以下3个原则:
捕获一切异常。捕获异常是为了了解它们产生的原因以便加以改进,因此我们应当尽可能地捕获软件所有的异常。
捕获特定异常。软件可能存在某些特定的异常,这些特定的异常可能使用通用的异常捕获方法如Throwable、Exception或者RuntimeException都无法捕捉,需要进行专门的设计。
减少异常信息对用户的干扰。在异常信息展示给用户之前,应先将其转换成通用的信息,避免用户被具体的异常信息所“打扰”。
这正是:
编码规范千万条,最最重要有七条
代码注释和命名,魔术常量及异常
参考书目:代码不朽:编写可维护软件的十大要则,作者:(荷兰)约斯特·维瑟,译者:张若飞,出版社:电子工业出版社
