3

我们在团队中就代码的小和平进行了大讨论。

示例 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);
4

1 回答 1

1

对此没有明确的答案,但我个人更喜欢后一个版本。恕我直言Constants.DateTypeGeneratorTolerance,时间并不长(尽管距离也不远)。如果它的名字选得好,它就准确地说明了它的含义。而引入局部变量会使空间变得混乱,使我更难以理解正在发生的事情 - 不仅在直接阅读代码时,而且搜索这个常量的用法也更加麻烦。

此外,名称本身很长,主要是因为它包含范围信息。通过将所有全局常量放在一个类中,您会觉得需要使用命名前缀(如 )来区分它们DateTypeGenerator。然而,如果你将常量移到它在逻辑上属于的位置——要么属于它DateTypeGenerator本身,要么属于一个单独的DateTypeGeneratorConstants类——常量名称本身就会变得简洁明了。

请注意,一些语言提供了特殊功能来减少对限定符的需求,从而缩短名称。例如 Java 中的静态导入,或usingC# 中的指令。

将上述内容与 C#using指令相结合,您将获得:

using Tolerance = DateTypeGenerator.Tolerance;

...

DateType dayType = DateTypeGenerator.GenerateDateType(
                courseTripValidity,
                Tolerance,
                symbols,
                startDate,
                endDate);
于 2012-06-22T12:20:10.637 回答