Zasada KISS: „Keep it simple, stupid”, może zostać dosłownie przetłumaczona na: „rób to prosto, głupku”. Mówi ona o tym, abyśmy tworzyli kod w jak najprostszy i najbardziej czytelny sposób. Już dziś sprawdź, czego się wystrzegać, aby spełniać KISS.
Rób to prosto, głupku!
KISS jest zasadą z zakresu clean code, kolejną, którą omawiam na blogu. Jest ona bardzo chwytliwa, z uwagi na swój skrót, a jeszcze bardziej na jego rozwinięcie: keep it simple, stupid. Mówi ona o tym, abyśmy pisali swój kod w najbardziej oczywistej formie w jakiej się da i utrzymywali go w prostocie oraz czystości. Co to w praktyce oznacza? A no tyle, abyśmy nie przesadzali z kombinacjami w swoich implementacjach, a zamiast tego dostarczali prosty i krótki kod, który może być z łatwością zrozumiany przez inną osobę.
O tej zasadzie trzeba zawsze pamiętać, jeśli pracujemy w zespole, co jest oczywiście bardzo powszechne. Nie chcemy przecież dostarczać rozwiązań, które jedynie my sami będziemy w stanie rozwijać i utrzymywać.
Jak wygląda kod niespełniający KISS?
KISS-a możemy interpretować na bardzo wiele sposobów. Można nawet rzec, że ile osób tyle wersji, bo dla jednych coś może być „proste i czyste”, a dla innych nie. Dla mnie KISS oznacza, że kod nie jest skomplikowany, a raczej czytelny i poukładany. Spójrzmy więc poniżej, gdzie widzimy klasę z nieułożonymi elementami. Dodatkowo, metoda add() realizuje prostą logikę, w najbardziej skomplikowany sposób, w jaki się chyba da.
class Money {
public readonly amount: number;
add(money) {
const currencies = AllowedCurrencies.filter(
(currency: Currency) => currency !== this.money.currency)
);
if (currencies.include(money.currency)) {
throw new Error('Wrong currency');
} else {
return new Money(this.amount + money.amount, this.currency);
}
}
constructor(
public readonly currency: Currency,
amount: number
) {
this.amount = amount;
}
}
Keep it simple, stupid
Pojechałem po bandzie? Wydaje mi się, że tak. Posprzątajmy bałagan w powyższym kodzie. Po pierwsze, poukładajmy metody i zunifikujmy konstruktor. Następnie uprośćmy metodę add(), poprzez wyrzucenie tego filtra. Pozbądźmy się if-else’a sprawdzającego czy waluta jest dozwolona, a na samym końcu zwróćmy nowy obiekt Money. Przydałby się jeszcze zwracany typ dla metody dodającej i jej argumentu. Voilà! Daj znać w komentarzu, która wersja jest prostsza.
class Money {
constructor(
readonly currency: Currency,
readonly amount: number
) {}
add(money: Money): Money {
if (this.currency !== money.currency) {
throw new Error('Wrong currency');
}
return new Money(this.amount + money.amount, this.currency);
}
}
Podsumowanie
- Twórz kod, który jest krótki i prosty, aby spełniać zasadę KISS.
- O KISS powinien pamietać każdy kto pracuje w zespole.
- Stosowanie tej reguły jest banalnie proste, a daje duże efekty.
Dodaj komentarz