我有一个命名约定问题或代码问题吗?

问题描述:

我总是在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)); 
     } 
    } 

} 

}

+0

我会调用像'NetPriceColumn'这样的常量。 – 2012-03-21 15:50:38

+0

您尚未提供任何有关您的实际问题的信息。你只给我们你认为解决方案(2)可能是什么。 – 2012-03-21 15:50:50

+0

我的问题是,如果我遵循命名约定,我的代码将无法编译,所以我不确定这是否是我不理解约定或使用我的代码的结果。 – 2012-03-21 16:55:38

你的常数不是其实代表净价格(等)吗?它代表净价栏的名称。所以我建议之一:

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";