Bizning kodimiz iloji boricha toza va oson oâqilishi kerak.
Aslida bu dasturlash sanâati â murakkab vazifani bajarish, uni toâgâri va odam tushunadigan tarzda kodlash.
Sintaksis
Bu erda baâzi bir tavsiya etilgan qoidalar bilan rasm mavjud (batafsil maâlumot uchun pastga qarang):
Endi ularning qoidalari va sabablarini batafsil muhokama qilaylik.
Bu yerda qatâiy qoidalar yoâq. Bu diniy dogmalar emas, balki uslubiy imtiyozlar.
Jingalak qavslar
Koâpgina JavaScript loyihalarida jingalak qavslar âmisrchaâ uslubda yozilgan boâlib, yangi satrda emas, balki mos keladigan kalit soâz bilan bir xil satrda ochiladi. Shuningdek, ochilish qavsidan oldin boâsh joy boâlishi kerak:
if (shart) {
// buni qiling
// ...va buni
// ...va buni
}
Bitta satrli qurilish muhim ahamiyatga ega. Qavslarni har doim ishlatishimiz kerakmi? Agar yoâq boâlsa, unda qayerda?
Quyida bir nechta izohli variantlar keltirilgan, ularning oâzingiz oâqilishini baholashingiz mumkin:
Xulosa uchun:
- Juda qisqa kod uchun bitta satr qabul qilinadi. Masalan:
if (cond) return null. - Ammo qavsdagi har bir ifoda uchun alohida satr oâqilish uchun odatda osonroq.
Satr uzunligi
Kodning uzun gorizontal satrini oâqishni hech kim yoqtirmaydi. Ularni ajratish va chiziqlar uzunligini cheklash eng yaxshi amaliyotdir.
Satrning maksimal uzunligi jamoa darajasida kelishilgan boâlishi kerak. Odatda 80 yoki 120 ta belgidan iborat.
Satr boshidagi boâshliqlar
Ikkita satr boshidagi boâshliqlar mavjud:
-
Gorizontal satr boshidagi boâshliqlar: 2 yoki 4 boâshliqlar.
Gorizontal satr boshidagi boâshliqlar 2 yoki 4 joy yoki âTabâ belgisi yordamida amalga oshiriladi. Qaysi birini tanlash â bu sizning ixtiyoringiz. Hozirgi kunda boâshliqlar keng tarqalgan.
Satr boshidagi boâshliqlarning tabdan afzalliklaridan biri shundaki, boâshliqlar âTabâ belgisiga qaraganda chuqurroq moslashuvchan konfiguratsiyalarga imkon beradi.
Masalan, biz argumentlarni ochuvchi qavs bilan moslashtirishimiz mumkin, masalan:
show(parametrlar, birin, ketin, yozilgan ) { // ... } -
Vertikal satr boshidagi boâshliqlar: kodni mantiqiy bloklarga boâlish uchun boâsh satrlar.
Hatto bitta funktsiyani ham koâpincha mantiqiy bloklarga boâlish mumkin. Quyidagi misolda oâzgaruvchanlarni ishga tushirish, asosiy tsikl va natijani qaytarish vertikal ravishda boâlinadi:
function pow(x, n) { let result = 1; // <-- for (let i = 0; i < n; i++) { result *= x; } // <-- return result; }Kodni yanada oâqilishi oson qilish qoâshimcha yangi satrni kiriting. Vertikal satr boshidagi boâshliqsiz toâqqiz qatordan ortiq kod boâlmasligi kerak.
Nuqta-vergular
Har bir ifodadan keyin, hatto uni oâtkazib yuborish mumkin boâlsa ham, nuqta-vergul boâlishi kerak.
Nuqta-vergul haqiqatan ham ixtiyoriy boâlgan tillar mavjud va u kamdan kam qoâllaniladi. JavaScript-da, kengi satrga oâtish nuqta-vergul sifatida talqin qilinmaydigan holatlar mavjud, bu esa kodni xatolarga olib keladi.
Dasturchi sifatida yetuk boâlishingiz bilan siz StandardJS kabi nuqta-vergulsiz uslubni tanlashingiz mumkin. Oâsha vaqtga qadar yuzaga kelishi mumkin boâlgan tuzoqlardan qochish uchun nuqta-verguldan foydalanish yaxshidir.
Ulanish darajalari
Ulanish darajasi biroz boâlishi kerak.
Baâzan qoâshimcha ulanishdan saqlanish uchun âcontinueâ direktivasini tsiklda ishlatish yaxshi boâladi.
Masalan, if ichki ulanish oârniga:
for (let i = 0; i < 10; i++) {
if (cond) {
... // <- yana bitta ulanish darajasi
}
}
Biz yozishimiz mumkin:
for (let i = 0; i < 10; i++) {
if (!cond) continue;
... // <- qo'shimcha ulanish darajasi yo'q
}
Shunga oâxshash narsani if/else va return bilan bajarish mumkin.
Misol uchun, quyidagi ikkita konstruktsiya bir xil.
Variant 1:
function pow(x, n) {
if (n < 0) {
alert("Salbiy 'n' qo'llab-quvvatlanmaydi");
} else {
let result = 1;
for (let i = 0; i < n; i++) {
result *= x;
}
return result;
}
}
Variant 2:
function pow(x, n) {
if (n < 0) {
alert("Salbiy 'n' qo'llab-quvvatlanmaydi");
return;
}
let result = 1;
for (let i = 0; i < n; i++) {
result *= x;
}
return result;
}
Ikkinchisi n < 0 ning âchekka ishiâ erta ishlov berilganligi uchun osonro oâqiladi. Tekshirish amalga oshirilgach, qoâshimcha joylashtirish kerak boâlmasdan âasosiyâ kod oqimiga oâtishimiz mumkin.
Funktsiyalarni joylashtirish
Agar siz bir nechta âyordamchiâ funktsiyalarni va ulardan foydalanadigan kodni yozayotgan boâlsangiz, funktsiyalarni tartibga solishning uchta usuli mavjud.
-
Ulardan foydalanadigan kod yuqorida eâlon qilingan funktsiyalar:
// funktsiya deklaratsiyalari function createElement() { ... } function setHandler(elem) { ... } function walkAround() { ... } // funktsiyalardan foydalanadigan kod let elem = createElement(); setHandler(elem); walkAround(); -
Avval kod, keyin funktsiyalar
// funktsiyalardan foydalanadigan kod let elem = createElement(); setHandler(elem); walkAround(); // --- yordamchi funktsiyalar --- function createElement() { ... } function setHandler(elem) { ... } function walkAround() { ... } -
Aralash: funktsiya birinchi ishlatilgan joyda eâlon qilinadi.
Koâpincha, ikkinchi variantga afzallik beriladi.
Buning sababi shundaki, kodni oâqiyotganda, avvalo kod nima qilayotganini bilishni istaymiz. Agar kod birinchi boâlsa, u holda u maâlumot beradi. Shunda, funktsiyalarni umuman oâqib chiqishga hojat qolmaydi, ayniqsa, ularning ismlari aslida nima qilishlarini tavsiflovchi boâlsa.
Uslublar boâyicha qoâllanmalar
Uslubiy qoâllanmada kodni âqanday yozish kerakâ haqida umumiy qoidalar mavjud, masalan, qaysi qoshtirnoqlardan foydalanish kerak, qancha boâsh joy ajratish kerak, keyingi satrga oâtishlarni qaerga qoâyish va koâpgina shunga oâxshash narsalar.
Jamoaning barcha aâzolari bir xil uslubiy qoâllanmani ishlatganda, qaysi jamoa aâzosi yozganidan qatâi nazar, kod bir xil koârinadi.
Albatta, jamoa har doim oâz uslubiy qoâllanmasini yozishi mumkin. Koâpincha, bunga hojat yoâq. Tanlash uchun koâplab mavjud va toâgâri variantlar mavjud, shuning uchun ulardan birini qabul qilish sizning eng yaxshi tanlovingizdir.
Baâzi mashhur tanlovlar:
Agar siz boshlangâich dasturchi boâlsangiz, ushbu bobning boshidagi yordamchi qoâllanmalardan boshlang. Oârganganizdan soâng, umumiy tamoyillarni tanlash va qaysi biri sizga koâproq yoqishini hal qilish uchun boshqa uslubiy qoâllanmalarni koârib chiqish sizning qoâlingizda.
Avtomatlashtirilgan tekshirish vositalari (linters)
Linterslar â bu sizning kodingiz uslubini avtomatik ravishda tekshiradigan va qayta ishlash boâyicha takliflar beradigan vositalar.
Ularning eng yaxshi tomoni shundaki, uslublarni tekshirishda oâzgaruvchan yoki funktsiya nomlaridagi xatolarni topish mumkin. Ushbu xususiyat uchun, maâlum bir âkod uslubigaâ yopishib olishni xohlamasangiz ham, linterni oârnatish tavsiya etiladi.
Bu erda eng taniqli linting vositalari:
- JSLint â birinchi lintlardan biri.
- JSHint â JSLint-dan koâproq sozlamalar.
- ESLint â ehtimol eng yangi.
Ularning barchasi ishni bajarishi mumkin. Muallif ESLint dan foydalanadi.
Aksariyat linterslar koâplab taniqli muharrirlar bilan birlashtirilgan: muharriridagi plaginni yoqing va uslubni sozlang.
Masalan, ESLint uchun quyidagilarni bajarishingiz kerak:
- Node.js oârnating.
- ESLint-ni
npm install -g eslintbuyrugâi bilan oârnating (npm â bu JavaScript toâplamini oârnatuvchi) - JavaScript loyihangizning ildizida (barcha fayllaringizni oâz ichiga olgan papkada)
.eslintrcnomli konfiguratsiya faylini yarating. - ESLint bilan birlashtirilgan muharriringiz uchun plaginni oârnating/yoqing. Aksariyat muharrirlarning bittasi bor.
.eslintrc" faylining namunasi:
{
"extends": "eslint:recommended",
"env": {
"browser": true,
"node": true,
"es6": true
},
"rules": {
"no-console": 0,
"indent": 2
}
}
Bu erda "extends" direktivasi âeslint:recommendedâ sozlamalar toâplamiga asoslanganligini bildiradi. Shundan soâng biz oâzimiznikini aniqlaymiz.
Shuningdek, uslublar qoidalari toâplamlarini Internetdan yuklab olish va oldingilarni oârniga ularni kengaytirish mumkin. Oârnatish haqida batafsil maâlumot uchun http://eslint.org/docs/user-guide/getting-started ga qarang.
Shuningdek, baâzi bir IDE-larda ichki linting mavjud, bu qulay, ammo ESLint kabi moslashtirilmaydi.
Xulosa
Ushbu bobda tavsiflangan barcha sintaksis qoidalari (va uslubiy qoâllanmalarda) sizning kodingizning oâqilishini oshirishga qaratilgan, ammo ularning barchasi munozarali.
âYaxshiâ kod yozish haqida oâylashimiz kerak boâlgan savollar: âKodni nima oâqilishini va tushunishni osonlashtiradi?â va âXatolardan qochishimizga nima yordam beradi?â Kod uslublarini tanlash va muhokama qilishda bularni yodda tutish kerak boâlgan asosiy narsalar.
Ommabop uslubiy qoâllanmalarni oâqish sizga kod uslubi tendentsiyalari va eng yaxshi amaliyotlar haqidagi soânggi gâoyalar bilan tanishishingizga imkon beradi.
Izohlar
<code>yorlig'ini ishlating, bir nechta satrlar uchun - ularni<pre>yorlig'i bilan o'rab qo'ying, 10 satrdan ortiq bo'lsa - sandbox (plnkr, jsbin, codepenâ¦)