Command Query Separation (CQS)
Command Query Separation (CQS) սկզբունքը
CQS-ի հիմնական գաղափարները
CQS-ն բաժանում է մեթոդները երկու տեսակի՝
- Queries (հարցումներ) – ստանում են տվյալներ, բայց չեն փոխում օբյեկտի վիճակը։
- Commands (պատվերներ) – փոխում են օբյեկտի վիճակը, բայց ոչինչ չեն վերադարձնում։
Վատ օրինակ (CQS-ի խախտում)
class User {
private balance: number = 100;
getBalanceAndDeduct(amount: number): number {
this.balance -= amount; // Միաժամանակ փոխում է վիճակը և վերադարձնում արժեք
return this.balance;
}
}
Խնդիրը. Այս մեթոդը և՛ հարցում է կատարում, և՛ փոփոխում է վիճակը, ինչը խախտում է CQS սկզբունքը։
Լավ օրինակ (CQS-ի պահպանում)
class User {
private balance: number = 100;
getBalance(): number {
return this.balance; // Մաքուր հարցում, ոչինչ չի փոխում
}
deductBalance(amount: number): void {
this.balance -= amount; // Պատվեր, չի վերադարձնում արժեք
}
}
Այժմ getBalance() պարզապես վերադարձնում է արժեք, իսկ deductBalance(amount) կատարում է գործողություն՝ առանց վերադարձնելու որևէ բան։
Ինչու՞ օգտագործել CQS
- Կոդը դառնում է ավելի կանխատեսելի – դու միշտ գիտես, թե որ ֆունկցիաները փոխում են վիճակը և որոնք՝ ոչ։
- Թեստավորումը դառնում է ավելի հեշտ – հարցումները կարելի է թեստավորել առանց կողմնակի էֆեկտների։
- Կոդը հեշտությամբ հասկանալի է – հստակ է, թե երբ և ինչ է փոխվում։
- Արդյունավետություն (multi-threaded) համակարգերում – հեշտացնում է կոնֆլիկտների կառավարումը։
- 0
- 5
Մեկնաբանություններ
Մեկնաբանություն չկա։ Կարող ես լինել առաջինը։
Գրել մեկնաբանություն
ՄԵկնաբանություն ավելացնելու համար պետք է մուտք գործելՄուտք