Command Query Separation (CQS)
Command Query Separation (CQS) սկզբունքը
CQS-ն բաժանում է մեթոդները երկու տեսակի՝
Վատ օրինակ (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) կատարում է գործողություն՝ առանց վերադարձնելու որևէ բան։