Сокращения в CamelCase [закрыто]
у меня есть сомнения насчет CamelCase. Предположим, у вас есть эта аббревиатура:Unesco = United Nations Educational, Scientific and Cultural Organization.
вы должны написать: unitedNationsEducationalScientificAndCulturalOrganization
но что, если вам нужно написать аббревиатуру? Что-то вроде:
getUnescoProperties();
правильно ли так писать? getUnescoProperties() OR getUNESCOProperties();
8 ответов
некоторые рекомендации Microsoft написала о camelCase
являются:
при использовании аббревиатур используйте случай Паскаля или случай верблюда для аббревиатур длиной более двух символов. Например, используйте
HtmlButton
илиhtmlButton
. Тем не менее, вы должны заглавными буквами аббревиатур, которые состоят только из двух символов, таких какSystem.IO
вместоSystem.Io
.не используйте сокращения в идентификаторах или именах параметров. Если вы должны использовать аббревиатуры, используйте camel case для аббревиатуры, состоящие более чем из двух символов, даже если это противоречит стандартной аббревиатуре слова.
подводим итоги:
когда вы используете аббревиатуру или аббревиатуру длиной в два символа, поместите их все в шапки;
когда аббревиатура длиннее двух символов, используйте заглавную для первого символа.
Итак, в вашем конкретном случае, getUnescoProperties()
является правильным.
есть законная критика советы Microsoft из принятого ответа.
- непоследовательная обработка аббревиатур / инициализмов в зависимости от количества символов:
-
playerID
vsplayerId
vsplayerIdentifier
.
-
- вопрос о том, следует ли по-прежнему использовать двухбуквенные аббревиатуры, если они появляются в начале идентификатора:
-
USTaxes
vsusTaxes
-
- трудность в различении нескольких аббревиатур:
- то есть
USID
vsusId
(илиparseDBMXML
в Примере Википедии).
- то есть
поэтому я опубликую этот ответ в качестве альтернативы принятому ответу. Голоса могут решать. Все аббревиатуры должны рассматриваться последовательно; аббревиатуры должны рассматриваться как любое другое слово. Цитирую Википедию:
...некоторые программисты предпочитают относиться к аббревиатурам как к строчным словам...
поэтому я повторяю вопрос ОП, я согласен с принятым ответом; это правильно:getUnescoProperties()
но я думаю, что пришел бы к другому выводу в этих примерах:
-
US Taxes
→usTaxes
-
Player ID
→playerId
поэтому голосуйте за этот ответ, если вы считаете, что двухбуквенные аббревиатуры следует рассматривать как другие акронимы.
случай верблюда-это соглашение, а не спецификация. Так что, я думаю, народное мнение правит.
и при поиске "популярного" ответа в существующем коде или разметке, возможно, принятый ответ получил его правильно.
- см. "EDXML" в этом XML schema
- см. "SFAS158" в этом по XBRL-схемы
во-первых, я должен пояснить, что Я не носитель английского языка, поэтому мое утверждение о грамматике английского языка может быть просто неправильным. Если вы обнаружите такие ошибки, то пожалуйста, дайте мне знать, и я буду очень благодарен.
наилучшей практикой для аббревиатур было бы избегать аббревиатур как можно больше.
Во всяком случае, это не так, потому что acronym UNESCO
более знакомо, чем полное имя UnitedNationsEducationalScientificAndCulturalOrganization
.
тогда, я думаю,UNESCO
больше смысла, чем Unesco
потому что просто это ближе к реальной форме жизни, настолько более знакомой. У меня были некоторые проблемы, чтобы выяснить, что слово Unesco
на самом деле означает.
в качестве еще одного примера подумайте о Arc
. Это звучит как кривая вокруг круга, но в Rust это означает Atomically Reference Counted
. Если это было написано как ARC
, по крайней мере, читатели признали бы, что это слово является аббревиатурой чего-то другого, а не своего рода кривой.
современные программы написаны в основном для человека читатели газеты. затем эти правила именования должны быть установлены для читаемости вместо обработки или анализа машины.
в этой перспективе мы теряем некоторую читаемость, используя Unesco
над UNESCO
ничего не получая.
и для любых других случаев, я думаю, просто следуя простые английские правила аббревиатуры (или Конвенции) вполне достаточно для большинства случаев для лучшей читабельности.
getUnescoProperties()
должно быть лучшим решением...
когда это возможно, просто следуйте pure camelCase
, когда у вас есть аббревиатуры, просто дайте им верхний регистр, когда это возможно, иначе go camelCase
.
обычно в OO переменные программирования должны начинаться с буквы нижнего регистра (lowerCamelCase
) и класс должен начинаться с буквы верхнего регистра (UpperCamelCase
).
когда сомневаешься, просто иди чистым camelCase
;)
parseXML
- штраф, parseXml
тоже camelCase
XMLHTTPRequest
должно быть XmlHttpRequest
или xmlHttpRequest
нет способа пойти с последующими аббревиатурами верхнего регистра, это окончательно не ясно для всех тестовых случаев.
например,
как Вы читаете это слово HTTPSSLRequest
, HTTP + SSL
или HTTPS + SL
(это ничего не значит, но...), в этом случае следуйте конвенции camel case и перейдите к httpSslRequest
или httpsSlRequest
, может быть, это уже не приятно, но это, безусловно, более понятно.
чтобы конвертировать в CamelCase, есть также (почти) детерминированный алгоритм случая верблюда Google:
начиная с прозаической формы названия:
- преобразуйте фразу в простой ASCII и удалите все апострофы. Например, "алгоритм Мюллера" может стать " Мюллером алгоритм."
- разделите этот результат на слова, разделив на пробелы и остальные знаки препинания (обычно дефисы).
- рекомендуется: если какое-либо слово уже имеет обычный случай верблюда внешний вид в обычном использовании, разделить его на составные части (например, "AdWords" становится "рекламными словами"). Заметьте, что слово такое поскольку " iOS " на самом деле не в верблюжьем случае как таковом; он бросает вызов любому конвенция, поэтому данная рекомендация не применяется.
- теперь в нижнем регистре все (включая аббревиатуры), а затем только в верхнем регистре первый символ:
- ... каждое слово, чтобы произвести верхний дело верблюда, или
- ... каждое слово, кроме первого, выход нижний регистр
- наконец, объединить все слова в один идентификатор.
обратите внимание, что корпус оригинальный текст почти полностью оставленный без внимания.
в следующих примерах "XML HTTP-запрос" правильно преобразуется в XmlHttpRequest, XMLHTTPRequest неверен.
здесь руководство по стилю JavaScript airbnb в github с большим количеством звезд (~57.5 k в данный момент) и руководствами о сокращения что сказать:
сокращения людях. всегда должно быть все с большой буквы, или все в нижнем регистре.
почему? Имена предназначены для удобства чтения, а не для успокоения компьютерного алгоритма.
// bad
import SmsContainer from './containers/SmsContainer';
// bad
const HttpRequests = [
// ...
];
// good
import SMSContainer from './containers/SMSContainer';
// good
const HTTPRequests = [
// ...
];
// also good
const httpRequests = [
// ...
];
// best
import TextMessageContainer from './containers/TextMessageContainer';
// best
const requests = [
// ...
];
в настоящее время я использую следующие правила:
заглавный случай для аббревиатур:
XMLHTTPRequest
,xmlHTTPRequest
,requestIPAddress
.Верблюжий чехол для аббревиатур:
ID[entifier]
,Exe[cutable]
,App[lication]
.
ID
является исключением, извините, но правда.
когда я вижу заглавную букву, Я принимаю аббревиатуру, то есть отдельное слово для каждой буквы. Сокращений нет отдельных слов для каждой буквы, поэтому я использую верблюд случай.
XMLHTTPRequest
неоднозначно, но это редкий случай, и это не так двусмысленно, так что все в порядке, правила и логика важнее красоты.
руководство по стилю JavaScript Airbnb немного говорит об этом. В основном:
// bad
const HttpRequests = [ req ];
// good
const httpRequests = [ req ];
// also good
const HTTPRequests = [ req ];
поскольку я обычно читаю ведущую заглавную букву как класс, я склонен избегать этого. В конце концов, это все предпочтения.