Jestem w projekcie, który ma ok. 6-8 lat, a programuję ~ 7 msc. Staram się w miarę pozyskiwanej wiedzy (a tej przewija się ogrom) poprawiać co się da, żeby trochę ułatwić sobie życie. Jak się przekonałem nie zawsze wychodzi na plus, bo czasami przekombinowuje, albo stosuję się do kiepskich rad.
Kilka tygodni temu dostałem zadanie, w którym z grubsza chodziło o to, że nie zgadzały się liczby w raporcie. Był to dosyć spory raport, ponieważ brała w nim udział chyba tona tabel. Jak wszedłem do modelu to się mocno zdziwiłem, bo moim oczom ukazało się mniej więcej coś takiego:
public function getReport() {
$result = $this->db->query(
// 300 linii niczym nie zmąconego beztroskiego zapytania
);
return $result;
}
W kontrolerze oczywiście było kolejne 150 linii parsowania inputu tej cudownej funkcji, bo potrzebne było różne pogrupowanie wyników. Ponieważ mamy nieścisłości w bazie, to niektóre kolumny reprezentujące datę utworzenia nazywają się na 10 różnych sposobów, więc to było kolejne 20 linii dodatkowego kodu, przy czym mi się udało to trochę zwinąć.
Spróbowałem coś z tym zrobić. Efektem tego jest klasa, która w sumie jest wielkości tego jednego zapytania, ale przeniosłem również tam logikę z kontrolera i trochę ją upiększyłem.
Proszę Was o opinię na temat tego kawałka kodu. Z góry dziękuję wytrwałym :)