کد ٠ا Ø¨Ø§ÛØ¯ تا ØØ¯ Ø§Ù Ú©Ø§Ù ØªÙ ÛØ² Ù Ø®ÙØ§Ùا باشد
اÛ٠در ÙØ§Ùع ÙÙØ± Ø¨Ø±ÙØ§Ù Ù ÙÙÛØ³Û است â Ú¯Ø±ÙØªÙ ÛÚ© کار Ù¾ÛÚÛØ¯Ù Ù ÙÙØ´ØªÙ کد Ø¢Ù Ø¨Ù Ø±ÙØ´Û Ú©Ù Ù٠درست باشد Ù ÙÙ Ø¨Ø±Ø§Û Ø§ÙØ³Ø§Ù ÙØ§Ø¨Ù Ø®ÙØ§Ùد٠باشد. ÛÚ© سبک کدÙÙÛØ³Û Ø®ÙØ¨ است ک٠در Ø¢Ù Ø¨Ø³ÛØ§Ø± Ú©Ù Ú© Ù ÛâÚ©ÙØ¯.
سÛÙØªÚ©Ø³
اÛÙ ÛÚ© برگÙ٠تÙÙØ¨ با ÙÙØ§ÙÛÙ Ù¾ÛØ´ÙÙØ§Ø¯Û است(عکس Ø²ÛØ± را Ø¨Ø±Ø§Û Ø¬Ø²Ø¦ÛÛØ§Øª Ø¨ÛØ´ØªØ± Ù Ø´Ø§ÙØ¯Ù Ú©ÙÛØ¯)
خب ØØ§Ùا Ø¨ÛØ§Ûد در Ù ÙØ±Ø¯ ÙÙØ§ÙÛÙ Ù Ø¹ÙØª آ٠باÙÙ Ø¨ØØ« Ú©ÙÛÙ
Nothing is set in stone here. These are style preferences, not religious dogmas. ÙÛÚ ÙØÛ Ù ÙØ²ÙÛ Ø¯Ø±Ú©Ø§Ø± ÙÛØ³Øª.اÛÙ ÙØ§ ØªØ±Ø¬ÛØØ§Øª سبک کد زÙÛ Ø§Ø³Øª ÙÙ Ø¹ÙØ§Ûد Ù Ø°ÙØ¨Û
Ø¢Ú©ÙÙØ§Ø¯
در اکثر پرÙÚÙâÙØ§Û Ø¬Ø§ÙØ§Ø§Ø³Ú©Ø±Ûپت Ø¢Ú©ÙÙØ§Ø¯ Ø¨Ù Ø±ÙØ´ «٠صرÛ» ٠با سبک باز کرد٠آکÙÙØ§Ø¯ در خط ٠شاب٠کÙÙ Ù Ú©ÙÛØ¯Û Ù ØªÙØ§Ø¸Ø± Ù Ù٠در خط Ø¬Ø¯ÛØ¯ ÙÙØ´ØªÙ Ù ÛØ´Ùد. ÙÙ ÚÙÛÙ ÙØ¨Ù از بازکرد٠ÛÚ© Ø¢Ú©ÙÙØ§Ø¯ ÛÚ© ÙØ§ØµÙÙ ÙÛØ² Ø¨Ø§ÛØ¯ ÙØ¬Ùد Ø¯Ø§Ø´ØªÙ Ø¨Ø§Ø´Ø¯Ø Ù Ø§ÙÙØ¯ Ø²ÛØ±:
if (condition) {
// do this
// ...and that
// ...and that
}
ÛÚ© Ø³Ø§Ø²Ù ØªÚ©âØ®Ø·Û Ø Ù
اÙÙØ¯ if (condition) doSomething() Ø ÛÚ© Ù
ÙØ±Ø¯ Ø¨Ø³ÛØ§Ø± Ù
ÙÙ
است. Ø§ØµÙØ§Ù Ø¨Ø§ÛØ¯ از Ø¢Ú©ÙÙØ§Ø¯ Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛÙ
Ø
در اÛÙØ¬Ø§ اÙÙØ§Ø¹ ØØ§Ø´ÛÙâÙÙÛØ³Û Ø¢ÙØ±Ø¯Ù شد٠است تا Ø¨ØªÙØ§ÙÛØ¯ Ø®ÙØ§ÙاÛÛ Ø¢ÙâÙØ§ را Ø¨Ø±Ø§Û Ø®ÙØ¯ ÙØ¶Ø§Ùت Ú©ÙÛØ¯:
-
تازÙâÚ©Ø§Ø±ÙØ§ Ø¨Ø¹Ø¶Û Ø§ÙÙØ§Øª اÛÙکار را Ø§ÙØ¬Ø§Ù Ù ÛØ¯ÙÙØ¯.اÛÙ Ø®ÛÙÛ Ø¨Ø¯ است Ø¢Ú©ÙÙØ§Ø¯ Ú©Ø§Ù ÙØª ÙØ§Ø²Ù ÙØ¯Ø§Ø±Ø¯
if (n < 0) {alert(`Power ${n} is not supported`);} -
Ø´Ú©Ø§ÙØ¯Ù خط بدÙ٠آکÙÙØ§Ø¯. ÙØ±Ú¯Ø² اÛÙکار٠ÙÚ©ÙÛØ¯ Ø¨Ù Ø¹ÙØª اÛÙÚ©Ù Ø¨Ø±Ø§ØØªÛ با Ø§ÙØ²Ùد٠خط Ø¬Ø¯ÛØ¯ با خطا Ù ÙØ§Ø¬Ù Ù ÛâØ´ÙÛØ¯.
if (n < 0) alert(`Power ${n} is not supported`); -
ÛÚ© خط بدÙ٠آکÙÙØ§Ø¯ ÙØ§Ø¨Ù ÙØ¨Ù٠است اگر Ú©ÙØªØ§Ù باشد ð
if (n < 0) alert(`Power ${n} is not supported`); -
Ø¨ÙØªØ±ÛÙ ÙÙØ¹ð:
if (n < 0) { alert(`Power ${n} is not supported`); }
Ø¨Ø±Ø§Û ÛÚ© کد Ø¨Ø³ÛØ§Ø± Ù
Ø®ØªØµØ±Ø ÛÚ© Ø®Ø·Û ÙÙØ³ØªÙ Ù
Ø´Ú©ÙÛ ÙØ¯Ø§Ø±Ø¯ Ø¨Ø±Ø§Û Ù
ثا٠if (cond) return null. ÙÙÛ Ø¨Ø±Ø§Û ÛÚ© Ø¨ÙØ§Ú© Ú©Ø¯Ø Ø¢Ø®Ø±ÛÙ Ù
Ø«Ø§Ù ØØ§Ùت Ø®ÙØ§ÙØ§ØªØ±Û Ø§Ø³Øª
Ø·Ù٠خط
ÙÛÚکس Ø¯ÙØ³Øª ÙØ¯Ø§Ø±Ø¯ ÛÚ© خط Ø·ÙÙØ§ÙÛ Ø§ÙÙÛ Ø±Ø§ Ø¨Ø®ÙØ§Ùد. Ø¨ÙØªØ±ÛÙ ØØ§Ùت آ٠است ک٠آÙâÙØ§ را بشکÙÛÙ .
Ø¨Ø±Ø§Û Ù Ø«Ø§Ù :
// backtick quotes ` allow to split the string into multiple lines
let str = `
ECMA International's TC39 is a group of JavaScript developers,
implementers, academics, and more, collaborating with the community
to maintain and evolve the definition of JavaScript.
`;
Ù Ø¨Ø±Ø§Û if :
if (
id === 123 &&
moonPhase === 'Waning Gibbous' &&
zodiacSign === 'Libra'
) {
letTheSorceryBegin();
}
ØØ¯Ø§Ú©Ø«Ø± Ø·Ù٠خط Ø¨Ø§ÛØ¯ در Ø³Ø·Ø ØªÛÙ ØªÙØ§ÙÙ Ø´ÙØ¯. ٠ع٠ÙÙØ§Ù 80 ÛØ§ 120 کاراکتر است.
ØªÙØ±ÙتگÛ
د٠ÙÙØ¹ ØªÙØ±ÙØªÚ¯Û ÙØ¬Ùد دارد :
-
ØªÙ Ø±ÙØªÚ¯Û اÙÙÛ : Û² ÛØ§ Û´ ÙØ§ØµÙÙ
ÛÚ© ØªÙØ±ÙØªÚ¯Û Ø§ÙÙÛ Ø¨Ø§ Ø§Ø³ØªÙØ§Ø¯Ù از 2 ÛØ§ 4 ÙØ§ØµÙÙ ÛØ§ Ú©ÙÛØ¯ تب ساخت٠٠ÛâØ´ÙØ¯ (Ú©ÙÛØ¯
Tab).کدا٠ÛÚ© را Ø§ÙØªØ®Ø§Ø¨ Ú©ÙÛØ¯ ÛÚ© جÙÚ¯ Ù ÙØ¯Ø³ ÙØ¯ÛÙ Û Ø§Ø³Øª. Ø§Ù Ø±ÙØ²Ù ÙØ§ØµÙÙ Ø¨ÛØ´ØªØ± Ø±Ø§ÛØ¬ ÙØ³ØªÙدÛÚ©Û Ø§Ø² Ù Ø²Ø§ÛØ§Û Ø§Ø³ØªÙØ§Ø¯Ù از ÙØ§ØµÙÙ Ø¨Ù Ø¬Ø§Û ØªØ¨ اÛ٠است Ú©Ù ÙØ§ØµÙ٠از Ù¾ÛÚ©Ø±Ø¨ÙØ¯ÛâÙØ§Û Ø§ÙØ¹Ø·Ø§ÙâÙ¾Ø°ÛØ±ØªØ±Û از تبâÙØ§ Ø§Ø³ØªÙØ§Ø¯Ù Ù ÛâÚ©ÙÙØ¯.
Ø¨Ø±Ø§Û ÙÙ ÙÙÙ, ٠ا٠ÛâØªÙØ§ÙÛÙ Ù¾Ø§Ø±Ø§Ù ØªØ±ÙØ§Û ÙØ±ÙØ¯Û Ù Ø¢Ú©ÙÙØ§Ø¯ باز را باÙ٠تراز Ú©ÙÛÙ Ø Ù Ø§ÙÙØ¯ Ø²ÛØ±:
show(parameters,
aligned, // 5 spaces padding at the left
one,
after,
another
) {
// â¦
}
```
-
ØªÙ Ø±ÙØªÚ¯Û Ø¹Ù ÙØ¯Û: خط ÙØ§Û خاÙÛ Ø¨Ø±Ø§Û Ø´Ú©Ø³ØªÙ Ú©Ø¯ Ø¨Ù ÙØ³Ù ت ÙØ§Û Ù ÙØ·ÙÛ.
ØØªÛ ÛÚ© ÙØ§ÙÚ©Ø´Ù Ù ÛâØªÙØ§Ùد Ø¨Ù ÙØ³Ù تâÙØ§Û Ù ÙØ·ÙÛ ØªÙØ³ÛÙ Ø´ÙØ¯. در Ù Ø«Ø§Ù Ø²ÛØ±Ø تعرÛÙ Ù ØªØºÛØ±Ø ØÙÙÙ٠اصÙÛ Ù Ø¨Ø§Ø²Ú¯Ø²Ø¯Ø§ÙØ¯Ù Ù ÙØ¯Ø§Ø±(
return) Ø¨Ù ØµÙØ±Øª Ø¹Ù ÙØ¯Û شکست٠شدÙâØ§ÙØ¯function pow(x, n) { let result = 1; // <-- for (let i = 0; i < n; i++) { result *= x; } // <-- return result; }Ø§ÙØ²Ùد٠ÛÚ© خط خاÙÛ Ø§Ø¶Ø§Ù٠باعث Ù ÛØ´Ùد کد Ø®ÙØ§Ùاتر Ø´ÙØ¯. ÙØ¨Ø§Ûد Ø¨ÛØ´ØªØ± از Û¹ خط کد بدÙÙ ØªÙØ±ÙØªÚ¯Û Ø¹Ù ÙØ¯Û ÙØ¬Ùد داشت٠باشد.
ÙÙØ·Ù ÙÛØ±Ú¯ÙÙ (semicolon)
بعد از ÙØ± عبارت Ø¨Ø§ÛØ¯ ÛÚ© ÙÙØ·Ù ÙÛØ±Ú¯ÙÙ ÙØ¬Ùد Ø¯Ø§Ø´ØªÙ Ø¨Ø§Ø´Ø¯Ø ØØªÛ اگر Ø§ØØªÙ Ø§ÙØ§Ù ÙØ§Ø¨Ù رد Ø´Ø¯Ù Ø¨Ø§Ø´ÙØ¯
زباÙÙØ§ÛÛ ÙØ¬Ùد دارد Ú©Ù ÙÙØ·Ù ÙÛØ±Ú¯ÙÙ ÙØ§ÙØ¹Ø§Ù Ø§Ø®ØªÛØ§Ø±Û است Ù Ø¨ÙØ¯Ø±Øª از Ø¢Ù Ø§Ø³ØªÙØ§Ø¯Ù Ù Û Ø´ÙØ¯. اگرÚ٠در JavaScript Ù ÙØ§Ø±Ø¯Û ÙØ¬Ùد دارد ک٠شکست٠خط ب٠عÙÙØ§Ù ÙÙØ·Ù ÙÛØ±Ú¯ÙÙ ØªØ¹Ø¨ÛØ± ÙÙ Û Ø´ÙØ¯ ٠کد را در برابر Ø®Ø·Ø§ÙØ§ Ø¢Ø³ÛØ¨ Ù¾Ø°ÛØ± Ù Û Ú©ÙØ¯. Ø¨Ø±Ø§Û Ø§Ø·ÙØ§Ø¹Ø§Øª Ø¨ÛØ´ØªØ± ÙØ³Ù ت Ù Ø±Ø¨ÙØ·Ù را Ù Ø´Ø§ÙØ¯Ù Ú©ÙÛØ¯ ساختار کد
اگر ش٠ا ÛÚ© ØªÙØ³Ø¹Ù دÙÙØ¯Ù Ø¬Ø§ÙØ§Ø§Ø³Ú©Ø±Ûپت ØØ±ÙÙ Ø§Û Ø¨Ø§Ø´ÛØ¯ Ø´Ø§ÛØ¯ ش٠ا سبک کد زÙÛ Ø¨Ø¯ÙÙ ÙÙØ·Ù ÙÛØ±Ú¯Ù٠را ٠اÙÙØ¯ StandardJS Ø§ÙØªØ®Ø§Ø¨ Ú©ÙÛØ¯.در ØºÛØ± اÛÙØµÙرت از ÙÙØ·Ù ÙÛØ±Ú¯ÙÙ ØØªÙ ا Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛØ¯ ÚÙ٠باعث جÙÙÚ¯ÛØ±Û از Ø®Ø·Ø§ÙØ§Û ÙØ§Ø®ÙØ§Ø³ØªÙ Ù ÛØ´Ùد.
Ø³Ø·Ø ØªÙØ±ÙتگÛ
از ØªÙ Ø±ÙØªÚ¯Û ع٠Û٠در کد Ø®ÙØ¯ Ø¯ÙØ±Û Ú©ÙÛØ¯.
Ø¨Ø±Ø§Û Ù
Ø«Ø§ÙØ در ØÙÙÙâÙØ§ Ø¨Ø¹Ø¶Û Ø§ÙÙØ§Øª Ø§ÛØ¯Ù Ø®ÙØ¨Û است ک٠از continue Ø¨Ø±Ø§Û Ø¬ÙÙÚ¯ÛØ±Û از Ø³Ø·Ø Ø²ÛØ§Ø¯ ØªÙØ±ÙØªÚ¯Û Ø¬ÙÙÚ¯ÛØ±Û کرد.
Ø¨Ù Ø·ÙØ± Ù
Ø«Ø§Ù Ø¨Ù Ø¬Ø§Û Ø§ÙØ²Ùد٠if Ø¨Ù ØµÙØ±Øª ØªÙØ±Ùت٠Ù
Ø«Ù Ø²ÛØ± :
for (let i = 0; i < 10; i++) {
if (cond) {
... // <- one more nesting level
}
}
٠ا Ù ÛâØªÙØ§ÙÛ٠بÙÙÛØ³Ù :
for (let i = 0; i < 10; i++) {
if (!cond) continue;
... // <- no extra nesting level
}
Ù
ÙØ§Ø±Ø¯ Ù
شاب٠Ù
ÛØªÙØ§ÙØ¯ با if/else Ù returnâ Ø§ÙجاÙ
Ú¯ÛØ±Ø¯â¦
ب٠عÙÙØ§Ù Ù Ø«Ø§Ù Ø Ø¯Ù ØØ§Ùت Ø²ÛØ± ÛÚ©Ø³Ø§Ù ÙØ³ØªÙد.
ØØ§Ùت اÙÙ :
function pow(x, n) {
if (n < 0) {
alert("Negative 'n' not supported");
} else {
let result = 1;
for (let i = 0; i < n; i++) {
result *= x;
}
return result;
}
}
ØØ§Ùت دÙÙ :
function pow(x, n) {
if (n < 0) {
alert("Negative 'n' not supported");
return;
}
let result = 1;
for (let i = 0; i < n; i++) {
result *= x;
}
return result;
}
ØØ§Ùت دÙÙ
Ø®ÙØ§Ùاتر است ب٠اÛ٠دÙÛÙ Ú©Ù ØØ§Ùت خاص n < 0 در ابتدا Ø¨Ø±Ø±Ø³Û Ø´Ø¯Ù Ø§Ø³Øª. بعد از اÛÙÚ©Ù Ø¨Ø±Ø±Ø³Û Ø¨Ù Ø§ØªÙ
اÙ
Ø±Ø³ÛØ¯ Ù
ا Ù
ÛâØªÙØ§ÙÛÙ
Ø¨Ù ÙØ³Ù
ت اصÙÛ Ú©Ø¯ برÙÛÙ
بدÙ٠اÛÙÚ©Ù Ø¨Ù ØªÙØ±ÙØªÚ¯Û Ø®Ø§ØµÛ Ø§ØØªÛاج داشت٠باشÛÙ
.
Ø¬Ø§Û ØªØ§Ø¨Ø¹
اگر ش٠ا از ÚÙØ¯Û٠تابع Ú©Ù Ú©Û Ø¯Ø± کد Ø®ÙØ¯ Ø§Ø³ØªÙØ§Ø¯Ù Ù ÛÚ©ÙÛØ¯Ø Ø³Ù Ø±Ø§Ù Ø¨Ø±Ø§Û Ø³Ø§Ø²Ù Ø§ÙâØ¯ÙÛ Ú©Ø±Ø¯Ù Ø¢ÙÙØ§ ÙØ¬Ùد دارد.
-
تابع را Ø¨Ø§ÙØ§Û Ú©Ø¯Û Ú©Ù Ù ÛâØ®ÙØ§ÙÛØ¯ Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛØ¯ تعرÛÙ Ú©ÙÛØ¯ :
// function declarations function createElement() { ... } function setHandler(elem) { ... } function walkAround() { ... } // the code which uses them let elem = createElement(); setHandler(elem); walkAround(); -
اÙ٠کد بعد تابع :)
// the code which uses the functions let elem = createElement(); setHandler(elem); walkAround(); // --- helper functions --- function createElement() { ... } function setHandler(elem) { ... } function walkAround() { ... } -
ØªØ±Ú©ÛØ¨Û : ÛÚ© تابع Ø¬Ø§Û ØªØ¹Ø±ÛÙ Ø´ÙØ¯ ک٠اÙÙÛÙ Ø¬Ø§Û Ø§Ø³ØªÙØ§Ø¯Ù آ٠است.
اکثر Ù ÙØ§Ùع ØØ§Ùت دÙÙ ØªØ±Ø¬ÛØ داد٠٠ÛâØ´ÙØ¯.
ب٠اÛ٠خاطر ک٠ز٠اÙÛ Ú©Ù Ù Ø§ کد را Ù ÛØ®ÙاÙÛÙ Ù¬ ٠ا ابتدا Ù ÛâØ®ÙØ§ÙÛ٠بداÙÛÙ ÚÙ Ú©Ø§Ø±Û Ø§ÙØ¬Ø§Ù Ù ÛØ¯Ùد. اگر کد در ابتدا ÙØ±Ø§Ø± Ù ÛâÚ¯ÛØ±Ø¯ درÙ٠ا٠ابتدا کد ØªÙ ÛØ² است.Ø³Ù¾Ø³Ø Ø´Ø§ÛØ¯ ش٠ا Ø§ØµÙØ§ ÙØ§Ø²Ù ÙØ¨Ø§Ø´Ø¯ ک٠تابع را Ø¨Ø®ÙØ§ÙÛØ¯ Ø¨Ù Ø®ØµÙØµ اگر Ú©Ù ÙØ§Ù Ø¢Ù ÙØ§ ØªÙØ¶ÛØ Ø¯ÙÙØ¯Ù Ø¹Ù Ú©ÙØ±Ø¯ Ø¢ÙâÙØ§ باشد.
راÙÙÙ Ø§Û Ø³Ø¨Ú© (Style Guides)
راÙÙÙ Ø§Û Ø³Ø¨Ú© شا٠٠ÙÙØ§ÙÛÙ Ú©ÙÛ Ø¯Ø±Ø¨Ø§Ø±Ù âÙØÙÙ ÙÙØ´ØªÙ Ú©Ø¯â Ø§Ø³Øª Ø¨Ø±Ø§Û Ù Ø«Ø§Ù Ú©Ø¯Ø§Ù ÙÙØ¹ Ú©ÙØªÛØ´Ù Ø§Ø³ØªÙØ§Ø¯Ù Ø´ÙØ¯Ø تعداد ÙØ§ØµÙÙâÙØ§ Ø¨Ø±Ø§Û ØªÙ Ø±ÙØªÚ¯ÛØ ØØ¯Ø§Ú©Ø«Ø± Ø·Ù٠خط Ù ØºÛØ±Ù. Ù Ø®ÛÙÛ ÚÛØ²ÙØ§Û Ø¬Ø²Ø¦Û Ø¯Ûگر.
ÙÙØªÛ ÙÙ Ù Ø§Ø¹Ø¶Ø§Û ÛÚ© تÛ٠از ÛÚ© راÙÙÙ Ø§Û Ø³Ø¨Ú© ÛÚ©Ø³Ø§Ù Ø§Ø³ØªÙØ§Ø¯Ù Ù ÛâÚ©ÙÙØ¯Ø ÙØ§Ø±Øº از اÛÙک٠کدا٠ÛÚ© از Ø§Ø¹Ø¶Ø§Û ØªÛ٠آ٠را ÙÙØ´ØªÙ Ø§Ø³ØªØ Ú©Ø¯ ÛÚ©ÙÙØ§Ø®Øª Ø¨Ù ÙØ¸Ø± Ù ÛâØ±Ø³Ø¯.
Ø§ÙØ¨ØªÙ Ø ÛÚ© تÛÙ ÙÙ ÛØ´Ù Ù ÛâØªÙØ§Ùد راÙÙÙ Ø§Û Ø³Ø¨Ú© Ø®ÙØ¯ را بÙÙÛØ³Ø¯Ø ا٠ا ٠ع٠ÙÙØ§Ù ÙÛØ§Ø²Û ب٠اÛ٠کار ÙÛØ³Øª. راÙÙÙ Ø§ÙØ§Û Ù ÙØ¬Ùد Ø²ÛØ§Ø¯Û Ø¨Ø±Ø§Û Ø§ÙØªØ®Ø§Ø¨ ÙØ¬Ùد دارد.
Ø¨Ø±Ø®Û Ø§ÙØªØ®Ø§Ø¨âÙØ§Û Ù ØØ¨Ùب :
- Google JavaScript Style Guide
- Airbnb JavaScript Style Guide
- Idiomatic.JS
- StandardJS
- (Ø¨Ù Ø¹ÙØ§ÙÙ Ø¨Ø³ÛØ§Ø±Û دÛگر)
اگر ÛÚ© ØªÙØ³Ø¹ÙâØ¯ÙÙØ¯Ù تازÙâکار ÙØ³ØªÛØ¯Ø Ø¨Ø§ برگÙ٠تÙÙØ¨ در Ø§Ø¨ØªØ¯Ø§Û Ø§ÛÙ ÙØµÙ Ø´Ø±ÙØ¹ Ú©ÙÛØ¯. سپس Ù ÛâØªÙØ§ÙÛØ¯ Ø³Ø§ÛØ± راÙÙÙ Ø§ÙØ§Û سبک را Ù Ø±ÙØ± Ú©ÙÛØ¯ تا Ø§ÛØ¯ÙâÙØ§Û Ø¨ÛØ´ØªØ±Û ب٠دست Ø¨ÛØ§ÙØ±ÛØ¯ ٠تص٠ÛÙ Ø¨Ú¯ÛØ±Ûد کدا٠ÛÚ© را Ø¨ÛØ´ØªØ± Ø¯ÙØ³Øª Ø¯Ø§Ø±ÛØ¯.
ÙÛÙØªØ±ÙØ§Û Ø®ÙØ¯Ú©Ø§Ø±
ÙÛØªÙØ±ÙØ§ Ø§Ø¨Ø²Ø§Ø±Û ÙØ³ØªÙد Ú©Ù Ù ÛâØªÙØ§ÙÙØ¯ Ø¨Ù Ø·ÙØ± Ø®ÙØ¯Ú©Ø§Ø± سبک کد ش٠ا را Ø¨Ø±Ø±Ø³Û Ú©Ø±Ø¯Ù Ù Ù¾ÛØ´ÙÙØ§Ø¯ÙØ§Û Ø±Ø§ Ø¨Ø±Ø§Û Ø¨ÙØ¨Ùد کد ارائ٠دÙÙØ¯.
ÙÚ©ØªÙ ÙØ§Ø¨Ù ØªÙØ¬Ù در Ù ÙØ±Ø¯ Ø¢ÙÙØ§ اÛ٠است Ú©Ù Ø¨Ø±Ø±Ø³Û Ø³Ø¨Ú© Ù Û ØªÙØ§Ùد Ø§Ø´Ú©Ø§ÙØ§ØªÛ ٠اÙÙØ¯ اشتبا٠تاÛÙ¾Û Ø¯Ø± ÙØ§Ù Ù ØªØºÛØ± ÛØ§ ÙØ§Ù تابع را ÙÛØ² Ù¾ÛØ¯Ø§ Ú©ÙØ¯. ب٠دÙÛ٠اÛÙ ÙÛÚÚ¯Û Ø Ø§Ø³ØªÙØ§Ø¯Ù از ÙÛÙØªØ± ØØªÛ اگر ÙÙ ÛâØ®ÙØ§ÙÛØ¯ ب٠ÛÚ© âØ³Ø¨Ú© Ú©Ø¯â Ø®Ø§Øµ Ù¾Ø§ÛØ¨Ùد Ø¨Ø§Ø´ÛØ¯ Ø ØªÙØµÛÙ Ù ÛâØ´ÙØ¯
Ø¨Ø±Ø®Û Ø§Ø² Ø§Ø¨Ø²Ø§Ø±ÙØ§Û ÙÛÙØª Ú©Ø±Ø¯Ù Ø´ÙØ§Ø®ØªÙ شد٠:
- JSLint --ÛÚ©Û Ø§Ø² اÙÙÛÙ ÙÛÙØªØ±Ùا.
- JSHint â ØªÙظÛ٠ات Ø¨ÛØ´ØªØ±Û ÙØ³Ø¨Øª ب٠JSLint.
- ESLint --Ø´Ø§ÛØ¯ ÛÚ©Û Ø§Ø² Ø¬Ø¯ÛØ¯ØªØ±ÛÙ ÙØ§.
ÙÙ ÙâÛ Ø¢ÙÙØ§ Ù ÛâØªÙØ§ÙÙØ¯ کارشا٠را Ø§ÙØ¬Ø§Ù دÙÙØ¯. ÙÙÛØ³Ùد٠از ESLint Ø§Ø³ØªÙØ§Ø¯Ù Ù ÛÚ©ÙØ¯.
اکثر ÙÛÙØªØ±Ùا Ù ÛØªÙØ§ÙØ¯ با ÙÛØ±Ø§ÛØ´Ú¯Ø±ÙØ§Û Ù ØØ¨Ùب ادغا٠شÙÙØ¯ : ÙÙØ· کاÙÛØ³Øª Ù¾ÙØ§Ú¯ÛÙ Ù Ø±Ø¨ÙØ·Ù Ø±Ù ÙØµØ¨ ٠سبک(style) را Ù¾ÛÚ©Ø±Ø¨ÙØ¯Û Ú©ÙÛØ¯.
Ø¨Ø±Ø§Û ÙÙ ÙÙÙÙ¬ Ø¨Ø±Ø§Û ESLint اÛÙ Ú©Ø§Ø±ÙØ§ را Ø¨Ø§ÛØ¯ Ø§ÙØ¬Ø§Ù دÙÛØ¯ :
- ÙØµØ¨ Node.JS.
- ÙØµØ¨ ESLint با کاÙ
ÙØ¯ npm
npm install -g eslintÙØµØ¨ Ú©ÙÙØ¯Ù Ù¾Ú©ÛØ¬ ÙØ§Û Ø¬Ø§ÙØ§ اسکرÛپت است. - ÛÚ© ÙØ§ÛÙ ØªÙØ¸ÛÙ
ات Ø¨Ù ÙØ§Ù
.eslintrcدر Ù Ø³ÛØ± ک٠پرÙÚÙ Ø¬Ø§ÙØ§Ø§Ø³Ú©Ø±Ûپت(ÙÙÙØ¯Ø±Û ک٠شا٠٠ÙÙ Ù ÙÙÙØ¯Ø± ÙØ§ ÙØ³ØªÙد) - ÙØµØ¨/ÙØ¹Ø§Ù Ú©Ø±Ø¯Ù Ù¾ÙØ§Ú¯ÛÙ Ø¨Ø±Ø§Û ÙÛØ±Ø§Ûشگر Ø®ÙØ¯ØªØ§Ù Ø¨Ø±Ø§Û Ø§Ø¯ØºØ§Ù Ø¨Ø§ ESLint. اکثر ÙÛØ±Ø§ÛØ´Ú¯Ø±ÙØ§ ÛÚ© Ù¾ÙØ§Ú¯ÛÙ Ø¯Ø§Ø±ÙØ¯:
اÛÙ ÛÚ© Ù
ثا٠از ÙØ§ÛÙ .eslintrc است :
{
"extends": "eslint:recommended",
"env": {
"browser": true,
"node": true,
"es6": true
},
"rules": {
"no-console": 0,
"indent": 2
}
}
در اÛÙØ¬Ø§ Ø¯Ø³ØªÙØ±Ø§ÙعÙ
Ù "extends" ÙØ´Ø§Ù Ù
ÛâØ¯ÙØ¯ Ú©Ù Ù¾ÛÚ©Ø±Ø¨ÙØ¯Û براساس Ù
جÙ
ÙØ¹Ù ØªÙØ¸ÛÙ
ات âeslint: recommendedâ Ø§Ø³Øª. پس از Ø¢ÙØ Ù
ا Ù
شخصات Ø®ÙØ¯ را Ù
شخص Ù
ÛâÚ©ÙÛÙ
.
ÙÙ ÚÙÛÙ Ù ÛâØªÙØ§Ù Ù Ø¬Ù ÙØ¹Ù ÙÙØ§ÙÛ٠سبک را از ÙØ¨ داÙÙÙØ¯ Ù Ø¨Ù Ø¬Ø§Û Ø¢Ù Ú¯Ø³ØªØ±Ø´ داد. Ø¨Ø±Ø§Û Ø§Ø·ÙØ§Ø¹Ø§Øª Ø¨ÛØ´ØªØ± در Ù ÙØ±Ø¯ ÙØµØ¨ Ø Ø¨Ù http://eslint.org/docs/user-guide/getting-started ٠راجع٠کÙÛØ¯
ÙÙ ÚÙÛÙ IDE ÙØ§Û Ù Ø´Ø®ØµÛ linting داخÙÛ Ø¯Ø§Ø±ÙØ¯ Ú©Ù Ø±Ø§ØØª است ا٠ا Ø¨Ù Ø§ÙØ¯Ø§Ø²Ù ESLint ÙØ§Ø¨Ù ØªÙØ¸ÛÙ ÙÛØ³Øª.
Ø®ÙØ§ØµÙ
ت٠ا٠ÙÙØ§ÙÛ٠سÛÙØªÚ©Ø³Û ØªÙØµÛ٠شد٠در اÛÙ ÙØµÙ (Ù Ù٠٠آÙÙØ§Û ک٠در راÙÙÙ Ø§ÙØ§Û سبک Ø§Ø´Ø§Ø±Ù Ø´Ø¯Ù Ø¨ÙØ¯) با ÙØ¯Ù Ø§ÙØ²Ø§ÛØ´ Ø®ÙØ§ÙاÛÛ Ú©Ø¯ ش٠ا است. Ù٠٠آÙÙØ§ ÙØ§Ø¨Ù Ø¨ØØ« است.
ÙÙØªÛ ب٠ÙÙØ´ØªÙ کد âØ¨ÙØªØ±â Ùکر Ù Û Ú©ÙÛÙ Ø Ø³ÙØ§ÙØ§ØªÛ Ú©Ù Ø¨Ø§ÛØ¯ از Ø®ÙØ¯ بپرسÛ٠اÛ٠است: âÚÙ ÚÛØ²Û کد را Ø®ÙØ§Ùاتر ٠آسا٠تر Ù Û Ú©ÙØ¯Øâ Ù âÚÙ ÚÛØ²Û Ù Û ØªÙØ§Ùد ب٠٠ا Ú©Ù Ú© Ú©ÙØ¯ تا از خطا جÙÙÚ¯ÛØ±Û Ú©ÙÛÙ Øâ اÛÙÙØ§ اصÙÛ ØªØ±ÛÙ Ù ÙØ§Ø±Ø¯Û است Ú©Ù Ø¨Ø§ÛØ¯ ÙÙÚ¯Ø§Ù Ø§ÙØªØ®Ø§Ø¨ Ù Ø¨ØØ« در Ù ÙØ±Ø¯ سبک کد ب٠خاطر Ø¨Ø³Ù¾Ø§Ø±ÛØ¯.
Ø®ÙØ§Ùد٠راÙÙÙ Ø§ÙØ§Û سبک Ù ØØ¨Ùب ب٠ش٠ا ا٠کا٠٠ÛâØ¯ÙØ¯ با Ø¬Ø¯ÛØ¯ØªØ±ÛÙ Ø§ÛØ¯Ù ÙØ§ در Ù ÙØ±Ø¯ سبک Ú©Ø¯ÙØ§Û ر٠ب٠رشد Ù Ø¨ÙØªØ±ÛÙ Ø±ÙØ´ ÙØ§ Ø¨Ù Ø±ÙØ² Ø¨Ø§Ø´ÛØ¯.
ÙØ¸Ø±Ø§Øª
<code>Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛØ¯Ø Ø¨Ø±Ø§Û ÚÙØ¯Û٠خط â کد را درÙ٠تگ<pre>ÙØ±Ø§Ø± دÙÛØ¯Ø Ø¨Ø±Ø§Û Ø¨ÛØ´ از د٠خط کد â Ø§Ø² ÛÚ© جعبÙÙ Ø´ÙÛ Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛØ¯. (plnkrØ jsbinØ codepenâ¦)