• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Czytelniejsza wersja kodu.

Konkurs Mistrz Programowania
0 głosów
217 wizyt
pytanie zadane 19 stycznia 2019 w C i C++ przez Huberti Gaduła (4,500 p.)

Witam, która wersja Twoim zdaniem jest lepsza i dlaczego? Czy da się to zapisać lepiej?

Wersja 1:

class WordShortener {
public:
	//Only letters, digits, dollars, and underscores are allowed.
	bool isAllowed(const std::string& word) const;
}

Wersja 2:

class WordShortener {
public:
	bool doesItHaveOnlyLettersDigitsDollarsAndUnderscores(const std::string& word) const;
}

 

2 odpowiedzi

+2 głosów
odpowiedź 19 stycznia 2019 przez multim Obywatel (1,830 p.)
wybrane 19 stycznia 2019 przez Huberti
 
Najlepsza
Jak się ma nazwa metody do jej logiki?

Można skrócić słowo, jeżeli spełnia ww. warunki. Ale metoda zwraca wartość bool, więc klienta obchodzi tylko to czy podane słowo jest obsługiwane, nie jakie musi spełniać warunki. Dlatego pierwsza wersja jest jak najbardziej wystarczająca. W takim przypadku zastanowiłbym się nawet o usunięciu komentarza - szczegółowe działanie tej metody będzie można sprawdzić w definicji. I na tym właśnie polega poprawne pisanie czystego (samokomentującego się) kodu.

Drugiej wersji starałbym się unikać, ponieważ choć jest samokomentująca, to jest po prostu za długa i jeżeli jej działanie polega na tym co opisałem wyżej, to taki opis jest nieelegancki. Z resztą co mówi klientowi tego interfejsu że słowo zawiera wymienione znaki? Musiałby wcześniej wiedzieć czy to jest pożądana właściwość, czy nie. Idąc tą drogą rozumowania potrzeba by kolejnych słów do opisania drugiej metody isWordAllowed(), która korzysta z doesItHaveOnlyLettersDigitsDollarsAndUnderscores() co prowadzi do nadmiarowości.
+2 głosów
odpowiedź 19 stycznia 2019 przez k222 Nałogowiec (30,150 p.)

Jak dla mnie to obie kody przypominają ten, użyty do napisania strony PKP - polecam zajrzeć na ten temat wykop -kod pkp.

Generalnie  skupiłeś się na nazwie metody, a przecież jest ona częścią jakiejś klasy, więc (jak dobrze rozumiem intencje) nazwij klasę tak, żeby było wiadomo co ona przedstawia (a jak masz kilka podobnych klas, to wyciągnij ich część wspólną i stwórz je jako klasy potomne) - jeżeli patrzę na klasę i wiem co tam ma  być, to metoda isAllowed jest wystarczająca - nawet bez komentarzy. Drugiej formy zdecydowanie bym unikał, bo wg. mnie zmienna składająca się z 9 słów to troszkę przesada i czytanie kodu który ma powiedzmy pięć takich do przyjemnych nie należy. 

Podobne pytania

0 głosów
2 odpowiedzi 207 wizyt
pytanie zadane 14 sierpnia 2018 w C i C++ przez Huberti Gaduła (4,500 p.)
+1 głos
2 odpowiedzi 254 wizyt
pytanie zadane 24 września 2018 w C i C++ przez Huberti Gaduła (4,500 p.)
0 głosów
1 odpowiedź 243 wizyt
pytanie zadane 11 kwietnia 2019 w C i C++ przez Huberti Gaduła (4,500 p.)

93,656 zapytań

142,577 odpowiedzi

323,100 komentarzy

63,174 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...