Каков наилучший стиль оформления для javascript? Зачем?
Одним из аспектов javascript, о котором трудно найти информацию, является практика использования оболочки. Под практикой корпусов я подразумеваю, какой стиль корпусов (например, case-case, pascal-case и т. Д.) Следует использовать для каких элементов (конструкторы, частные функции, публичные функции).
Единственное правило, которое я услышал, было из лекции Дугласа Крокфорда о театре YUI, в которой говорилось, что конструкторы должны быть единственными функциями, которые начинаются с заглавной буквы.
Кроме того, кажется, что в javascript не так уж много стандартов для оболочек, которым следуют люди.
Кто-нибудь знает какие-либо передовые практики для javascript и почему их целесообразно использовать?
Также вы придерживаетесь стиля оболочки с вашими файлами.js?
6 ответов
Я предпочитаю PascalCase для конструкторов и camelCase для всего остального. Это стиль, который использует стандартная библиотека JS, и хорошо... каждая среда JS, которую я видел до сих пор:)
И я использую соглашение об именах all_lowercase для всех файлов, подаваемых из Интернета. Существуют некоторые нечувствительные к регистру файловые системы.
Базовый язык использует InitialCaps для конструкторов (например, Object, Date, Number, RegExp) и camelCase для методов и свойств (например,thing.toString(), amount.valueOf(), regexp.ignoreCase). Это соглашение также соблюдается в спецификациях и реализациях DOM (например, HTMLElement.setAttribute()). Поэтому имеет смысл принять такое же соглашение, или вы получите ужасную путаницу стилей, таких как:
var number_of_fish_requested = document.getElementById("fish").value;
var fish_count = parseInt(number_of_fish_requested, 10);
что просто сбивает с толку, не только печатать, но, что гораздо важнее, читать.
(Вы тратите больше времени на чтение кода, пытаясь отладить или изменить его, чем когда-либо, прежде чем писать его.)
До сих пор я видел очень большое разнообразие стандартов обсадных труб.
Насколько я понимаю, я использую стилизацию C# для написания своего кода JavaScript. Я часто использую классы (ну, в общем, функции как классы, и обычно у них нет независимых функций). Итак, я использую PascalCase для имен классов, открытых методов, свойств и всех глобальных переменных и camelCase для аргументов, локальных переменных и частных функций. Это как-то отражает мою общую среду, помогая различать области видимости переменных. Я также стараюсь хранить свои функции класса в отдельном файле с тем же именем, что и у моего ClassName (ClassName.js, ClassName.min.js).
Это было о моем подходе.
Я также заметил, что программисты Java следуют правилам Java (а стиль написания напоминает язык Java). Программисты Ruby on Rails следуют своим собственным стандартам именования, таким как underscore_separated_var_name
,
Кроме того, как вы упомянули, существует тенденция часто использовать pascalCase для именования в очень популярных средах, авторы которых представляют различные сообщества, такие как сообщество Linux/Open Source и разработчики Microsoft (jQuery, knockout.js, JSJaC и т. Д.).
Я должен отметить, что ни один из этих методов не является неправильным или правильным, когда дело доходит до JS. Основная цель ваших соглашений об именах и структурировании файлов - удобочитаемость. Если вы будете последовательны, то в будущем вы и ваши коллеги-разработчики быстро поймете и освоите ваш код.
Я предпочитаю camelCase для всего, кроме конструкторов. Причина (и я полагаю, что именно поэтому г-н Крокфорд также предложил это) заключается в том, что в других языках, таких как Java, соглашение использует заглавные буквы в ваших классах, для чего и используются конструкторы.
Это мои $0,02.
Все строчные буквы с разделителями подчеркивания легче всего читать; это следует за естественным языком. "Лучший" приведет вас к священной войне; реальность такова, что дело не так важно, как другие вопросы дизайна, но это простая тема для поляризации.
ALongButNotReallyReadableIdentifier
an_even_longer_but_completely_readable_identifier
Принятый ответ верен, но есть некоторые исключения. В window.JSON и window.XMLHttpRequest термин пишется с большой буквы.
Также большинство людей используют PascalCase для объектов типа enum в Javascript и внутри заглавных значений. Иногда пространства имен выполняются также в PascalCase.
пример: MyCompany.Web.UI.MyComponent.ThemeOption = {ЧЕРНЫЙ: 0, СЕРЕБРО: 1, СИНИЙ: 2}