Metodologiya

Kod Standartlari

11 yillik tajribadan chiqarilgan kod yozish qoidalari. Genius Academy da o'rgatiladigan standartlar.

Asoslar

Asosiy tamoyillar

01
O'qilishi oson
Kod avvalo odamlar uchun, keyin kompyuter uchun. Boshqa developer 5 daqiqada tushunishi kerak.
02
DRY — Takrorlanmaslik
Don't Repeat Yourself. Bir xil kod ikki joyda bo'lsa — funksiyaga chiqar.
03
KISS — Soddalik
Keep It Simple, Stupid. Murakkab yechim ko'pincha noto'g'ri yechim.
04
YAGNI — Kerak bo'lganda
You Aren't Gonna Need It. Hozir kerak bo'lmagan narsani yozma.
05
Single Responsibility
Har bir funksiya/klass faqat bitta ish qilsin. Ko'p ish qilsa — bo'l.
06
Izohlar — nima emas, nima uchun
Kod nima qilayotganini emas, nima uchun shunday qilayotganini izohla.
Majburiy
O'zgaruvchilar — camelCase (JS) yoki snake_case (Python)
O'zgaruvchi nomi uning maqsadini aniq ifodalashi kerak. Qisqartmalardan qoching.
// ✓ To'g'ri (JavaScript) const userFirstName = 'Jasur'; const isLoggedIn = true; const totalPrice = 150000; // ✗ Noto'g'ri const x = 'Jasur'; const flag = true; const tp = 150000;
Majburiy
Funksiyalar — fe'l bilan boshlash
Funksiya nomi nima qilayotganini ko'rsatishi kerak. get, set, create, update, delete, handle, calculate...
// ✓ To'g'ri function getUserById(id) { ... } function calculateTotalPrice(items) { ... } function handleFormSubmit(event) { ... } // ✗ Noto'g'ri function user(id) { ... } function price(items) { ... } function form(event) { ... }
Tavsiya
Boolean — is, has, can, should bilan boshlash
Boolean o'zgaruvchilar savol shaklida bo'lishi o'qishni osonlashtiradi.
const isActive = true; const hasPermission = false; const canEdit = user.role === 'admin'; const shouldRedirect = !isLoggedIn;
Majburiy
Funksiya — bitta ish qilsin
Agar funksiya 20 qatordan oshsa — bo'lish vaqti keldi. Har bir funksiya bitta mas'uliyat.
// ✓ To'g'ri — har biri bitta ish function validateEmail(email) { ... } function sendEmail(to, subject, body) { ... } function logEmailSent(email, timestamp) { ... } // ✗ Noto'g'ri — hammasi bir joyda function processUser(email) { // validate + send + log — hammasi bu yerda }
Tavsiya
Default parametrlar ishlatish
Funksiya parametrlariga default qiymat berish — xatolarni kamaytiradi.
function createUser(name, role = 'user', active = true) { return { name, role, active }; }
Majburiy
Semantik teglar ishlatish
div va span o'rniga ma'noli teglar: header, nav, main, article, section, aside, footer.
<!-- ✓ To'g'ri --> <header>...</header> <nav>...</nav> <main><article>...</article></main> <footer>...</footer> <!-- ✗ Noto'g'ri --> <div class="header">...</div> <div class="nav">...</div>
Majburiy
Rasmlar uchun alt atributi
Har bir img tegida alt atributi bo'lishi shart. Accessibility va SEO uchun muhim.
<img src="logo.png" alt="Genius Academy logotipi"/> <img src="logo.png"/>
Majburiy
CSS o'zgaruvchilar (Custom Properties)
Ranglar, o'lchamlar, fontlar uchun CSS o'zgaruvchilar ishlatish. Bir joyda o'zgartirish — hamma joyda o'zgaradi.
:root { --color-primary: #6366F1; --color-bg: #08090C; --font-heading: 'Bricolage Grotesque'; --spacing-md: 16px; } .button { background: var(--color-primary); }
Majburiy
Commit xabarlari — aniq va ma'noli
Conventional Commits formatidan foydalanish: feat, fix, docs, style, refactor, test, chore.
# ✓ To'g'ri feat: add user authentication fix: resolve login redirect bug docs: update API documentation style: format code with prettier # ✗ Noto'g'ri update fix bug changes asdf
Tavsiya
Kichik va tez-tez commit
Katta o'zgarishlarni kichik commitlearga bo'lish. Har bir commit bitta mantiqiy o'zgarish.
# Har bir feature uchun alohida commit git commit -m "feat: add login form UI" git commit -m "feat: add form validation" git commit -m "feat: connect login API"