Показать сообщение отдельно
  #1 (permalink)  
Старый 27.10.2009, 22:54
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

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

Вот, просто мысли в слух

Последний раз редактировалось Octane, 28.10.2009 в 13:50.
Ответить с цитированием