|
JavaScript style guide, JSLint, Strict Warnings
Наверное, у всех есть какой-то свой собственный стиль написания кода. Некоторое время назад мне пришлось адаптироваться к принятому в проекте стилю, который сильно отличался от моего, первое время было очень неудобно, потом привык, но не очень нравилось. В итоге выработался следующий стиль кодирования:
FD: function callee(arg) { // … } • между именем функции и открывающей скобочкой нет пробела • открывающая фигурная скобка в той же строке • закрывающая фигурная скобка на уровне function FE: var callee = function(arg) { // … }; • между function и открывающей скобочкой нет пробела Объект: var obj = { property: value, method: function(arg) { // … } }; • двоеточие не отделяется пробелом от имени свойства или метода Ветвления: if(…) { // … } else if(…) { // … } else { // … } • else/else-if yачинаются с новой строки • пробела между if и открывающей скобочкой нет Циклы: while(…) { // … } do { // … } while(…); for(…) { // … } • for только в качестве for-in Конструкторы: (new Date).getTime() • скобки функции-конструктора не ставятся, когда возможно Операторы: typeof variable if(!variable && "property" in object) {…} var a = b ? c : d; • минимум скобок • разделяются пробелами, но не отбиваются пробелами от скобок Переменные: var a = 1, b = 2, c = 3; var key, obj = {…}; for(key in obj) {…} var a; while(…) { a = i; } function(event) { event = event || window.event; var target = …; } • один var для нескольких переменных • если до этого есть var, писать еще один внутри for ни к чему • var не ставится внутри цикла (знаю, что интерпритированы они будут сразу) • var не ставится, где попало, только в начале логических блоков • существующие переменные не переопределяются с помощью var Другое: • все имена в camelStyle • для отступов используется знак табуляции • избавляемся от strict warnings в консоли Firefox • не опускаем фигурные скобки _____________________________ Только недавно догнал, что Firefox ругается только на такие функции: function() { if(…) { return …; } } а не на все функции, которые ничего не возвращают :) На некоторые вещи ругается JSLint, думаю, стоит ли следовать всем рекомендациям или это никому ненужные ограничения? Ссылки: MDC: JavaScript style guide JSLint — The JavaScript Code Quality Tool Вот, просто мысли в слух :) |
У меня так же, кроме:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
И частично: Цитата:
Цитата:
|
У нас на первом курсе в первом семестре преподаватель не принимал плохо оформленные программы. Тогда все бесились, но щас я ему очень даже благодарен -- основные принципы в подкорке мозга зашиты. Собственно отличия, как правило, у всех только где ставить открывающую фигурную скобку, отступы табуляциями или пробелами, наименование переменных и еще может что по мелочи. Поэтому некоторые пункты удивляют.
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
Цитата:
Цитата:
i++; ++j; a += -1 + k--; |
Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
! variable ? Без пробела обычно пишу, поправил. |
Мой стиль вы все прекрасно видели:)
Никаких пробелов, минимум переноса строк и скобок... Не завидую наследнику моего кода:D Для таких ситуаций многие IDE имеют функцию форматирования. В DW для JS этого нет:( Не понимаю людей, которые вставляют пробелы и переносы везде, где можно... Окно на весь экран, а смысла никакого не видно... |
Цитата:
function foo() {...} // описание функции с именем foo(); // вызов (function() {}); // без проблела - похоже на вызов (function () {}); // а так - описание функции, исчезло только имя Вот тут давно тоже было. Что касается style-guide - это очень важная тема. Здесь приоритеты следующие (по убывающей, первые пункты - приоритет выше): 1. Style-guide принятый локально в компании. Главное - соблюдать единообразие кода. 2. Официальный Style-guide технологии. Профессиональный код (на международном уровне) должен выглядеть так. Автор технологии имеет право определять style-guide (в идеале, советуясь со сторонними мнениями и учитывая пожелания). 3. Локальная привычка. Любительский уровень, как правило используется новичками при начальном изучении. Также, может использоваться псевдо-гуру, которые хотят в этом моменте обособиться (aka, "мы не следуем за толпой и всякими там стайл-гайдами"), что является ещё большим пафосом; как правило - тоже любитель, знающий технологию ненамного глубже посредственного программера. Однако, первый пункт (с высшим приоритетом), может выбираться также конкретным человеком, исходя из своей локальной привычки и, если такой код сильно расходится с пунктом (2) - это неправильно уже. Если не задан локальный стиль в компании, то стоит придерживаться официального стиля технологии - независимо от локальных привычек. Так, например, я привык к camelCase-у в именах переменных, но, программируя на Python-e, я использую underscore_case (т.к. это рекомендация официального style-guide-а Python) - несмотря на мою привычку из ES. |
А как лучше:
if(typeof addEventListener != "undefined") {…} или if(typeof window.addEventListener != "undefined") {…} или if(window.addEventListener) {…} или if("addEventListener" in window) {…} ? Dmitry A. Soshnikov, можешь объяснить, почему и как работает такая конструкция: typeof X // "undefined" когда переменная X нигде не определена? Нормально ли так делать? |
Цитата:
|
Часовой пояс GMT +3, время: 16:58. |
|