我有一个命名约定问题或代码问题吗?
问题描述:
我总是在CN_中为我的常量添加了前缀,如下所示,但我现在正在编码为接受的标准,我发现这些标准在本网站上链接。标准说我应该放弃我的常量CN_。因此,下面的例子中,如果我将CN_NetPrice更改为NetPrice,我将与同名的method属性发生冲突。显然我不能这样做,所以我留下了一个问题。我是否有命名约定问题,或者我的代码一般存在问题?我有一个命名约定问题或代码问题吗?
public class TicketInformation
{
private const string CN_StartDate = "StartDate";
private const string CN_EndDate = "EndDate";
private const string CN_NetPrice = "NetPrice";
private const string CN_NetTotalPrice = "NetTotalPrice";
private const string CN_Tickets = "Tickets";
public decimal NetPrice { get; set; }
public decimal NetTotalPrice { get; set; }
public decimal Tickets { get; set; }
public static TicketInformation Create(DateTime startDate, DateTime endDate)
{
try
{
TicketInformation ti = new TicketInformation();
using (DataTable dt = DAC.ExecuteDataTable(
"GetAllTicketInformationSelect",
DAC.Parameter(CN_StartDate, startDate),
DAC.Parameter(CN_EndDate, endDate)))
{
ti.NetTotalPrice = Convert.ToDecimal(dt.Rows[0][CN_NetTotalPrice]);
ti.NetPrice = Convert.ToDecimal(dt.Rows[0][CN_NetPrice]);
ti.Tickets = Convert.ToDecimal(dt.Rows[0][CN_Tickets]);
}
return ti;
}
catch (Exception ex)
{
throw new Exception(Convert.ToString(ex));
}
}
}
}
答
你的常数不是其实代表净价格(等)吗?它代表净价栏的名称。所以我建议之一:
private const string StartDateColumn = "StartDate";
private const string EndDateColumn = "EndDate";
private const string NetPriceColumn = "NetPrice";
private const string NetTotalPriceColumn = "NetTotalPrice";
private const string TicketsColumn = "Tickets";
或者:
private static class Columns
{
internal const string StartDate = "StartDate";
internal const string EndDate = "EndDate";
internal const string NetPrice = "NetPrice";
internal const string NetTotalPrice = "NetTotalPrice";
internal const string Tickets = "Tickets";
}
或者使用一个枚举:
private enum Column
{
StartDate, EndDate, NetPrice, NetTotalPrice, Tickets;
}
...呼吁那些枚举值之一ToString
会给名。
答
你有一个命名规则的问题 - 列名的常量字符串应该从他们所代表的实际属性不同的名称。
答
我认为这里的问题只是一个名称的选择。举个例子具有以下
private const string StartDate = "StartDate";
我的反馈消除CN_
任何人提交,这将是你有一个坏名字的更改建议。这不是开始日期。而是我们在显示信息时识别或标记开始日期的方式。如果应用此逻辑所有的常量的问题就会迎刃而解,我建议,而不是StartDateName
private const string StartDateName = "StartDate";
。
我会调用像'NetPriceColumn'这样的常量。 – 2012-03-21 15:50:38
您尚未提供任何有关您的实际问题的信息。你只给我们你认为解决方案(2)可能是什么。 – 2012-03-21 15:50:50
我的问题是,如果我遵循命名约定,我的代码将无法编译,所以我不确定这是否是我不理解约定或使用我的代码的结果。 – 2012-03-21 16:55:38