最佳属性命名是什么?

3

以下三个选项中,您会选择哪个作为C#中的属性名称?为什么?

  1. YearToDateWages(年至今工资)
  2. YTDWages(年度工资)
  3. YtdWages(年初至今工资)
请注意,这些选项只是示例,具体选择应该根据项目需求和团队约定来确定。

跟进:那么SSN、Ssn或SocialSecurityNumber呢? - Lance Fisher
2
我来自新西兰,不知道什么是SSN。就像你可能不知道IRD或GST是什么一样,所以使用全名更好,适用于那些不知道你所知道的内容的人 :) - PostMan
我猜这取决于谁将使用和维护代码。在这种情况下,它是内部软件,公司中的每个人都知道 SSN 和 YTD 是什么。 - Lance Fisher
DBAs的想法:https://dev59.com/803Sa4cB1Zd3GeqPze0B - Lance Fisher
10个回答

14

我会选择第一种方式。除非是一些超级常见的缩写词,否则我更喜欢不要缩写任何东西。例如,“HyperTextTransferProtocolRequest”这样的单词如果拼写出来就太荒谬了,因此将其缩写为“HttpRequest”是可以接受的。这可能有点主观,但当有疑问时,我倾向于不缩写。

如果你决定选择第二或第三种方式,我会投票支持第三种,因为这也是“框架设计准则”建议的做法。该准则基本上指出,对于长度为3个或以上字母的缩写词,应将第一个字母大写,其他字母小写。对于两个字母的缩写词有点模棱两可......有些人喜欢像“ID”那样将所有字母都大写,而有些人则喜欢使用“Id”。实际上,该准则的建议是将两个字母的缩写词所有字母都大写,但这与3个或以上字母的缩写词的规则相矛盾,所以人们两种方法都用。


1
"Id" 是 "Identity" 的缩写,而不是首字母缩略词。这就是为什么我更喜欢使用 "Id" 而不是 "ID"。 - Lance Fisher

5
我会使用YearToDateWages,因为如果该项不在列表中,我就不知道你在谈论什么。
另请参阅MSDN上的一般命名指南

通常情况下,您不应使用缩写或首字母缩略词。这会降低名称的可读性。同样,很难知道何时可以安全地假设缩略语是被广泛认可的。

有关缩写的大写规则,请参见大写约定

不要将缩写或缩略词用作标识符名称的一部分。

例如,使用OnButtonClick而不是OnBtnClick。

不要使用任何不被广泛接受的缩略语,仅在必要时使用。

原文强调。

4
bool ShouldIUseAbbreviate(string abbreviate_)
{
  foreach (var peer in myPeers)
  {
    if (!peer.CanGetTheMeaningWithinOneSecond(abbreviate_))
    {
      return false;
    }
  }

  return true;
}

语法错误在 my Peers :) - Earlz
+1 为以代码编写你的答案! :) - Lance Fisher
+1 但是你的方法应该被命名为 bool SIUA(string _abbr)。 - Daniel Dyson

2

我认为第一个是最好的,因为它是自我描述的。


2

微软建议的命名规则排除了#2

任何含有> 2个缩写字母的东西应该是Xxx而不是XXX

但是2个字母应该是XX

我喜欢少打字,所以我会选择YtdWages


1

这要视情况而定。

如果您正在制作一个将被外部使用的库,.NET Framework设计指南建议选择首选项#1。

如果它是一个内部应用程序/库,那么我建议使用与团队开发标准一致的格式。


0

.Net框架似乎主要遵循第一种方式,所以我会坚持使用它。除非在类级别上极为常见,否则应避免缩写。当然,在本地(函数)变量方面,这种限制要少得多,我认为缩写和简短的名称更加合适,以使代码更小、更简洁。

好的缩写示例包括XML和HTTP。谁会认真写

string x=myobject.HyperTextMarkupLanguageOutput;

0
我会选择使用全名而不是缩写。这样更具描述性,虽然“YTD”对一些人来说可能很明显,但并非所有人都知道它的含义。YearToDate并不过长,意思也很清晰。

需要让每个人都明白,还是只有维护和使用软件的业务人员需要明白? - Lance Fisher
@Lance:对于维护和使用代码的人来说,显而易见就足够了。然而,这并不意味着缩写是一个好主意;想想那些还不习惯缩写的新手们。如果有任何疑惑,最好打全名以确保安全;自动完成意味着在使用时你实际上并不需要打全名。 - Michael Madsen

0

你不使用第一个的原因是什么?

这不仅是为了别人;如果你两年后需要更改自己的代码,好的、描述性的名称将会对你有所帮助。


0

我也投票支持第一项。

很少有情况不需要使用描述性名称。Visual Studio会帮助你处理长名称。

半离题的注释: 如果你找不到合适的名称……也许计划的用途本身就不是很清晰;)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接