Аббревиатуры в CamelCase [закрыто]



у меня есть сомнения по поводу CamelCase. Предположим, у вас есть эта аббревиатура:Unesco = United Nations Educational, Scientific and Cultural Organization.



вы должны написать: unitedNationsEducationalScientificAndCulturalOrganization



но что, если вам нужно написать аббревиатуру? Что-то вроде:



getUnescoProperties();


правильно ли так писать? getUnescoProperties() OR getUNESCOProperties();

1726   8  

8 ответов:

некоторые рекомендации Microsoft написала о camelCase являются:

при использовании аббревиатур используйте регистр Паскаля или регистр верблюда для аббревиатур длиной более двух символов. Например, используйте HtmlButton или htmlButton. Тем не менее, вы должны заглавными буквами аббревиатуры, которые состоят только из двух символов, таких как System.IO вместо System.Io.

не используйте аббревиатуры в идентификаторах или именах параметров. Если вы должны использовать сокращения, используйте случай верблюда для аббревиатуры, состоящие более чем из двух знаков, даже если это противоречит стандартной аббревиатуре слова.

подводим итоги:

  • когда вы используете аббревиатуру или аббревиатуру длиной в два символа, поместите их все в шапки;

  • если аббревиатура длиннее двух символов, используйте заглавную букву для первого символа.

Итак, в вашем конкретном случае, getUnescoProperties() является правильным.

есть законные критические замечания советы Microsoft из принятого ответа.

  • непоследовательная трактовка аббревиатур / инициализмов в зависимости от количества символов:
    • playerID vs playerId vs playerIdentifier.
  • вопрос о том, должны ли двухбуквенные аббревиатуры по-прежнему быть заглавными, если они появляются в начале идентификатора:
    • USTaxes vs usTaxes
  • трудность в различении нескольких аббревиатур:
    • т. е. USID vs usId (или parseDBMXML в Примере Википедии).

поэтому я опубликую этот ответ в качестве альтернативы принятому ответу. Голоса могут решить. Все аббревиатуры должны рассматриваться последовательно; аббревиатуры должны рассматриваться как любое другое слово. Цитирую Википедию:

...некоторые программисты предпочитают относиться к аббревиатурам так, как если бы они были строчными словами...

так что я re: OP вопрос, я согласен с принятым ответом; это правильно:getUnescoProperties()

но я думаю, что пришел бы к другому выводу в этих примерах:

  • US TaxesusTaxes
  • Player IDplayerId

так что голосуйте за этот ответ, если вы думаете, что двухбуквенные аббревиатуры следует рассматривать как другие акронимы.

Camel Case-это соглашение, а не спецификация. Поэтому я предполагаю, что правила популярного мнения.

и в поисках "популярного" ответа в существующем коде или разметке, возможно, принятый ответ получил его правильно.

во-первых, я должен пояснить, что Я не носитель английского языка, поэтому мое утверждение о грамматике английского языка может быть просто неправильным. Если вы обнаружите такие ошибки, то пожалуйста, дайте мне знать, и я буду очень благодарен.


наилучшей практикой для аббревиатуры было бы избегать аббревиатур как можно больше. Во всяком случае, это не так, потому что аббревиатура UNESCO более знакомо, чем полное имя UnitedNationsEducationalScientificAndCulturalOrganization.

тогда, я думаю,UNESCO больше смысла, чем Unesco потому что просто это ближе к реальной форме жизни, поэтому более знакомо. У меня были некоторые проблемы, чтобы выяснить, что слово Unesco на самом деле означает.

в качестве другого примера, думаете об Arc. Это звучит как кривая вокруг круга, но в ржавчине это означает Atomically Reference Counted. Если это было написано как ARC, по крайней мере, читатели признают, что это слово является аббревиатурой чего-то другого, а не какой-то кривой.

современные программы написаны в основном для человека читатели газеты. затем эти правила именования должны быть установлены для читаемости а не машинная обработка или анализ.

в этой перспективе мы теряем некоторую читаемость с помощью Unesco over UNESCO пока ничего не набирает.

и для любых других случаев, я думаю, просто после простой английский акроним правила (или Конвенции) достаточно в большинстве случаев для лучшей читабельности.

getUnescoProperties() должно быть лучшим решением...

когда это возможно, просто следуйте за чистым camelCase, когда у вас есть акронимы пусть только верхний регистр, когда это возможно, в противном случае camelCase.

обычно в OO переменные программирования должны начинаться со строчной буквы (lowerCamelCase) и класс должен начинаться с прописной буквы (UpperCamelCase).

когда сомневаешься, просто иди чистым camelCase ;)

parseXML - штраф, parseXml тоже camelCase

XMLHTTPRequest должно быть XmlHttpRequest или xmlHttpRequest нет способа пойти с последующими аббревиатурами верхнего регистра, это окончательно не ясно для всех тестовых случаев.

например, как Вы читаете это слово HTTPSSLRequest,HTTP + SSL или HTTPS + SL (это ничего не значит, но...), в этом случае следуйте конвенции camel case и идите за httpSslRequest или httpsSlRequest, может быть, это уже не приятно, но это, безусловно, более понятно.

чтобы конвертировать в CamelCase, есть также Google (почти) детерминированный алгоритм верблюда:

начиная с прозаической формы имени:

  1. преобразуйте фразу в обычный ASCII и удалите все апострофы. Например, "алгоритм Мюллера" может стать " Мюллерами алгоритм."
  2. разделите этот результат на слова, разбивая на пробелы и остальные знаки препинания (обычно дефисы).
    1. рекомендуется: если какое-либо слово уже имеет обычный случай верблюда возникновение в общем использовании, разделите это в свои составные части (например, "AdWords" становится "ad words"). Заметьте, что слово такое поскольку " iOS " на самом деле не является верблюжьим случаем как таковым; он бросает вызов любому конвенция, поэтому данная рекомендация не применяется.
  3. теперь все в нижнем регистре (включая аббревиатуры), а затем только в верхнем регистре первый символ:
    1. ... каждое слово, чтобы произвести верхний случай верблюда, или
    2. ... каждое слово, кроме первого, выход нижний регистр
  4. наконец, объединить все слова в один идентификатор.

обратите внимание, что корпус оригинальный текст почти полностью оставленный без внимания.

в следующих примерах "HTTP-запрос XML" правильно преобразован в 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 = [
  // ...
];

в настоящее время я использую следующие правила:

  1. заглавные буквы для аббревиатур:XMLHTTPRequest,xmlHTTPRequest,requestIPAddress.

  2. случай верблюда для сокращений:ID[entifier],Exe[cutable],App[lication].

ID это исключение, извините, но это правда.

когда я вижу заглавную букву, Я принимаю аббревиатуру, т. е. отдельное слово для каждой буквы. Сокращения не имеют отдельных слов для каждой буквы, поэтому я использую camel случай.

XMLHTTPRequest неоднозначно, но это редкий случай, и это не так уж и неоднозначно, так что все в порядке, правила и логика важнее красоты.

руководство по стилю JavaScript Airbnb говорит немного об этом. В основном:

// bad
const HttpRequests = [ req ];

// good
const httpRequests = [ req ];

// also good
const HTTPRequests = [ req ];

поскольку я обычно читаю ведущую заглавную букву как класс, я склонен избегать этого. В конце концов, это все предпочтения.

Comments

    Ничего не найдено.