【发布时间】:2009-09-29 21:10:12
【问题描述】:
例如,假设我们有一个票务系统可以配置为以正常价格提供门票,但是一旦您在活动开始的X 小时内,您就会以不同的价格提供门票(可能会打折或增加)。我们将其称为“抢购价”。此外,一旦您在活动的Y 小时内,您就可以以另一个价格提供它们。我们将其称为“紧急价格”。
表示此配置信息的类可能如下所示:
public class RushTicketPolicy {
private int rushHours;
private int emergencyHours;
public RushTicketPolicy(int rushHours, int emergencyHours) {
this.rushHours = rushHours;
this.emergencyHours = emergencyHours;
}
public int RushHours { get { return this.rushHours; } }
public int EmergencyHours { get { return this.emergencyHours; } }
}
我发现很难为这些变量(和属性)想出足够表达和完整的名称,而不参考使用它们的代码,也不需要额外的推断。
也就是说,没有看过其余代码或对其业务需求一无所知的人应该能够查看变量名称并理解:
- 在活动前几个小时
X开始抢购。 - 紧急销售在活动前几个小时开始
Y,包括在内。
有哪些名字可以做到这一点?
【问题讨论】:
-
我的一位同事提出了一个非常有趣的建议。我试图让他发布它,但要点是清楚地命名这个变量非常困难,因为该类不引用事件,这是模型的关键元素。试图将其硬塞到变量名中不可避免地会导致混淆。因此,他建议使用类似
TicketingPeriodStart类的东西,该类带有hoursBeforeEvent变量和(至关重要的)一个更符合我们对数据的看法的公共方法:GetTicketingPeriodStartDate(DateTime eventDate)。 -
(续)这将涉及将课程从我的问题分成两个实例(一个代表紧急票务的开始,另一个代表紧急票务的开始)。当然,这些配置设置可能存在于数据库中的单个表中,因此它可能只是推迟了这个问题......如何命名代表阈值或限制的 列?