Artykuł powinien mieć tytuł 'Jak nie pisać kodu'.
Kod nie powinien być pisany w taki sposób, żeby następna osoba, która go modyfikuje, zastawiała się o co w nim chodzi. Ma być prosty i zrozumiały. KISS. A bardziej zrozumiałe jest zdefiniowanie funkcji kup(), sprzedaj(), które, jeśli nie chcemy powtarzać kodu w obu funkcjach, mogą się odwołać do zmien_ilosc_towaru().
Gdyby ktoś napisał to w taki sposób, wtedy Autor nie musiałby się zastanawiać o co w kodzie chodzi i mógłby w bardziej pożyteczny sposób spędzić stracony czas.
Jestem programistą od ...nastu lat i za takie konstrukcje wywalałbym z pracy - ja rozumiem jeszcze żeby użyć "magii" tam gdzie bez niej wiązałoby się to z niesamowitą gimnastyką w kodzie, ale w tym przypadku jest to masakryczne nadużycie połączone z zaciemnieniem kodu, tu jeszcze do ogarnięcia bez większego problemu ale strach się bać co jeszcze zmalował w kodzie programista z takimi zapędami...
Metody magiczne w PHP służą do tego by kosztem wydajności uczynić coś skomplikowanego - łatwym.
Autor tutaj przehakerzył jak to się śmiejemy w pracy. Długa droga przed Tobą jeżeli taki kod piszesz.
Ale nie zniechęcaj się. Każdy z nas zaczynał od zera i zapewne wielu z nas do teraz wspomina miło tego typu "pomysły".
Z czasem programista poznaje to co lenistwo i zapamiętuje zasadę:
"Rozwiązanie problemu nie powinno być bardziej złożone niż sam problem".
Jestem programista hobbysta z zamilowania i moze nie mam wielkiego doswiadczenia ale kurcze... Nie rozumiem po prostu dlaczego niektore rozwiazania w kodzie musza byc bardziej skomplikowane niz powinny. Nie znam sie idealnie na php i pisze dopiero swojego pierwszego powaznego cmsa ktory ma szanse byc projektem uzytecznym a nie wynalazkiem. Czasami sie zastanawiam gdy patrze na taki kod czy to ja jestem glupi bo nie moge tego zrozumiec czy osoba ktora go napisala. Jedno musi byc prawdziwe...
Niestety nie jestem w stanie jednoznacznie powiedziec ze to osoba ktora to napisze jest glupia bo moje doswiadczenie nie jest zbyt duze.
W skrócie. Nie dość że autor pokazuje bzdury, nie dość że stara się te bzdury komuś przekazać to jeszcze każe sobie za to płacić :-) Powalająca logika.
Może zamiast krytykować - ogłośmy konkurs na nowy tytuł tego arta ? Moja propozycja:
_________________________________
Zwiększ swoje szanse na rynku pracy - czyli jak stworzyć armię głupców dzięki którym będziesz wyglądał jak profesjonalista.
co robi kurs() ? ustawia, resetuje, zwraca? proponowalbym nawet getKurs()
co robi sprawdz(), transakcja(); czym jest przekazywany parametr do konstruktora? typem prostym? obiektem?
zakladajac ze autor chce pokazac wykozystanie __call($n, $p) to ok. mozna sie domyslic czym jest $p, ale czym jest $n ? z kodu to nie wynika... wg mnie spokonie by mozna bylo wykozystac np switcha do demonstracji czym jest $n, i rzucac wyjatek kiedy w defaulcie. Chyba, ze $zloto->wyzeruj()
czytelnosc kodu(calego): 0
intuicyjnosc kodu: 0
wygoda pisania: 0 (brak dopelaniania skladni)
szybkosc: 0
edit:
*mowie oczywiscie o konstruktorze Portfel'a
*chyba, ze $zloto->wyzeruj() tez jest poprawne.
Już ładny szmat czasu piszę w C++/PHP ale jak autor myśli, że to jest dobry przykład do nauki to "kursantom" współczuję.
Czasami staram się "nowym" w firmie coś pokazać, ale NIGDY nie uczyłbym ich czegokolwiek na przykładzie takich nieczytelnych GŁUPOT!
Cenę towaru powinno się obliczać w klasie portfel, na podstawie ceny jednostkowej. Pomijając już totalną nieczytelność kodu to ten design klas jest po prostu idiotyczny. Bo jak zrealizować na przykład sprzedaż całego złota? Z tak kiepsko zaprojektowanymi klasami prosto się nie da!
Artykuł w założeniu miał pokazać działanie metody __call() w możliwie jak najprostszy sposób osobom, które tej metody dotąd nie znały. W tym użyty przykład sprawdził się doskonale na kilku szkoleniach. Chciałbym przeprosić wszystkich profesjonalistów z taaaaaakim doświadczeniem, że nie napisałem tego wystarczająco jasno. Sugestie by pokazać działanie metody __call() bez użycia metody __call() pominę milczeniem.
Pozdrawiam


© 1998-2026 Dziennik Internautów Sp. z o.o.