我们在团队中对代码的小和平进行了大量讨论。
示例1 开发人员添加了额外的局部变量,以使代码更具可读性。在局部变量中,他从常数中保存了值。
示例2 相同的代码没有额外的变量,但从开发人员的角度来看可读性较差。
您认为更具可读性? 从重构的角度来看更好吗?
1
var tolerance = Constants.DateTypeGeneratorTolerance;
var dayType = DateTypeGenerator.GenerateDateType(
courseTripValidity,
tolerance,
symbols,
startDate,
endDate);
2
var dayType = DateTypeGenerator.GenerateDateType(
courseTripValidity,
Constants.DateTypeGeneratorTolerance,
symbols,
startDate,
endDate);
答案 0 :(得分:1)
对此没有明确的答案,但我个人更喜欢后一版本。恕我直言Constants.DateTypeGeneratorTolerance
并不长得令人难以忍受(尽管离这一点也不远)。如果它的名字被很好地选择,它会准确地说出它的含义。引入局部变量会使空间变得混乱,使我更难以跟踪正在发生的事情 - 不仅在直接读取代码时,而且搜索此常量的用法也更加麻烦。
此外,名称本身很长,主要是因为它包含范围界定信息。通过将所有全局常量放入单个类中,您需要使用命名前缀(如DateTypeGenerator
)来区分它们。然而,如果您将常量移动到逻辑上属于的位置 - 无论是DateTypeGenerator
本身还是单独的DateTypeGeneratorConstants
类,常量名称本身都会变得简洁明快。
请注意,多种语言提供了特殊功能,以减少对限定符的需求,从而缩短名称。例如Java中的静态导入,或C#中的using
指令。
将上述内容与C#using
指令结合起来:
using Tolerance = DateTypeGenerator.Tolerance;
...
DateType dayType = DateTypeGenerator.GenerateDateType(
courseTripValidity,
Tolerance,
symbols,
startDate,
endDate);