- PVSM.RU - https://www.pvsm.ru -
Доброго времени суток уважаемые читатели. Буквально недавно я наткнулся на очень интересный и необычный проект на Github, который посвящен замечательному языку программирования JavaScript и называется Idiomatic.js [1].
Данный проект — попытка авторов создать спецификацию, определяющую список норм и правил написания кода на JavaScript, некий «кодекс чести» для программистов. В написании данного документа приняли участие свыше 20 матерых разработчиков. Предложенная специфика уже переведена на 12 языков. Idiomatic.js уже набрал 4500 старов, 500 форков и даже привлек внимание у компании Mozilla, поскольку ссылка на него уже размещена на главной странице MDN Javascript [2] в разделе «Инструменты и дополнительные ресурсы».
Приведу несколько цитат от авторов проекта:
«Все последующее является списком норм, которыми я руководствуюсь при написании кода, чьим автором я являюсь; любой вклад в проекты, которые я создал, должен отвечать этим нормам. Я не намерен навязывать свои предпочтения в стиле другим людям или проектам; собственный стиль написания кода достоин уважения.»
Rick Waldron [3]
«Чтобы быть хорошим управляющим проекта, нужно понимать, что писать код для себя это Плохая Идея. Если тысячи людей используют ваш код, то пишите свой код максимально понятно, а не на собственное усмотрение.»
Idan Gazit [4]
«Споры по поводу стилей бессмысленны. У вас должно быть руководство по стилю и вы должны следовать ему.»
Rebecca Murphey
Пример документа:
// if/else/for/while/try всегда разделяются пробелом,
// это улучшает читабельность
// 2.A.1.1
// Пример неразборчивого синтаксиса
if(condition) doSomething();
while(condition) iterating++;
for(var i=0;i<100;i++) someInterativeFn();
// 2.A.1.1
// Используйте пробелы для того, чтобы улучшить читабельность
if ( condition ) {
// выражения
}
while ( condition ) {
// выражения
}
for ( var i = 0; i < 100; i++ ) {
// выражения
}
// Еще лучше:
var i,
length = 100;
for ( i = 0; i < length; i++ ) {
// выражения
}
// Или...
var i = 0,
length = 100;
for ( ; i < length; i++ ) {
// выражения
}
var prop;
for ( prop in object ) {
// выражения
}
if ( true ) {
// выражения
} else {
// выражения
}
// 2.B.1.1
// Переменные
var foo = "bar",
num = 1,
undef;
// Объявление литералов:
var array = [],
object = {};
// 2.B.1.2
// Использование только одного `var` на одну область видимости улучшает читабельность
// и упорядочивает блок объявления переменных (также сохраняет вам несколько нажатий клавиш)
// Неправильно
var foo = "";
var bar = "";
var qux;
// Правильно
var foo = "",
bar = "",
quux;
// или...
var // комментарий для переменных
foo = "",
bar = "",
quux;
// 2.B.1.3
// Оператор var всегда должен быть в начале области видимости (функции).
// То же самое верно для констант и оператора let из ECMAScript 6.
// Неправильно
function foo() {
// выражения
var bar = "",
qux;
}
// Правильно
function foo() {
var bar = "",
qux;
// все выражения после объявления переменных.
}
// 2.B.2.1
// Объявление Именованных Функций
function foo( arg1, argN ) {
}
// Использование
foo( arg1, argN );
// 2.B.2.2
// Объявление Именованных Функций
function square( number ) {
return number * number;
}
// Использование
square( 10 );
// Очень надуманный стиль передачи параметров
function square( number, callback ) {
callback( number * number );
}
square( 10, function( square ) {
// обратный вызов
});
// 2.B.2.3
// Функция-Выражение
var square = function( number ) {
// вернуть что-то ценное и важное
return number * number;
};
// Функция-Выражение с Идентификатором
// Такое объявление хорошо тем, что функция может вызвать сама себя
// и ее имя будет видно в стеке вызова функций:
var factorial = function factorial( number ) {
if ( number < 2 ) {
return 1;
}
return number * factorial( number-1 );
};
// 2.B.2.4
// Объявление Конструктора
function FooBar( options ) {
this.options = options;
}
// Использование
var fooBar = new FooBar({ a: "alpha" });
fooBar.options;
// { a: "alpha" }
На мой взгляд проект достоин внимания широкой публики. Я считаю, что массовое соблюдение подобных нормативов улучшит и упорядочит разработку, более того «дисциплина» написания, возможно повлияет на сокращение «быдлокода» в целом. Если идея распространиться в нео сфере, то подобная специфика появиться и для других языков программирования, а спустя время даже некачественные сайты обучающие кодингу, на которых регулярно обучаются новички, будут содержать корректный консистентный идиоматический код.
Я не являюсь программистом с богатым опытом, но если Вы такой, то вместе с авторами проекта призываю Вас принять участие в улучшении этого «живого документа»: fork, clone, branch, commit, push, pull request.
Да будет же мир кода лучше! Спасибо всем за внимание.
Автор: ilusha_sergeevich
Источник [5]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/javascript/35535
Ссылки в тексте:
[1] Idiomatic.js: https://github.com/rwldrn/idiomatic.js
[2] главной странице MDN Javascript: https://developer.mozilla.org/ru/docs/JavaScript
[3] Rick Waldron: https://github.com/rwldrn
[4] Idan Gazit: https://github.com/idan
[5] Источник: http://habrahabr.ru/post/181426/
Нажмите здесь для печати.