no enter danger stop very close

Propagowanie złych wzorców

Dostałem ostatnio do sprawdzenia kod kolegi. Projekt w jakim pracujemy to ponad dziesięcioletnia aplikacja pisana w sumie przez trzy firmy. Kto pracował w takim środowisku ten wie jak skomplikowana może być utrzymanie go. Projekt wykorzystuje wzorzec MVC na swój własny, unikalny sposób.

Zadanie jakie miał wykonać to dodać nową kolumnę w bazie danych i w zależności od jej wartości i wartości innej kolumny robić coś tam. To coś tam wykonywane było w sześciu miejscach. Kolega w tych sześciu miejscach dodał linijkę:

if (a && b) {

}

Niby wszystko w porządku bo w podobne instrukcje warunkowe mamy w całym projekcie. Przypomnę tylko że mamy MVC. Co jeśli będzie trzeba dodać do bazy kolejne pole? We wszystkich 6 instrukcjach będziemy edytować warunek?

Ne przepuściłem tego kodu i poprosiłem o dodanie odpowiedniej metody w modelu. Teraz kod wygląda tak:

if (model->medtoda()) {

}

Podobny zapis jest raczej nie spotykany w projekcie. Zgodnie z tym co już jest napisane powinniśmy użyć pierwszego kawałka kodu. W ten sposób zachowalibyśmy pewną konwencję. Uważam jednak że o ile do konwencji nazewnictwa metod czy zmiennych powinniśmy się dostosować o tyle do złych praktyk programistycznych już nie.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *