Clean Code asoslari va SOLID: SRP hamda OCP tamoyillari
Professional kod madaniyati, to'g'ri nomlash, DRY/KISS/YAGNI tamoyillari hamda barqaror arxitektura poydevori: SRP va OCP.
Haftada 3 ta dars. Slaydlarni oching va darsning o'quvchi sahifasida qo'shimcha ma'lumot hamda topshiriqlarni toping.
Professional kod madaniyati, to'g'ri nomlash, DRY/KISS/YAGNI tamoyillari hamda barqaror arxitektura poydevori: SRP va OCP.
Liskov almashinish qoidasi, ixcham interfeyslar, Dependency Injection kuchi va yomon arxitektura alomatlarini (Code Smells) davolash.
Creational patterns: Factory Method yordamida obyekt yaratishni markazlashtirish, Singleton kuchi va global holat xatarlari.
Har bir vazifa 20–30 daqiqa. Parol, shaxsiy token, maxfiy kalit va shaxsiy ma'lumotlarni repozitoriyga yozmang: topshirishda faqat ochiq GitHub repo yoki Pull Request havolasi kerak.
1-topshiriq: «Kodni tozalash va OCP kengaytirish»
refactor/clean-code tarmog'ini oching.order_processor.py nomli fayl yarating. Unga kamida 30 qatordan iborat «Spaghetti» kod (hisoblash, chegirma, soliq, xabar jo'natish bitta funksiyada) yozing.Extract Method);SRP);PaymentProcessor abstrakt sinfi (abc.ABC) orqali to'lov turlarini OCP talablariga moslang.refactor(core): apply SRP and OCP to order processor) bilan saqlab, GitHub'ga push qiling.Kutiladigan natija: tushunarli nomlangan, SRP va OCP tamoyillariga javob beradigan toza Python moduli.
Topshirish: GitHub commit yoki fayl havolasi.
2-topshiriq: «Dependency Injection va Bazasiz Unit Test»
service_architecture.py faylida UserRepository abstrakt interfeysini e'lon qiling (get_user(id), save_user(user)).UserService biznes mantiq sinfini yozing (Dependency Injection orqali repositoriyani qabul qilsin).FakeUserRepository (oddiy Python dict orqali) sinfini yozing.test_user_service.py faylida hech qanday PostgreSQL yoki tashqi serverga ulanmasdan pytest yoki oddiy assert orqali 3 ta test yozing (foydalanuvchi topilishi, yangi foydalanuvchi qo'shilishi, topilmaganda xatolik).Kutiladigan natija: DIP va DI tufayli 100% mustaqil, 0.01 soniyada yashil o'tuvchi unit-testlar to'plami.
Topshirish: GitHub tarmog'i va testlarning terminaldagi muvaffaqiyatli skrinshoti.
3-topshiriq: «Loyiha ConfigManager Singleton va Logger»
patterns.py faylida __new__ metodi yordamida AppConfig nomli Singleton sinfini tuzing. U dastur sozlamalarini (masalan: APP_NAME, DEBUG, PORT) faqat bir marta xotiraga yuklasin.cfg1 = AppConfig() va cfg2 = AppConfig() deb chaqirib, cfg1 is cfg2 natijasi True ekanini assert bilan tasdiqlang.NotificationFactory yarating (email, sms, telegram turlari bo'yicha mos obyektlarni qaytarsin). Noma'lum tur kiritilganda ValueError tashlashini ta'minlang.main tarmog'iga Pull Request qilib yuboring.Kutiladigan natija: Singleton va Factory andozalari to'g'ri tatbiq etilgan, to'liq testlangan Python kodi.
Topshirish: GitHub Pull Request havolasi.