ÐÐ°Ñ ÐºÐ¾Ð´ повинен бÑÑи наÑÑÑлÑки зÑозÑмÑлим Ñа ÑиÑабелÑним, наÑкÑлÑки Ñе можливо.
ÐаÑпÑÐ°Ð²Ð´Ñ Ð¼Ð¸ÑÑеÑÑво пÑогÑамÑÐ²Ð°Ð½Ð½Ñ â Ñе бÑаÑи ÑÐºÐ»Ð°Ð´Ð½Ñ Ð·Ð°Ð´Ð°ÑÑ Ñ Ð¿Ð¸ÑаÑи код, Ñкий одноÑаÑно Ñ ÑозвâÑзÑÑ Ð·Ð°Ð´Ð°ÑÑ, Ñ Ð·Ð°Ð»Ð¸ÑаÑÑÑÑÑ Ð·ÑозÑмÑлим лÑдинÑ. Саме ÑÑÑ Ñ Ð¾ÑоÑий ÑÑÐ¸Ð»Ñ ÐºÐ¾Ð´Ñ ÑÑÐ°Ñ Ñ Ð¿ÑигодÑ.
СинÑакÑиÑ
ÐеÑÐºÑ Ð·Ð°Ð¿ÑÐ¾Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ñ Ð¿Ñавила Ð½Ð°Ð²ÐµÐ´ÐµÐ½Ñ Ñ ÑÑй ÑпаÑгалÑÑ (нижÑе ÑозпиÑано бÑлÑÑ Ð´ÐµÑалÑно):
ÐавайÑе деÑалÑнÑÑе ÑозглÑнемо ÑÑ Ð¿Ñавила Ñ Ð¿ÑиÑини ÑÑ Ð¿Ð¾Ñви.
ÐалÑÐ·Ð½Ð¸Ñ Ð¿Ñавил немаÑ. ÐÑе Ñе ÑÑилÑÐ¾Ð²Ñ ÑподобаннÑ, а не ÑелÑгÑÐ¹Ð½Ñ Ð´Ð¾Ð³Ð¼Ð¸.
ФÑгÑÑÐ½Ñ Ð´Ñжки
У бÑлÑÑоÑÑÑ 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.
`;
Ðбо Ð´Ð»Ñ if:
if (
id === 123 &&
moonPhase === 'ÐÑоÑÑаÑÑий мÑÑÑÑÑ' &&
zodiacSign === 'ТеÑези'
) {
letTheSorceryBegin();
}
ÐакÑималÑÐ½Ñ Ð´Ð¾Ð²Ð¶Ð¸Ð½Ñ ÑÑдка визнаÑаÑÑÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ñ. ÐазвиÑай Ñе 80 або 120 ÑимволÑв.
ÐÑдÑÑÑпи
Рдва види вÑдÑÑÑпÑв:
-
ÐоÑизонÑалÑÐ½Ñ Ð²ÑдÑÑÑпи: 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; }ÐÑÑавлÑйÑе додаÑковий ÑÑдок в ÑÐ¾Ð¼Ñ Ð²Ð¸Ð¿Ð°Ð´ÐºÑ, коли Ñе ÑобиÑÑ ÐºÐ¾Ð´ зÑозÑмÑлÑÑим. Ðе повинно бÑÑи понад девâÑÑи ÑÑдкÑв ÐºÐ¾Ð´Ñ Ð¿ÑдÑÑд без веÑÑикалÑного ÑозподÑлÑ.
ÐÑапка з комоÑ
ÐÑÐ°Ð¿ÐºÑ Ð· ÐºÐ¾Ð¼Ð¾Ñ ÑÑеба ÑÑавиÑи пÑÑÐ»Ñ ÐºÐ¾Ð¶Ð½Ð¾Ð³Ð¾ виÑазÑ, навÑÑÑ ÑодÑ, коли Ñ Ð¼Ð¾Ð¶Ð»Ð¸Ð²ÑÑÑÑ ÑÑ Ð¿ÑопÑÑÑиÑи.
Рмови пÑогÑамÑваннÑ, Ñ ÑÐºÐ¸Ñ ÐºÑапка з ÐºÐ¾Ð¼Ð¾Ñ Ñ Ð´ÑйÑно необовâÑзковими Ñа ÑÑдко викоÑиÑÑовÑÑÑÑÑÑ. ÐÑоÑе Ñ 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 â один з пеÑÑÐ¸Ñ Ð»ÑнÑеÑÑв.
- 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": 2
}
}
ÐиÑекÑива "extends" ознаÑаÑ, Ñо конÑÑгÑÑаÑÑÑ Ð±Ð°Ð·ÑÑÑÑÑÑ Ð½Ð° набоÑÑ Ð½Ð°Ð»Ð°ÑÑÑÐ²Ð°Ð½Ñ âeslint:recommendedâ. ÐÑÑÐ»Ñ ÑÑого, ви вказÑÑÑе ваÑÑ Ð²Ð»Ð°ÑнÑ.
ÐÑÑм Ñого, можна заванÑажиÑи набоÑи пÑавил з меÑÐµÐ¶Ñ Ñа ÑозÑиÑиÑи ÑÑ . ÐивÑÑÑÑÑ https://eslint.org/docs/user-guide/getting-started Ð´Ð»Ñ Ð¾ÑÑÐ¸Ð¼Ð°Ð½Ð½Ñ Ð±ÑлÑÑ Ð´ÐµÑалÑÐ½Ð¾Ñ ÑнÑÑÑÑкÑÑÑ Ð·Ñ Ð²ÑÑановленнÑ.
Також, деÑÐºÑ ÑеÑедовиÑа ÑозÑобки (IDE) маÑÑÑ Ð²Ð±ÑÐ´Ð¾Ð²Ð°Ð½Ñ Ð·Ð°Ñоби пеÑевÑÑки кодÑ, Ñо Ñ Ð·ÑÑÑним, але не Ñаким гнÑÑким в налаÑÑÑÐ²Ð°Ð½Ð½Ñ ÑÑÑеннÑм, Ñк ESLint.
ÐÑдÑÑмки
ÐÑÑ Ð¿Ñавила ÑинÑакÑиÑÑ, ÑÐºÑ Ð¾Ð¿Ð¸ÑÐ°Ð½Ñ Ñ Ð´Ð°Ð½Ð¾Ð¼Ñ ÑоздÑÐ»Ñ (Ñ Ð² поÑиланнÑÑ Ð½Ð° поÑÑбники Ð·Ñ ÑÑÐ¸Ð»Ñ ÐºÐ¾Ð´Ñ) маÑÑÑ Ð½Ð° меÑÑ Ð¿Ð¾Ð»ÑпÑиÑи ÑиÑабелÑнÑÑÑÑ Ð²Ð°Ñого кодÑ. ÐÑÑ Ð²Ð¾Ð½Ð¸ Ñ Ð´Ð¸ÑкÑÑÑйними.
Ðоли ми пÑагнемо пиÑаÑи код âкÑаÑеâ, ми Ð¿Ð¾Ð²Ð¸Ð½Ð½Ñ Ð·Ð°Ð´Ð°Ñи ÑÐ¾Ð±Ñ Ð½Ð°ÑÑÑÐ¿Ð½Ñ Ð¿Ð¸ÑаннÑ: âЩо ÑобиÑÑ ÐºÐ¾Ð´ бÑлÑÑ ÑиÑабелÑним Ñа зÑозÑмÑлим?â Ñ âЩо нам допоможе ÑникнÑÑи помилок?â. Це Ð³Ð¾Ð»Ð¾Ð²Ð½Ñ Ð¼Ð¾Ð¼ÐµÐ½Ñи, Ñо ÑÑеба бÑаÑи до Ñваги, коли ви вибиÑаÑÑе Ñа диÑкÑÑÑÑÑе з пÑÐ¸Ð²Ð¾Ð´Ñ ÑÑÐ¸Ð»Ñ ÐºÐ¾Ð´Ñ.
ЧиÑÐ°Ð½Ð½Ñ Ð¿Ð¾Ð¿ÑлÑÑÐ½Ð¸Ñ Ð¿Ð¾ÑÑбникÑв Ð·Ñ ÑÑÐ¸Ð»Ñ ÐºÐ¾Ð´Ñ Ð´Ð¾Ð·Ð²Ð¾Ð»Ð¸ÑÑ Ð²Ð°Ð¼ бÑÑи в кÑÑÑÑ Ð½Ð°Ð¹ÐºÑаÑÐ¸Ñ Ð¿ÑакÑик Ñа оÑÑаннÑÑ Ñдей Ñодо ÑÑÐ¸Ð»Ñ ÐºÐ¾Ð´Ñ.
ÐоменÑаÑÑ
<code>, Ð´Ð»Ñ ÐºÑлÑÐºÐ¾Ñ ÑÑдкÑв â обгоÑнÑÑÑ ÑÑ Ñегом<pre>, Ð´Ð»Ñ Ð¿Ð¾Ð½Ð°Ð´ 10 ÑÑдкÑв â викоÑиÑÑовÑйÑе пÑÑоÑниÑÑ (plnkr, jsbin, codepenâ¦)