Jak NIE należy pisać kodu
27 października 2009
Właśnie pracuję nad jednym małym zleceniem. Problem w tym, że jestem podwykonawcą, odpowiedzialnym tylko za jeden element, całą resztę zrobił już inny programista. Muszę teraz edytować jego kod i dostosowywać do nowych potrzeb.
No to zaczynamy. Otwieram pliki. No super... Zamykam pliki i przełączam edytor na ISO
Mogliby się ludzie już przestawić na UTF.
Otwieram pliki
Plik konfiguracyjny z kilkudziesięcioma definicjami stałych, dla każdej tabeli w bazie jedna definicja. Nie podoba mi się to ale niech już tak będzie.
Szukam plików odpowiedzialnych za element którym mam się zająć. Na ftp trochę bajzel, można było to chyba trochę lepiej pogrupować ale nie jest tragicznie.
Jest coś dotyczącego zlecenia, otwieram. Ech, wszystko wpakowane w funkcje. Przykład:
Funkcje fajna rzecz ale ich używanie obwarowane jest pewnymi zasadami. Każdy lepszy kurs i każda książka o tym mówi. Założę się, że są tutaj funkcje, które używane są tylko w jednym miejscu przez co funkcjami nie powinny być. Olać, idę dalej.
Przeglądam pliki, cały HTML oparty na tabelkach. Oj dostałoby się koledze za to na publicznych forach
Olać, HTML w tym zleceniu to już zupełnie nie moja bajka.
O, jest jakiś kawałek o logowaniu. Od razu w oczy rzuca się ten kod (fragment zapytania do MySQL):
-
login='".$_POST['email']."'
To już nie jest takie śmieszne, ktoś się włamie a potem powiedzą, że moja wina. Trzeba będzie poprawić...
Identyfikator połączenia z bazą danych trzymany w sesji? Przyznam, że się nie spotkałem
Przyzwyczaiłem się już do angielskiego nazewnictwa plików, zmiennych itd. dlatego rażą mnie w oczy polskie słowa. Ale tu już się czepiać nie będę, wielu programistów tak robi, sam kiedyś tak pisałem. Musiałem się potem przestawić jak zacząłem pisać kod w wielonarodowych zespołach.
Pisałem już, że kod PHP jest całkowicie wymieszany z HTML'em?
Dodajmy do tego, że wszystko jest pozamykane w dziesiątkach funkcji i mamy niezły mętlik. Nie lubię programować gdy nad kodem muszę się zastanawiać jak nad wierszem: "Co autor miał na myśli?".
Jak już jesteśmy przy domyślaniu się to wspomnę, że jest zero komentarzy w kodzie.
Dobra, czas zacząć pracować. Znalazłem to co mnie interesuje. I od razu szok:
-
$zapytanie="SELECT login,email FROM `"._CONF_table_users."`;";
-
$wykonaj=$Connect->MysqlQueryRet($zapytanie);
-
if($Connect->GetValue('error_mysql')==False){
-
$i=0;
-
if($wiersz['email']==$_POST['email']||$wiersz['login']==$_POST['login'])$i++;
-
}
-
if($i>0)$ret=$RETURN_KONTO[1][0];else $ret=$RETURN_KONTO[0][0];
-
}
Jak z PHP mam do czynienia już 6 czy 7 rok tak jeszcze takiego cuda nie widziałem. Czy ten programista nigdy nie słyszał o warunkach WHERE w zapytaniach SQL? Wyciągać całą zawartość tabeli tylko po to żeby sprawdzić czy czasem nam się konto nie zdubluje? :/ Paranoja... Nie chce myśleć co się będzie działo z serwerem gdy na stronie zarejestruje się więcej niż kilka tysięcy ludzi.
Po powyższym wiedziałem już, że łatwo z tym zleceniem nie będzie
Na tym zakończę tą "recenzję" bo chociaż są jeszcze inne błędy, niektóre naprawdę poważne, to recenzowanie nie jest celem tego wpisu. Teraz kilka pytań bez odpowiedzi.
- Czy powinienem zwrócić programiście uwagę na jego błędy?
- Czy powinienem powiadomić właściciela projektu o kwiatkach jakie zgotował im ich programista?
- Czy powinienem poprawić chociaż te błędy, które jako tako dotyczą mojego zlecenia czy pojechać szablonem, który wyznaczył główny programista i mieć zlecenie z głowy?
- Czy powinienem o tym pisać na blogu?
Odpowiedzi na pytania wcale nie są proste. Albo zacznę interweniować i wszyscy mnie znienawidzą a sam będę miał tylko więcej nerwów i pracy albo nie odezwę się ani słowem i będę miał spokój ale strona będzie przez następne trzy lata łatana, pewnie przez tego samego programistę.
Z powyższego wpisu można wyciągnąć kilka wniosków.
- Po pierwsze, trzeba naprawdę dużo praktyki żeby zacząć dobrze programować.
- Po drugie, nie należy oszczędzać na programistach
Nie wiem ile temu chłopakowi płacą ale kod jest słaby a projekt ciągnie się już pół roku i pewnie jeszcze trochę potrwa nim strona pojawi się w sieci. Lepszy programista zainkasowałby odpowiednio dużo kasy ale zrobiłby to porządnie a oni już by zarabiali. - Po trzecie, na rynku chyba nie ma wielu dobrych programistów... Dostaję na to coraz więcej dowodów.
Zachęcam do dyskusji w komentarzach. Co o tym wszystkim myślicie? Co doradzacie?

Dzisiaj dostałem oficjalną informację, że zostanę zatrudniony w Media Regionalne Sp. z o.o. Trochę to wszystko trwało...
Pamiętacie ten kultowy tekst z filmu Killer?
Blog przede wszystkim o Internecie i mojej pasji jaką jest tworzenie stron www. Ale nie ograniczam się do jednej tematyki, piszę o wszystkim o czym mam ochotę :-)