我是否有命名约定问题或代码问题?

时间:2012-03-21 15:47:20

标签: c# naming-conventions

我总是将我的常量加上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));
        }
    }

}

}

3 个答案:

答案 0 :(得分:5)

我认为这里的问题只是名称的选择。例如,使用以下

删除CN_的建议更改
private const string StartDate = "StartDate";

我对提交此内容的任何人的反馈都是你的名字不好。这不是开始日期。它是我们在显示信息时识别或标记开始日期的方式。我建议改为StartDateName

private const string StartDateName = "StartDate";

如果将此逻辑应用于所有常量,问题就会消失。

答案 1 :(得分:4)

你的常数实际代表净价(等)吗?它代表净价格列的名称。所以我建议:

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将给出名称。

答案 2 :(得分:0)

您有一个命名约定问题 - 您的常量字符串名称应该与它们所代表的实际属性的命名方式不同。