AXV

Clean Code va SOLID: SRP hamda OCP

Professional dasturiy ta'minot muhandisligining tayanch qoidalari

11-sinfProfessional IT3-hafta · 7-dars

Bugungi dars rejasi

01. Clean Code asoslari

Nomlash odobi, kichik funksiyalar va DRY, KISS, YAGNI tamoyillari.

02. S: Single Responsibility

Bitta sinf — bitta mas'uliyat va bitta o'zgarish sababi.

03. O: Open / Closed

Kengaytirishga ochiq, mavjud kodni o'zgartirishga yopiq arxitektura.

01

Clean Code asoslari

Kodni insonlar o'qishi uchun yozish san'ati va iqtisodiy samaradorlik

10:1 nisbati: O'qish vs Yozish

Vaqtning 90% qismi

Dasturchilar vaqtining asosiy qismi yangi kod yozishga emas, mavjud kodni o'qish va tahlil qilishga sarflanadi.

Iqtisodiy samara

Kodni tushunish qanchalik oson bo'lsa, xatolar shunchalik tez topiladi va yangi imkoniyatlar arzon qo'shiladi.

Clean Code uchligi

DRY Don't Repeat Yourself Kodni takrorlama O'zgarish bitta joyda KISS Keep It Simple, Stupid Sodda saqla Ortiqcha murakkablik yo'q YAGNI You Aren't Gonna Need It Kerak bo'lganda yoz Texnik qarzni to'xtatish

Nomlash madaniyati (Naming)

Tushunarsiz va qisqa

d = 14
doProcess()
temp = get_data()
user_list2

Aniq va niyati ko'rinib turgan

trial_period_days = 14
calculate_invoice_total()
active_users = fetch_active_users()

Funksiya faqat bitta vazifani bajarsin

Extract Method

Agar funksiyada 20 qatordan ortiq kod bo'lsa va hisoblash, soliq, email aralashib yotsa — uni kichik qismlarga bo'ling.

Side Effects (Yon ta'sirlar) yo'qligi

Funksiya o'z nomida aytilmagan yashirin ishlarni (sessiyani o'chirish, fayl yaratish) fonda bildirmay bajarmasligi lozim.

Texnik qarz (Technical Debt)

Hozirgi tezlik

Sifatsiz kod tez yoziladi, lekin vaqtinchalik yutuq beradi.

Foiz to'lash

Kelgusida har bir yangi funksiyada xatolar ko'payib, ish tezligi 5 barobar sekinlashadi.

Doimiy to'lov

Clean Code yondashuvi qarzni o'z vaqtida so'ndirib borish imkonini beradi.

02

SOLID: S — Single Responsibility (SRP)

Bitta sinf yoki modul faqat bitta sabab bilan o'zgarishi kerak

SRP: Mas'uliyatlarni ajratish

YOMON: Bitta sinfda 3 ta vazifa class InvoiceService: • calculate_total() [Biznes mantiq] • generate_pdf() [Fayl dizayni] • send_email() [Tarmoq protokoli] YAXSHI: 3 ta mustaqil sinf (SRP) InvoiceCalculator InvoicePdfGenerator InvoiceEmailSender

Nega SRP arxitekturani mustahkamlaydi?

Oson testlanadi

Hisoblash sinfini test qilish uchun email server yoki PDF kutubxona shart emas.

Konfliktlar bo'lmaydi

Biri hisoblashni, ikkinchisi emailni o'zgartirsa, Git konflikt yuzaga kelmaydi.

Qayta foydalanish

InvoiceEmailSender sinfidan boshqa xatlarni jo'natishda ham foydalanish mumkin.

03

SOLID: O — Open / Closed (OCP)

Kengaytirishga ochiq, mavjud kodni o'zgartirishga yopiq tizim

OCP: Yangi sinf — o'zgarmas bazaviy kod

PaymentProcessor (ABC) process(amount: float) CardPayment Uzcard / Humo CashPayment Naqd to'lov CryptoPayment Yangi qo'shildi!

OCP: if/elif o'rniga Polimorfizm

Yomon: if zanjiri

Har safar yangi to'lov turi chiqqanda if type == "payme": ... elif type == "click": ... deb asosiy funksiyaga o'zgartirish kiritiladi.

Yaxshi: OCP va Strategiya

Yangi to'lov turi alohida yangi sinf sifatida yoziladi. Eski ishlayotgan kodga bitta harf ham tegilmaydi.

Boy Scout Rule (Skautlar qoidasi)

«Lagerdan ketayotganingda, u yerni kelganingdagidan ko'ra tozaroq qilib qoldir.»

Har safar biror faylni ochganingizda, hech bo'lmaganda 1 ta tushunarsiz o'zgaruvchi nomini tuzating yoki ortiqcha takrorlanishni qisqartiring.

Tezkor viktorina

Qaysi tamoyil «Kelajakda kerak bo'lib qolar deb hozir ortiqcha kod yozmaslik»ni talab qiladi?

To'g'ri: YAGNI — You Aren't Gonna Need It (Bu senga kerak bo'lmaydi).

Bugungi amaliy vazifa 25 daqiqa

OsonBerilgan 40 qatorli aralash funksiyani 3 ta kichik funksiyaga ajrating (Extract Method).
O'rtaInvoiceService sinfidagi 3 xil mas'uliyatni SRP asosida alohida sinflarga bo'ling.
QiyinPython abc.ABC yordamida to'lov tizimini OCP tamoyiliga o'tkazing va yangi to'lov turini qo'shib sinang.

Dars xulosasi

Clean Code

Kodni inson o'qishi uchun yozish va ortiqcha yuklardan tozalash.

SRP

Har bir sinf faqat bitta aniq sabab bilan o'zgarishi kerak.

OCP

Yangi funksiyalarni mavjud ishlab turgan kodni buzmasdan qo'shish.

Keyingi dars: SOLID ning qolgan tamoyillari

LSP, ISP, DIP va Code Smells refaktoring amaliyoti

3-hafta · 8-dars