Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Trup w szafie - poprawność kodu PHP
hombrerro
post
Post #1





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 31.07.2003
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Od jakiegoś czasu współpracuje z dość dużą firmą hostingową, chyba ogólnie znaną. Praca polega na przepisaniu autorskiego (tzn. powstalego wlasnie w tej firmie) kodu systemu administracji kontami użytkowników. Dostałem konto na specjalnym developersko-testowym serwerze będącym "kopią serwera produkcyjnego" z opcjami "developerskimi". Opcja developerska polegała na włączeniu wyświetlania błędów na ekran a nie ich logowaniu.

Tyle tytułem wstępu.

Jak na serwer testowy monitowanie tylko o błędach typu E_ERROR jest dość odważnym posunięciem a tak właśnie było ustawione. Nikomu z wesołych programistów z firmy to najwyrazniej nie przeszkadzalo.
Ja jednak poszukałem dziury w całym, szczególnie po wstępnej analizie kilku plików, i wyprosiłem zmianę ustawień serwera.
Warningi i notice zajmowały srednio na kazdej ze stron około 2 ekranów.

Tyle tytułem rozwinięcia.

Błędy typu E_NOTICE i E_WARNING to też są błędy w kodzie i to czasem poważne i groźne.
Jednak mało kto zwraca na to uwagę chociaż np. w innych językach tego typu błędy są traktowane jako krytyczne zatrzymujące wykonywanie kodu.
php swą popularność (zasłużoną) uzyskało właśnie dzięki uproszczeniu zasad programowania, nie ma kontroli typów zmiennych, deklaracji zmiennych, gospodarowania pamięcią itd. Każdy może przeczytać byle jaki "tutorial" w internecie i programować. Najczęściej php jest pierwszym językiem z jakim takie osoby się zetknęły.
I to jest właśnie bół. php moim zdaniem nie jest wcale dobrym językiem dla początkujących gdyż nie narzuca ścisłych zasad programowania, nie wymaga "sterylności" kodu. Jaki procent osób piszących skrypty php przejmuje się np. wykorzystaniem zasobów systemowych? W php można olewać pewne reguły i wszystko działa na "stronce". I działa i działa i działa, pojawiają się nowe rozwiązania: bazy danych, szablony, CMSXFCPSy czy cokolwiek a nawyki a właściwiie ich brak zostają na zawsze. I są tak zwanym trupem w szafie.
Później tak się życie potoczy, że może trzeba będzie zrobić coś poważniejszego, jakąś "profeskę". Oczywiście zostanie zrobione, nawet fajnie będzie wyglądać...
I nawet będzie działać, tylko ( życie się toczy ) że wkrótce z aplikacji zacznie korzystać 100 razy więcej osób niż się to zakładało i zaczną się schody. Bo wszystko zacznie się sypać, zapychać, zawieszać, zapętlać a serwer zacznie umierać.

Przykład "systemu administracji" pokazuje to wszystko w praktyce.
I tak:
inkrementowane zmienne nie mają początkowej wartości ( a co najśmieszniejsze ta sama zmienna jest używana kilkakrotnie w module i jest inkrementowana od niewiadomo jakich wartości. Jedna z takich praktych powodowała błąd widoczny dla użytkowników)
- zmienne pochodzące z tablic $_POST, $_GET, $_COOKIE są ledwo co sprawdzane - zakłada się tylko, że zmienna jest albo jej nie ma. To są jedyne dwa stany istniejące w świadomości programistów.
- indeksy w tablicach są stałymi: $tablica[cos_tam]
- funkcje coś robią ale nie wiadomo czy im się udało
- itd.

Ale niestety nie jedyny przykład. Jakiś miesiąc temu instalowałem gdzieś system CMS - zdaje się że było to Envolution - też pojawiło się pare takich "gniotów" choć poziom zdecydowanie wyższy (i tu jest to chyba nieuwaga a nie olewactwo).

Dodatkowo dzisiaj ściągnąłem sobie ze strony php.skryptoteka.pl kilka okazów - no i to już jest "wolna amerykanka", oprócz kilku wyjątków, bałagan totalny. A najgorsze jest to, że ktoś sobie napisze "prosty licznik odwiedzin" który działa chyba tylko dlatego, że ma szczęście, wydali go do sieci z której pobierze go 1000 osób i wszyscy będą już "prosty licznik odwiedzin" mieli za sobą. A autor takiego oprogramowania zyska poważanie w środowisku (1000 downloadów).

Przepraszam jeżeli kogoś znudziłem ale postanowiłem dać upust swoim frustracjom spowodowanym poprawianiem bylejakiego kodu od patrzenia na który aż oczy bolą.
Wysłałem ten post na forum PRO bo uważam, że poprawne kodowanie jest największym profesjonalizmem. Myślę, że powinno się na to zwracać uwagę wielu osobom korzystającym z tego portalu - szczególnie początkującym. A tak przy okazji: fajnie w sumie, że tak gęsto i często odsyłacie błądzących do manuala może gdyby zapoznać się z nim a nie z tutorialem w sieci jakość kodu trochę by się podniosła.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Jojo
post
Post #2





Grupa: Zarejestrowani
Postów: 405
Pomógł: 1
Dołączył: 19.09.2003
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Cytat(halfik @ 2004-12-13 16:18:43)
ogolnie w sprawie: czasem nie warto sprawdzac pewnych rzeczy, wszystki zalezy od kontekstu, jesli mamy 100% pewnosc ze nie musimy bo ... to po co?

