Moslashuvchan arxitektura, Dependency Injection va kod hidlarini davolash
11-sinfProfessional IT3-hafta · 8-darsLiskov almashinish kafolati va ixcham, maqsadli interfeyslar.
DIP va Dependency Injection yordamida qatlamlarni mustaqil qilish.
Yomon me'moriy belgilarni aniqlash va xavfsiz tozalash.
Voris sinf bazaviy sinf o'rnida muammosiz va kutilmagan xatosiz ishlashi shart
Bird.fly() metodidan Penguin meros olsa, pingvin ucha olmagani sababli dastur xato tashlaydi yoki bo'sh qoladi. Voris bazaviy sinf o'rnini bosa olmaydi.
Bazaviy Bird umumiy bo'ladi, FlyingBird esa alohida kengayadi. Pingvin faqat Birddan meros oladi, fly() esa unga majburlanmaydi.
Mijozlar o'zlari ishlatmaydigan metodlarga bog'lanmasligi kerak
Yuqori darajadagi mantiq quyi detallarga emas, abstraksiyaga tayanishi shart
class UserService: def __init__(self): self.db = PostgresDB(). Agar Postgres o'chsa, barcha unit-testlar qulaydi.
def __init__(self, repo: UserRepository): self.repo = repo. Testda soxta FakeRepo, prodda esa PostgresRepo kiritiladi.
Xato emas, lekin loyihaning parokanda bo'lishidan darak beruvchi belgilar
Funksiya 50+ qatordan iborat.
Bitta ulkan sinf hamma ishni boshqaradi.
Murakkab obyektsiz hamma narsani satrda saqlash.
Metod o'z sinfidan ko'ra begona sinfga tayanadi.
Katta funksiyadan mantiqiy bo'lakni yangi kichik funksiya qilib ajratish.
Ortiqcha mas'uliyatlarga ega sinfni alohida kichik sinflarga bo'lish.
Avval testlar yoziladi, keyin kod tuziladi va testlar yashil ekani tekshiriladi.
Mavjud kodga unit-testlar yozib oling.
Bitta metod yoki nomni o'zgartiring.
Barcha testlar yana yashil ekaniga ishonch hosil qiling.
Kichik va aniq xabar bilan Git'ga yozing.
Qaysi tamoyil «Mijoz-sinflar o'zlari ishlatmaydigan metodlarga bog'lanmasligi kerak» deb talab qiladi?
UserService sinfiga UserRepository interfeysi orqali Dependency Injection qo'llang.FakeUserRepository yaratib, servisingizni tashqi bazasiz unit-test bilan to'liq tekshiring.Ishonchli polimorfizm va ortiqcha yuklardan xoli ixcham interfeyslar.
Abstraksiyalarga tayanish va oson testlanadigan elastik arxitektura.
Code Smells alomatlarini testlar himoyasida bosqichma-bosqich yo'qotish.
Creational patterns: Factory Method va Singleton arxitekturasi
3-hafta · 9-dars