Ðод должен бÑÑÑ Ð¼Ð°ÐºÑималÑно ÑиÑаемÑм и понÑÑнÑм.
ÐÑо и еÑÑÑ Ð¸ÑкÑÑÑÑво пÑогÑаммиÑÐ¾Ð²Ð°Ð½Ð¸Ñ â взÑÑÑ ÑложнÑÑ Ð·Ð°Ð´Ð°ÑÑ Ð¸ напиÑаÑÑ Ñакой код Ð´Ð»Ñ ÐµÑ ÑеÑениÑ, коÑоÑÑй и пÑавилÑно ÑабоÑаеÑ, и легко ÑиÑаеÑÑÑ, понÑÑен Ð´Ð»Ñ Ð»Ñдей. ÐÐ»Ñ ÑÑого нÑжен Ñ Ð¾ÑоÑий ÑÑÐ¸Ð»Ñ Ð½Ð°Ð¿Ð¸ÑÐ°Ð½Ð¸Ñ ÐºÐ¾Ð´Ð°. Ð ÑÑой главе Ð¼Ñ ÑаÑÑмоÑÑим ÑоÑÑавлÑÑÑие Ñакого ÑÑилÑ.
СинÑакÑиÑ
ШпаÑгалка Ñ Ð¿Ñавилами ÑинÑакÑиÑа (подÑобнее ÑмоÑÑиÑе ниже по ÑекÑÑÑ):
Ðе вÑÑ Ð·Ð´ÐµÑÑ Ð¾Ð´Ð½Ð¾Ð·Ð½Ð°Ñно, Ñак ÑÑо ÑазбеÑÑм ÑÑи пÑавила подÑобнее.
ÐдеÑÑ Ð½ÐµÑ Ð¶ÐµÐ»ÐµÐ·Ð½ÑÑ Ð¿Ñавил. ÐÑо ÑÑилевÑе пÑедпоÑÑениÑ, а не ÑелигиознÑе догмÑ.
ФигÑÑнÑе Ñкобки
РболÑÑинÑÑве JavaScript пÑоекÑов ÑигÑÑнÑе Ñкобки пиÑÑÑÑÑ Ð² Ñак назÑваемом «египеÑÑком» ÑÑиле Ñ Ð¾ÑкÑÑваÑÑей Ñкобкой на Ñой же ÑÑÑоке, ÑÑо и ÑооÑвеÑÑÑвÑÑÑее клÑÑевое Ñлово â не на новой ÑÑÑоке. ÐеÑед оÑкÑÑваÑÑей Ñкобкой должен бÑÑÑ Ð¿Ñобел, как здеÑÑ:
if (condition) {
// делай ÑÑо
// ...и ÑÑо
// ...и поÑом ÑÑо
}
Ð ÑÑо еÑли Ñ Ð½Ð°Ñ Ð¾Ð´Ð½Ð¾ÑÑÑоÑÐ½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑ, Ñипа if (condition) doSomething(), Ð´Ð¾Ð»Ð¶Ð½Ñ Ð»Ð¸ Ð¼Ñ Ð¸ÑполÑзоваÑÑ ÑигÑÑнÑе Ñкобки?
ÐÐ¾Ñ ÑазлиÑнÑе ваÑианÑÑ ÑаÑÑÑановки Ñкобок Ñ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑиÑми, поÑмоÑÑиÑе Ñами, какой вам кажеÑÑÑ ÑамÑм ÑиÑаемÑм:
- ð Такое иногда бÑÐ²Ð°ÐµÑ Ð² коде наÑинаÑÑиÑ
. ÐлоÑ
о, ÑигÑÑнÑе Ñкобки не нÑжнÑ:
if (n < 0) {alert(`СÑÐµÐ¿ÐµÐ½Ñ ${n} не поддеÑживаеÑÑÑ`);} - ð Ðикогда не ÑазделÑйÑе ÑÑÑоки без ÑигÑÑнÑÑ
Ñкобок, можно ненаÑоком ÑделаÑÑ Ð¾ÑÐ¸Ð±ÐºÑ Ð¿Ñи добавлении ÑÑÑок:
if (n < 0) alert(`СÑÐµÐ¿ÐµÐ½Ñ ${n} не поддеÑживаеÑÑÑ`); - ð Ð Ð¾Ð´Ð½Ñ ÑÑÑÐ¾ÐºÑ Ð±ÐµÐ· Ñкобок â пÑиемлемо, еÑли ÑÑа ÑÑÑока коÑоÑкаÑ:
if (n < 0) alert(`СÑÐµÐ¿ÐµÐ½Ñ ${n} не поддеÑживаеÑÑÑ`); - ð СамÑй лÑÑÑий ваÑианÑ:
if (n < 0) { alert(`СÑÐµÐ¿ÐµÐ½Ñ ${n} не поддеÑживаеÑÑÑ`); }
ÐÐ»Ñ Ð¾ÑÐµÐ½Ñ ÐºÐ¾ÑоÑкого кода допÑÑÑима одна ÑÑÑока. ÐапÑимеÑ: if (cond) return null. Ðо блок кода (поÑледний ваÑианÑ) обÑÑно вÑÑ Ñавно ÑиÑаеÑÑÑ Ð»ÑÑÑе.
Ðлина ÑÑÑоки
ÐикÑо не лÑÐ±Ð¸Ñ ÑиÑаÑÑ Ð´Ð»Ð¸Ð½Ð½Ñе гоÑизонÑалÑнÑе ÑÑÑоки кода. ÐÑÑÑе вÑего ÑазбиваÑÑ Ð¸Ñ , напÑимеÑ:
// обÑаÑнÑе кавÑÑки ` позволÑÑÑ ÑазделÑÑÑ ÑÑÑÐ¾ÐºÑ Ð½Ð° ÑаÑÑи
let str = `
РабоÑÐ°Ñ Ð³ÑÑппа TC39 оÑганизаÑии Ecma International -
ÑÑо гÑÑппа JavaScript-ÑазÑабоÑÑиков, ÑеоÑеÑиков и авÑоÑов движков JavaScript,
коÑоÑÑе вмеÑÑе Ñ ÑообÑеÑÑвом занимаÑÑÑÑ Ð¿Ð¾Ð´Ð´ÐµÑжкой и ÑазвиÑием ÑзÑка JavaScript.
`;
Ðли Ð´Ð»Ñ if:
if (
id === 123 &&
moonPhase === 'Waning Gibbous' &&
zodiacSign === 'Libra'
) {
letTheSorceryBegin();
}
ÐакÑималÑнÑÑ Ð´Ð»Ð¸Ð½Ñ ÑÑÑоки ÑоглаÑовÑваÑÑ Ð² команде. ÐбÑÑно ÑÑо 80 или 120 Ñимволов.
ÐÑÑÑÑпÑ
СÑÑеÑÑвÑÐµÑ Ð´Ð²Ð° Ñипа оÑÑÑÑпов:
-
ÐоÑизонÑалÑнÑе оÑÑÑÑпÑ: 2 или 4 пÑобела.
ÐоÑизонÑалÑнÑй оÑÑÑÑп вÑполнÑеÑÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ 2 или 4 пÑобелов, или Ñимвола ÑабÑлÑÑии (клавиÑа Tab). Ðакой из Ð½Ð¸Ñ Ð²ÑбÑаÑÑ â ÑÑо Ñже на ваÑе ÑÑмоÑÑение. ÐÑÐ¾Ð±ÐµÐ»Ñ Ð±Ð¾Ð»ÑÑе ÑаÑпÑоÑÑÑаненÑ.
Ðдно из пÑеимÑÑеÑÑв пÑобелов над ÑабÑлÑÑией заклÑÑаеÑÑÑ Ð² Ñом, ÑÑо пÑÐ¾Ð±ÐµÐ»Ñ Ð´Ð¾Ð¿ÑÑкаÑÑ Ð±Ð¾Ð»ÐµÐµ гибкие конÑигÑÑаÑии оÑÑÑÑпов, Ñем Ñимвол ÑабÑлÑÑии.
ÐапÑимеÑ, Ð¼Ñ Ð¼Ð¾Ð¶ÐµÐ¼ вÑÑовнÑÑÑ Ð°ÑгÑменÑÑ Ð¾ÑноÑиÑелÑно оÑкÑÑваÑÑей Ñкобки:
show(parameters, aligned, // 5 пÑобелов Ñлева one, after, another ) { // ... } -
ÐеÑÑикалÑнÑе оÑÑÑÑпÑ: пÑÑÑÑе ÑÑÑоки Ð´Ð»Ñ Ñазбивки кода на «логиÑеÑкие блоки».
Ðаже Ð¾Ð´Ð½Ñ ÑÑнкÑÐ¸Ñ ÑаÑÑо можно ÑазделиÑÑ Ð½Ð° логиÑеÑкие блоки. РпÑимеÑе ниже ÑÐ°Ð·Ð´ÐµÐ»ÐµÐ½Ñ Ð¸Ð½Ð¸ÑиализаÑÐ¸Ñ Ð¿ÐµÑеменнÑÑ , оÑновной Ñикл и возвÑаÑаемÑй ÑезÑлÑÑаÑ:
function pow(x, n) { let result = 1; // <-- for (let i = 0; i < n; i++) { result *= x; } // <-- return result; }ÐÑÑавлÑйÑе дополниÑелÑнÑй пеÑевод ÑÑÑоки ÑÑда, где ÑÑо ÑÐ´ÐµÐ»Ð°ÐµÑ ÐºÐ¾Ð´ более ÑиÑаемÑм. Ðе должно бÑÑÑ Ð±Ð¾Ð»ÐµÐµ 9 ÑÑÑок кода подÑÑд без веÑÑикалÑного оÑÑÑÑпа.
ТоÑка Ñ Ð·Ð°Ð¿ÑÑой
ТоÑки Ñ Ð·Ð°Ð¿ÑÑой Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¿ÑиÑÑÑÑÑвоваÑÑ Ð¿Ð¾Ñле каждого вÑÑажениÑ, даже еÑли Ð¸Ñ , казалоÑÑ Ð±Ñ, можно пÑопÑÑÑиÑÑ.
ÐÑÑÑ ÑзÑки, в коÑоÑÑÑ ÑоÑка Ñ Ð·Ð°Ð¿ÑÑой необÑзаÑелÑна и Ñедко иÑполÑзÑеÑÑÑ. Ðднако в JavaScript бÑваÑÑ ÑлÑÑаи, когда пеÑÐµÐ½Ð¾Ñ ÑÑÑоки не инÑеÑпÑеÑиÑÑеÑÑÑ, как ÑоÑка Ñ Ð·Ð°Ð¿ÑÑой, ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑивеÑÑи к оÑибкам. ÐодÑобнее об ÑÑом â в главе о ÑÑÑÑкÑÑÑе кода.
ÐÑли Ð²Ñ â опÑÑнÑй ÑазÑабоÑÑик на JavaScript, Ñо можно вÑбÑаÑÑ ÑÑÐ¸Ð»Ñ ÐºÐ¾Ð´Ð° без ÑоÑек Ñ Ð·Ð°Ð¿ÑÑой, напÑÐ¸Ð¼ÐµÑ StandardJS. Рином ÑлÑÑае, лÑÑÑе бÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑ ÑоÑки Ñ Ð·Ð°Ð¿ÑÑой, ÑÑÐ¾Ð±Ñ Ð¸Ð·Ð±ÐµÐ¶Ð°ÑÑ Ð¿Ð¾Ð´Ð²Ð¾Ð´Ð½ÑÑ ÐºÐ°Ð¼Ð½ÐµÐ¹. ÐолÑÑинÑÑво ÑазÑабоÑÑиков Ð¸Ñ ÑÑавÑÑ.
УÑовни вложенноÑÑи
УÑовней вложенноÑÑи должно бÑÑÑ Ð½ÐµÐ¼Ð½Ð¾Ð³Ð¾.
ÐапÑимеÑ, в Ñикле бÑÐ²Ð°ÐµÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð¾ иÑполÑзоваÑÑ Ð´Ð¸ÑекÑÐ¸Ð²Ñ continue, ÑÑÐ¾Ð±Ñ Ð¸Ð·Ð±ÐµÐ¶Ð°ÑÑ Ð»Ð¸Ñней вложенноÑÑи.
ÐапÑимеÑ, вмеÑÑо Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð²Ð»Ð¾Ð¶ÐµÐ½Ð½Ð¾Ð³Ð¾ ÑÑÐ»Ð¾Ð²Ð¸Ñ if, как здеÑÑ:
for (let i = 0; i < 10; i++) {
if (cond) {
... // <- еÑÑ Ð¾Ð´Ð¸Ð½ ÑÑÐ¾Ð²ÐµÐ½Ñ Ð²Ð»Ð¾Ð¶ÐµÐ½Ð½Ð¾ÑÑи
}
}
ÐÑ Ð¼Ð¾Ð¶ÐµÐ¼ напиÑаÑÑ:
for (let i = 0; i < 10; i++) {
if (!cond) continue;
... // <- Ð½ÐµÑ Ð»Ð¸Ñнего ÑÑÐ¾Ð²Ð½Ñ Ð²Ð»Ð¾Ð¶ÐµÐ½Ð½Ð¾ÑÑи
}
ÐналогиÑÐ½Ð°Ñ ÑиÑÑаÑÐ¸Ñ â Ñ if/else и return.
ÐапÑимеÑ, две нижеÑледÑÑÑие конÑÑÑÑкÑии иденÑиÑнÑ.
ÐеÑваÑ:
function pow(x, n) {
if (n < 0) {
alert("ÐÑÑиÑаÑелÑнÑе знаÑÐµÐ½Ð¸Ñ 'n' не поддеÑживаÑÑÑÑ");
} else {
let result = 1;
for (let i = 0; i < n; i++) {
result *= x;
}
return result;
}
}
ÐÑоÑаÑ:
function pow(x, n) {
if (n < 0) {
alert("ÐÑÑиÑаÑелÑнÑе знаÑÐµÐ½Ð¸Ñ 'n' не поддеÑживаÑÑÑÑ");
return;
}
let result = 1;
for (let i = 0; i < n; i++) {
result *= x;
}
return result;
}
ÐÑоÑой ваÑÐ¸Ð°Ð½Ñ ÑвлÑеÑÑÑ Ð±Ð¾Ð»ÐµÐµ ÑиÑабелÑнÑм, поÑÐ¾Ð¼Ñ ÑÑо «оÑобÑй ÑлÑÑай» n < 0 обÑабаÑÑваеÑÑÑ Ð½Ð° Ñанней ÑÑадии. ÐоÑле пÑовеÑки можно пеÑеÑ
одиÑÑ Ðº «оÑновномÑ» поÑÐ¾ÐºÑ ÐºÐ¾Ð´Ð° без необÑ
одимоÑÑи ÑвелиÑÐµÐ½Ð¸Ñ Ð²Ð»Ð¾Ð¶ÐµÐ½Ð½Ð¾ÑÑи.
РазмеÑение ÑÑнкÑий
ÐÑли Ð²Ñ Ð¿Ð¸ÑеÑе неÑколÑко вÑпомогаÑелÑнÑÑ ÑÑнкÑий, а заÑем иÑполÑзÑемÑй ими код, Ñо ÑÑÑеÑÑвÑÐµÑ ÑÑи ÑпоÑоба оÑганизаÑии ÑÑнкÑий.
-
ÐбÑÑвиÑÑ ÑÑнкÑии пеÑед кодом, коÑоÑÑй Ð¸Ñ Ð²ÑзовеÑ:
// обÑÑвление ÑÑнкÑий function createElement() { ... } function setHandler(elem) { ... } function walkAround() { ... } // код, коÑоÑÑй иÑполÑзÑÐµÑ Ð¸Ñ let elem = createElement(); setHandler(elem); walkAround(); -
СнаÑала код, заÑем ÑÑнкÑии
// код, иÑполÑзÑÑÑий ÑÑнкÑии let elem = createElement(); setHandler(elem); walkAround(); // --- вÑпомогаÑелÑнÑе ÑÑнкÑии --- function createElement() { ... } function setHandler(elem) { ... } function walkAround() { ... } -
СмеÑаннÑй ÑÑилÑ: ÑÑнкÑÐ¸Ñ Ð¾Ð±ÑÑвлÑеÑÑÑ Ñам, где она иÑполÑзÑеÑÑÑ Ð²Ð¿ÐµÑвÑе.
РболÑÑинÑÑве ÑлÑÑаев вÑоÑой ваÑÐ¸Ð°Ð½Ñ ÑвлÑеÑÑÑ Ð¿ÑедпоÑÑиÑелÑнÑм.
ÐÑо поÑомÑ, ÑÑо пÑи ÑÑении кода Ð¼Ñ ÑнаÑала Ñ Ð¾Ñим знаÑÑ, ÑÑо он делаеÑ. ÐÑли ÑнаÑала идÑÑ ÐºÐ¾Ð´, Ñо ÑÑо ÑÑÑ Ð¶Ðµ ÑÑановиÑÑÑ Ð¿Ð¾Ð½ÑÑно. Ð Ñогда, Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ, нам вообÑе не нÑжно бÑÐ´ÐµÑ ÑиÑаÑÑ ÑÑнкÑии, оÑобенно еÑли Ð¸Ñ Ð¸Ð¼ÐµÐ½Ð° Ñ Ð¾ÑоÑо подобÑанÑ.
Ð ÑководÑÑва по ÑÑÐ¸Ð»Ñ ÐºÐ¾Ð´Ð°
Ð ÑководÑÑво по ÑÑÐ¸Ð»Ñ ÑодеÑÐ¶Ð¸Ñ Ð¾Ð±Ñие пÑавила о Ñом, как пиÑаÑÑ ÐºÐ¾Ð´, напÑимеÑ: какие кавÑÑки иÑполÑзоваÑÑ, ÑколÑко пÑобелов оÑÑÑÑпаÑÑ, макÑималÑнÑÑ Ð´Ð»Ð¸Ð½Ñ ÑÑÑоки и Ñак далее â в обÑем, множеÑÑво мелоÑей.
Ðогда вÑе ÑÑаÑÑники ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð¸ÑполÑзÑÑÑ Ð¾Ð´Ð½Ð¾ и Ñо же ÑÑководÑÑво по ÑÑилÑ, код вÑглÑÐ´Ð¸Ñ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ð¾, незавиÑимо Ð¾Ñ Ñого, кÑо из ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ ÐµÐ³Ð¾ напиÑал.
ÐонеÑно, команда вÑегда Ð¼Ð¾Ð¶ÐµÑ Ð½Ð°Ð¿Ð¸ÑаÑÑ ÑобÑÑвенное ÑÑководÑÑво по ÑÑилÑ, но обÑÑно в ÑÑом Ð½ÐµÑ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ÑÑи. СÑÑеÑÑвÑÐµÑ Ð¼Ð½Ð¾Ð¶ÐµÑÑво Ñже гоÑовÑÑ .
ÐекоÑоÑÑе попÑлÑÑнÑе ÑÑководÑÑва:
- Google JavaScript Style Guide
- Airbnb JavaScript Style Guide (еÑÑÑ Ð¿ÐµÑевод)
- Idiomatic.JS (еÑÑÑ Ð¿ÐµÑевод)
- StandardJS
- (и еÑÑ Ð¼Ð½Ð¾Ð¶ÐµÑÑво дÑÑÐ³Ð¸Ñ )
ÐÑли Ð²Ñ â наÑинаÑÑий ÑазÑабоÑÑик, Ñо наÑниÑе Ñо ÑпаÑгалки в наÑале ÑÑой главÑ. Ðак ÑолÑко Ð²Ñ Ð¾ÑвоиÑеÑÑ, пÑоÑмоÑÑиÑе дÑÑгие ÑÑководÑÑва, ÑÑÐ¾Ð±Ñ Ð²ÑбÑаÑÑ Ð¾Ð±Ñие пÑинÑÐ¸Ð¿Ñ Ð¸ ÑеÑиÑÑ, какое вам болÑÑе Ð¿Ð¾Ð´Ñ Ð¾Ð´Ð¸Ñ.
ÐвÑомаÑизиÑованнÑе ÑÑедÑÑва пÑовеÑки (линÑеÑÑ)
ÐвÑомаÑизиÑованнÑе ÑÑедÑÑва пÑовеÑки, Ñак назÑваемÑе «линÑеÑÑ» â ÑÑо инÑÑÑÑменÑÑ, коÑоÑÑе могÑÑ Ð°Ð²ÑомаÑиÑеÑки пÑовеÑÑÑÑ ÑÑÐ¸Ð»Ñ Ð²Ð°Ñего кода и вноÑиÑÑ Ð¿ÑÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð¾ его ÑлÑÑÑениÑ.
Самое замеÑаÑелÑное в Ð½Ð¸Ñ Ñо, ÑÑо пÑовеÑка ÑÑÐ¸Ð»Ñ Ð¼Ð¾Ð¶ÐµÑ Ñакже найÑи пÑогÑаммнÑе оÑибки, Ñакие как опеÑаÑки в Ð¸Ð¼ÐµÐ½Ð°Ñ Ð¿ÐµÑеменнÑÑ Ð¸Ð»Ð¸ ÑÑнкÑий. Ðз-за ÑÑой оÑобенноÑÑи иÑполÑзоваÑÑ Ð»Ð¸Ð½ÑÐµÑ ÑекомендÑеÑÑÑ, даже еÑли Ð²Ñ Ð½Ðµ Ñ Ð¾ÑиÑе пÑидеÑживаÑÑÑÑ ÐºÐ°ÐºÐ¾Ð³Ð¾-Ñо конкÑеÑного «ÑÑÐ¸Ð»Ñ ÐºÐ¾Ð´Ð°Â».
ÐÐ¾Ñ Ð½ÐµÐºÐ¾ÑоÑÑе извеÑÑнÑе инÑÑÑÑменÑÑ Ð´Ð»Ñ Ð¿ÑовеÑки:
- JSLint â пÑовеÑÑÐµÑ ÐºÐ¾Ð´ на ÑооÑвеÑÑÑвие ÑÑÐ¸Ð»Ñ JSLint, в онлайн-инÑеÑÑейÑе ввеÑÑ Ñ Ð¼Ð¾Ð¶Ð½Ð¾ ввеÑÑи код, а Ð²Ð½Ð¸Ð·Ñ â ÑазлиÑнÑе наÑÑÑойки пÑовеÑки, ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð¿ÑобоваÑÑ ÐµÑ Ð² дейÑÑвии.
- JSHint â болÑÑе пÑовеÑок, Ñем в JSLint.
- ESLint â пожалÑй, ÑамÑй ÑовÑеменнÑй линÑеÑ.
ÐÑе они, в обÑем-Ñо, ÑабоÑаÑÑ. ÐвÑÐ¾Ñ Ð¿Ð¾Ð»ÑзÑеÑÑÑ ESLint.
ÐолÑÑинÑÑво линÑеÑов инÑегÑиÑÐ¾Ð²Ð°Ð½Ñ Ñо многими попÑлÑÑнÑми ÑедакÑоÑами: пÑоÑÑо вклÑÑиÑе плагин в ÑедакÑоÑе и наÑÑÑойÑе ÑÑилÑ.
ÐапÑимеÑ, Ð´Ð»Ñ ESLint Ð²Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð²ÑполниÑÑ ÑледÑÑÑее:
- УÑÑановиÑе Node.js.
- УÑÑановиÑе ESLint Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ
npm install -g eslint(npm â ÑÑÑановÑик пакеÑов JavaScript). - СоздайÑе Ñайл конÑигÑÑаÑии Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼
.eslintrcв коÑне ваÑего JavaScript-пÑоекÑа (в папке, ÑодеÑжаÑей вÑе ваÑи ÑайлÑ). - УÑÑановиÑе/вклÑÑиÑе плагин Ð´Ð»Ñ Ð²Ð°Ñего ÑедакÑоÑа, коÑоÑÑй инÑегÑиÑÑеÑÑÑ Ñ ESLint. У болÑÑинÑÑва ÑедакÑоÑов он еÑÑÑ.
ÐÐ¾Ñ Ð¿ÑÐ¸Ð¼ÐµÑ Ñайла .eslintrc:
{
"extends": "eslint:recommended",
"env": {
"browser": true,
"node": true,
"es6": true
},
"rules": {
"no-console": 0,
"indent": ["warning", 2]
}
}
ÐдеÑÑ Ð´Ð¸ÑекÑива "extends" ознаÑаеÑ, ÑÑо конÑигÑÑаÑÐ¸Ñ Ð¾Ñнована на набоÑе наÑÑÑоек «eslint:recommended». ÐоÑле ÑÑого Ð¼Ñ ÑÑоÑнÑем наÑи ÑобÑÑвеннÑе.
ÐÑоме Ñого, возможно загÑÑзиÑÑ Ð½Ð°Ð±Ð¾ÑÑ Ð¿Ñавил ÑÑÐ¸Ð»Ñ Ð¸Ð· ÑеÑи и ÑаÑÑиÑиÑÑ Ð¸Ñ . СмоÑÑиÑе https://eslint.org/docs/user-guide/getting-started Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ð±Ð¾Ð»ÐµÐµ подÑобной инÑоÑмаÑии об ÑÑÑановке.
Также некоÑоÑÑе ÑÑÐµÐ´Ñ ÑазÑабоÑки имеÑÑ Ð²ÑÑÑоеннÑе линÑеÑÑ, возможно, ÑдобнÑе, но не Ñакие гибкие в наÑÑÑойке, как ESLint.
ÐÑого
ÐÑе пÑавила ÑинÑакÑиÑа, опиÑаннÑе в ÑÑой главе (и в ÑÑÑÐ»ÐºÐ°Ñ Ð½Ð° ÑÑководÑÑва по ÑÑилÑ), напÑÐ°Ð²Ð»ÐµÐ½Ñ Ð½Ð° повÑÑение ÑиÑаемоÑÑи ваÑего кода. РлÑбÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ поÑпоÑиÑÑ.
Ðогда Ð¼Ñ Ð´Ñмаем о напиÑании «лÑÑÑего» кода, Ð¼Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð·Ð°Ð´Ð°ÑÑ Ñебе вопÑоÑÑ: «ЧÑо ÑÐ´ÐµÐ»Ð°ÐµÑ ÐºÐ¾Ð´ более ÑиÑаемÑм и лÑгким Ð´Ð»Ñ Ð¿Ð¾Ð½Ð¸Ð¼Ð°Ð½Ð¸Ñ?» и «ЧÑо Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð¼Ð¾ÑÑ Ð¸Ð·Ð±ÐµÐ³Ð°ÑÑ Ð¾Ñибок?». ÐÑо â оÑновнÑе моменÑÑ, о коÑоÑÑÑ ÑледÑÐµÑ Ð¿Ð¾Ð¼Ð½Ð¸ÑÑ Ð¿Ñи вÑбоÑе и обÑÑждении ÑÑилей кода.
ЧÑение попÑлÑÑнÑÑ ÑÑководÑÑв по ÑÑÐ¸Ð»Ñ Ð¿Ð¾Ð·Ð²Ð¾Ð»Ð¸Ñ Ð²Ð°Ð¼ бÑÑÑ Ð² кÑÑÑе лÑÑÑÐ¸Ñ Ð¿ÑакÑик и поÑÐ»ÐµÐ´Ð½Ð¸Ñ Ð¸Ð´ÐµÐ¹ и ÑенденÑий в ÑÑилÑÑ Ð½Ð°Ð¿Ð¸ÑÐ°Ð½Ð¸Ñ ÐºÐ¾Ð´Ð°.
ÐомменÑаÑии
<code>, Ð´Ð»Ñ Ð½ÐµÑколÑÐºÐ¸Ñ ÑÑÑок кода — Ñег<pre>, еÑли болÑÑе 10 ÑÑÑок — ÑÑÑÐ»ÐºÑ Ð½Ð° пеÑоÑниÑÑ (plnkr, JSBin, codepenâ¦)