A ja powiem tak: "Rozwój cywilizacji informatycznej to wyścig między programistami, którzy wytwarzają coraz łatwiejsze programy użytkowe dla idiotów, a światem produkującym coraz lepszych gatunkowo idiotów." (patrz moja sygnaturka)
Uważam, że nigdy nie możesz mieć 100% pewności, że nie musisz czegoś sprawdzać. Użytkownicy niektórych programów potrafią robić tak głupie rzeczy, że w głowie to się nie mieści. Jedynymi danymi, których nie musisz dokładnie sprawdzać są te, które sam generujesz i sam wysyłasz.

Cytat(Vengeance @ 2004-12-16 15:00:16)
tylko, że czasem te 30% to tak na prawde 0,3 sekundy ;]
I jak dla mnie to zbyt mały zysk aby o niego "walczyć"

Pomnóż sobie 0,3 sekundy przez 1000 wyświetleń w ciągu godziny i już dostajesz oszczędność 5 minut czasu procesora. A zapewniam Cię, że 1000 wyświetleń strony w ciągu godziny to wcale nie jest ogromny serwis.

A teraz do rzeczy:
php jest przez wiele osób postrzegane jako "jakiśtam wynalazek do pisania skryptów na strony". Sądzę, że właśnie dlatego powstają takie kalekie programy jak wspomniane wyżej, w których warningi i noticy zajmują dwie strony. Jak już kilka osób przyznało php jest językiem, który "zachęca" do bałaganiarstwa i ja równiż się z tym zgadzam. Niestety nie możemy nic na to nie poradzić. Jedynym wyjściem jest zabranie się za siebie i pisanie poprawnego kodu, zgodnego z jakimś przyjętym standardem oraz uświadamianie kogo się da, że php jest pełnoprawnym Językiem Programowania a nie jakimśtam wynalazkiem do pisania "skrypcików" na "stronkę" i są tu dokładnie takie same reguły jak w każdym innym Języku. Jedyną różnicą jest to, że niektóre z nich są ukryte przed programistą, co wcale nie oznacza, że możemy się do nich nie stosować.

Ten post edytował Jojo 16.12.2004, 15:09:10
Go to the top of the page
+Quote Post

Posty w temacie
- hombrerro   Trup w szafie - poprawność kodu PHP   12.12.2004, 14:58:39
- - sopel   bardzo ładnie powiedzianie. myślę, że powinno to n...   12.12.2004, 15:27:09
- - .dragonfly   Bardzo duza wage przywiazuje do czystosci i steryl...   12.12.2004, 16:50:16
- - shima   Nabycie dobrych przyzwyczajeń wymaga napisania set...   12.12.2004, 17:21:43
- - czachor   Świetny tekst @hombrerro. IMO wydaje mi się, że ta...   12.12.2004, 17:26:12
- - shima   Cytat(czachor @ 2004-12-12 17:26:12)Jeszcze c...   12.12.2004, 17:35:50
- - czachor   Trochę przesadziłem, fakt, ale chodziło mi właśnie...   12.12.2004, 17:41:09
- - pillot   no a nie myślicie, że takie luzackie podejście do ...   12.12.2004, 21:17:44
- - Strzałka   No dobrze. A jeżeli mam taki bardzo prosty skrypt:...   12.12.2004, 22:21:26
- - hombrerro   Powinieneś najpierw sprawdzić czy jest wogóle coś ...   12.12.2004, 23:18:48
- - Krolik   Swietny tekst, @hombrerro. I na dodatek aktualny n...   13.12.2004, 09:38:12
- - shima   Cytat(Krolik @ 2004-12-13 09:38:12) Cytat(.....   13.12.2004, 10:33:42
- - patrycjusz   no to pozwole się wtrącić co do kodu autorstwa mo...   13.12.2004, 12:01:29
- - halfik   hmm... a i owszem, ze roznego rodzaju skrypty na s...   13.12.2004, 15:18:43
- - shima   Cytatale z drugiej strony np. pisze dla roznych lu...   13.12.2004, 15:27:16
- - Krolik   CytatCytat(...) to w C/C++/Pascalu moze miec oplak...   14.12.2004, 12:11:33
- - halfik   Cytat(shima @ 2004-12-13 16:27:16)czyli pomag...   15.12.2004, 11:54:15
- - xarr   Ogolnie temat fajny i imo potrzebny. Sam piszac zw...   16.12.2004, 12:54:22
- - bela_666   Cytatpoprawnosc kodu, ktora mniej lub bardziej wpl...   16.12.2004, 13:45:09
- - Vengeance   tylko, że czasem te 30% to tak na prawde 0,3 sekun...   16.12.2004, 14:00:16
- - dr_bonzo   Cytatprzeprowadzono testy i kod bez żadnych białyc...   16.12.2004, 14:56:56
- - Jojo   Cytat(halfik @ 2004-12-13 16:18:43)ogolnie w ...   16.12.2004, 15:04:27
- - DeyV   @bela_666 - a ja gdzieś słyszałem o jakimś słynnym...   16.12.2004, 15:05:20
- - Vengeance   Cytat(Jojo @ 2004-12-16 16:04:27)Cytat(Vengea...   16.12.2004, 15:27:41
- - sf   E, 30%? Nie chce mi się wierzyć. Pozatm zawsze moż...   16.12.2004, 16:00:43
- - xarr   Przyklad z html(dokladnie xhtml) + css i finalnie ...   16.12.2004, 18:32:04
- - Dabroz   Hmm, IMHO kolorowanie składni i robienie ładnych w...   19.12.2004, 14:00:50
- - shima   Cytat(sf @ 2004-12-16 16:00:43)(...) Tylko ja...   19.12.2004, 14:10:13


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 28.12.2025 - 22:25