Təbəqələr və asılılıq oxları: hamısı içəriyə
Təbəqələr və asılılıq oxları: hamısı içəriyə

Təbəqələr

Böyük proqramı təbəqələrə bölmək hər hissənin yalnız bir işlə məşğul olmasını təmin edir:

  • Domen (domain): varlıqlar və biznes qaydaları (Task.complete()); heç nəyə (DB, veb) bağlı deyil.
  • Servislər (use cases): ssenarilər: "tapşırığı yarat", "tamamla"; domeni və repozitoriya interfeyslərini koordinasiya edir.
  • İnfrastruktura: DB, fayl, HTTP, e-poçt: hər şey "xaricdəki" detallar.
  • UI / API: CLI, veb səhifə, REST: istifadəçi ilə ünsiyyət.

Əlaqəli: SRP, bağlılıq və birləşmə.

Domen təbəqəsi

Domen sinifləri sadə Python obyektləridir: qaydalar onların daxilində yaşayır, verilənlər bazasından xəbərləri yoxdur. Buna görə onları saniyələr içində test etmək olar.

python
from dataclasses import dataclass

@dataclass
class Task:
    id: int
    title: str
    done: bool = False

    def complete(self):
        if self.done:
            raise ValueError("task already done")
        self.done = True

t = Task(1, "write tests")
t.complete()
print(t)
try:
    t.complete()
except ValueError as e:
    print("error:", e)
text
Task(id=1, title='write tests', done=True)
error: task already done

Asılılıq qaydası