这个问题可能看起来很迂腐或者很傻,但是当涉及到首字母缩略词时,你的 Camel 式大小写是什么?你是坚持所有的东西,甚至是首字母缩略词都必须是驼峰式的,还是你对首字母缩略词例外。解释也会很棒。我不确定这种做法如何影响IDE功能(自动完成)或行业标准是什么。
kuarbcqp1#
对于C#,请查看Microsoft's guidelines:
双字符首字母缩略词的两个字符都要大写,大小写混合的标识符的第一个单词除外。
名为DBRate的属性是用作Pascal大小写格式标识符的第一个单词的短首字母缩略词(DB)的示例。名为ioChannel的参数是一个短首字母缩略词(IO)的示例,它用作大小写混合的标识符的第一个单词。
首字母缩略词的第一个字符必须大写,包含三个或更多字符的首字母缩略词除外,大小写混合的标识符的第一个单词除外。
名为XmlWriter的类是一个长首字母缩略词的示例,它用作Pascal大小写格式标识符的第一个单词。名为htmlReader的参数是一个长首字母缩略词的示例,它用作大小写混合的标识符的第一个单词。
在大小写混合的标识符的开头,不要大写任何首字母缩略词的任何字符,无论其长度如何。
名为xmlStream的参数是一个长首字母缩略词(xml)用作大小写混合的标识符的第一个单词的示例。名为dbServerName的参数是一个短首字母缩写词(db)用作大小写混合的标识符的第一个单词的示例。
rqenqsqc2#
个人喜好。我倾向于这样做,只是因为它不能很好地与其他单词合并,比如,XMLHTTPParser,与XmlHttpParser相比。做任何让你感觉良好的事情,但要以标准的方式去做。
XMLHTTPParser
XmlHttpParser
pgpifvop3#
这是我喜欢的,这是Java的:类以大写字母开头,字段以小写字母开头,而首字母缩略词不影响这一点。会导致这样的结果,
UrlConnection urlConnection;
字符串问题是,如果你试图应用一个规则,你总是大写的首字母缩略词,甚至首字母缩略词,而不管它是一个字段或类名,你会得到奇怪的东西,如,
URLConnection URLConnection; // huh?
型换句话说,该字段以小写字母开头的规则与假设的大写字母缩略词规则相矛盾。你不能两者都用。甚至Java SDK也有这两种情况的例子,在一个类名中:HttpURLConnection。你会认为它要么是HTTPURLConnection要么是HttpUrlConnection。
HttpURLConnection
HTTPURLConnection
HttpUrlConnection
pexxcrt24#
一般来说,将首字母缩略词与整个单词大小写相同是最直观的,原因如下。1.它有助于避免记忆一堆特殊规则(例如上面的MS指南)1.特定术语的大小写可能会随着时间的推移或在个人解释之间发生变化,例如posix、unix、regex、radar、scuba、laser和email1.否则,当您需要处理(和/或合并)miniiOSLayout、SSHHTTPSSession、CPUURLLinkC和schemaeBay等技术术语时,它可能会在视觉上变得笨拙(假设这些特定示例不太可能,它们有助于说明问题)1.如果语言对不同的东西使用不同的大小写,比如大写AClassName而不是anObjectName,它消除了一些混乱httpUrl看起来很傻。但是你写的代码越多,你就越有可能自己意识到上面的几点。虽然这本身并不是一件大事,但很多小事情会累积起来,让你对工作感到沮丧。
posix
unix
regex
radar
scuba
laser
email
miniiOSLayout
SSHHTTPSSession
CPUURLLinkC
AClassName
anObjectName
httpUrl
ycl3bljg5#
我们没有硬性规定,但我们通常不使用驼峰式缩写。有几个超过三个字母的是,但大多数不是。
nbysray56#
一般来说,我们的首字母缩略词是PascalCased或CamelCased。一些例外情况:
lyr7nygr7#
也取决于缩略词的长度。DB->看起来不错
openDBConnection
字符串HTTP->看起来很奇怪
openHTTPCConnection
型除了规则:
所以,要做到前后一致,清晰可辨。
jum4pzuy8#
根据经验,您应该首选MyUrlClass,而不是MyURLClass。
MyUrlClass
MyURLClass
每种语言都有自己的风格指南。
对于Java:对于4个字母以上的首字母缩略词,请使用大小写混合。标准库就是这样做的,而且它很有意义。对于3个字母的首字母缩写,您可以像JCL一样使用全部大写,或者像.NET Framework一样使用混合大小写。无论如何,保持一致。对于2个字母的首字母缩写,请全部大写。对于2个字母的缩写,Java并没有真正的标准,但我建议使用混合大小写,除非与其他名称的一致性会使所有大写看起来更好。如果你来到这里,认为一个缩写词的每个字母都是一个不同的词,那就再想想吧如果这是你的推理,分析一下:通过将每个字母视为一个不同的单词,一个名称类XMLDBParser(PascalCase中)**以保持一致性,**将具有看起来像xMLDBParser(camelCase中)的标识符。这和命名约定没有任何意义。
XMLDBParser
xMLDBParser
8条答案
按热度按时间kuarbcqp1#
对于C#,请查看Microsoft's guidelines:
双字符首字母缩略词的两个字符都要大写,大小写混合的标识符的第一个单词除外。
名为DBRate的属性是用作Pascal大小写格式标识符的第一个单词的短首字母缩略词(DB)的示例。名为ioChannel的参数是一个短首字母缩略词(IO)的示例,它用作大小写混合的标识符的第一个单词。
首字母缩略词的第一个字符必须大写,包含三个或更多字符的首字母缩略词除外,大小写混合的标识符的第一个单词除外。
名为XmlWriter的类是一个长首字母缩略词的示例,它用作Pascal大小写格式标识符的第一个单词。名为htmlReader的参数是一个长首字母缩略词的示例,它用作大小写混合的标识符的第一个单词。
在大小写混合的标识符的开头,不要大写任何首字母缩略词的任何字符,无论其长度如何。
名为xmlStream的参数是一个长首字母缩略词(xml)用作大小写混合的标识符的第一个单词的示例。名为dbServerName的参数是一个短首字母缩写词(db)用作大小写混合的标识符的第一个单词的示例。
rqenqsqc2#
个人喜好。
我倾向于这样做,只是因为它不能很好地与其他单词合并,比如,
XMLHTTPParser
,与XmlHttpParser
相比。做任何让你感觉良好的事情,但要以标准的方式去做。pgpifvop3#
这是我喜欢的,这是Java的:类以大写字母开头,字段以小写字母开头,而首字母缩略词不影响这一点。会导致这样的结果,
字符串
问题是,如果你试图应用一个规则,你总是大写的首字母缩略词,甚至首字母缩略词,而不管它是一个字段或类名,你会得到奇怪的东西,如,
型
换句话说,该字段以小写字母开头的规则与假设的大写字母缩略词规则相矛盾。你不能两者都用。
甚至Java SDK也有这两种情况的例子,在一个类名中:
HttpURLConnection
。你会认为它要么是HTTPURLConnection
要么是HttpUrlConnection
。pexxcrt24#
一般来说,将首字母缩略词与整个单词大小写相同是最直观的,原因如下。
1.它有助于避免记忆一堆特殊规则(例如上面的MS指南)
1.特定术语的大小写可能会随着时间的推移或在个人解释之间发生变化,例如
posix
、unix
、regex
、radar
、scuba
、laser
和email
1.否则,当您需要处理(和/或合并)
miniiOSLayout
、SSHHTTPSSession
、CPUURLLinkC
和schemaeBay等技术术语时,它可能会在视觉上变得笨拙(假设这些特定示例不太可能,它们有助于说明问题)1.如果语言对不同的东西使用不同的大小写,比如大写
AClassName
而不是anObjectName
,它消除了一些混乱httpUrl
看起来很傻。但是你写的代码越多,你就越有可能自己意识到上面的几点。虽然这本身并不是一件大事,但很多小事情会累积起来,让你对工作感到沮丧。ycl3bljg5#
我们没有硬性规定,但我们通常不使用驼峰式缩写。有几个超过三个字母的是,但大多数不是。
nbysray56#
一般来说,我们的首字母缩略词是PascalCased或CamelCased。
一些例外情况:
lyr7nygr7#
也取决于缩略词的长度。
DB->看起来不错
字符串
HTTP->看起来很奇怪
型
除了规则:
所以,要做到前后一致,清晰可辨。
jum4pzuy8#
TL'DR
根据经验,您应该首选
MyUrlClass
,而不是MyURLClass
。约定
每种语言都有自己的风格指南。
对于Java:
对于4个字母以上的首字母缩略词,请使用大小写混合。标准库就是这样做的,而且它很有意义。
对于3个字母的首字母缩写,您可以像JCL一样使用全部大写,或者像.NET Framework一样使用混合大小写。无论如何,保持一致。
对于2个字母的首字母缩写,请全部大写。
对于2个字母的缩写,Java并没有真正的标准,但我建议使用混合大小写,除非与其他名称的一致性会使所有大写看起来更好。
如果你来到这里,认为一个缩写词的每个字母都是一个不同的词,那就再想想吧
如果这是你的推理,分析一下:
通过将每个字母视为一个不同的单词,一个名称类
XMLDBParser
(PascalCase中)**以保持一致性,**将具有看起来像xMLDBParser
(camelCase中)的标识符。这和命名约定没有任何意义。