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.
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)Task(id=1, title='write tests', done=True)
error: task already done