![]() ![]() |
Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%)
|
Witam,
Ostatnio zastanawiałem się, jakie są często spotykane błędy, a raczej złe nawyki bądź po prostu bardzo nie wydajne lub nieoptymalne kawałki kodu jakie można znaleźć/napisać w PHP (IMG:style_emoticons/default/smile.gif) Zbieram też antywzorce. Gdzież indziej mógłbym się o to zapytać niż nie tutaj (IMG:style_emoticons/default/smile.gif) Przykład wszystkim pewnie dobrze znany:
Poprawna forma:
@aras785 - masz rację dodałem poprawną formę (IMG:style_emoticons/default/smile.gif) Szukam podobnych konstrukcji, antywzorców programowania itp. Zależy mi na tym by były one proste (IMG:style_emoticons/default/smile.gif) Nie szukam jakichś skomplikowanych 100 linijkowych kodów na dowód tego, że są źle napisane - chodzi mi o same zamysły (IMG:style_emoticons/default/smile.gif) Jeśli znacie jakieś piszcie proszę (IMG:style_emoticons/default/wink.gif) Ten post edytował Sephirus 14.01.2013, 13:41:14 |
|
|
|
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 859 Pomógł: 177 Dołączył: 29.10.2009 Ostrzeżenie: (0%)
|
@Sephirus pisz również poprawne formy, ponieważ wejdzie początkujący i skąd będzie wiedział? Ps. w/w formę też używam czasami (IMG:style_emoticons/default/smile.gif)
Ostatni pomagając na forum popełniłem błąd przy usuwaniu danych z bazy. Błędy zapis: Poprawny: Objaśnienie: Jeśli nie znajdzie danego ID to go nie usunie i tak błąd wywali. //poprawiłem. Kopiuj wklej i nie zauważyłem. Ten post edytował aras785 14.01.2013, 13:58:45 |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 4 298 Pomógł: 447 Dołączył: 16.11.2006 Ostrzeżenie: (0%)
|
Formatowanie kodu też to obejmuje? (IMG:style_emoticons/default/wink.gif)
Temat: Najczestsze bledy Przejrzyj dział Oceny. Wypunktowane błędy są w prawie każdym wątku. |
|
|
|
Post
#4
|
|
|
Grupa: Moderatorzy Postów: 36 560 Pomógł: 6315 Dołączył: 27.12.2004 |
Cytat a raczej złe nawyki głupota i lenistwo.... dwa najczęściej spotykane na forum złe nawyki... (IMG:style_emoticons/default/smile.gif) A z bardziej przyziemnych rzeczy to np. zapytania w pętli, gdzie główna pętla idzie z zapytania a w niej znowu pętla z zapytania (IMG:style_emoticons/default/smile.gif) A już szczyt szczytów zapytania w rekurencji.... |
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%)
|
@aras785 Twój kod nadal jest dla mnie nie zrozumiały (nie wiem po co ten SELECT na początku) - ale przeanalizuję to (IMG:style_emoticons/default/smile.gif)
@!*! formatowanie (stricte) nie jest błędem a raczej niedbalstwem. Chyba, że ktoś nie lubi używać {} przy pętlach i instrukcjach a potem coś do nich dopisuje i się dziwi że zawsze działają ;P
Temat z najczęściej pojawiającymi błędami jest mi znany - myślałem że wyłapie coś jeszcze osobno (IMG:style_emoticons/default/smile.gif) Pomysł z przeglądaniem działu "oceny" jest jednak dobry - dzięki (IMG:style_emoticons/default/wink.gif) tam na pewno coś znajdę (IMG:style_emoticons/default/wink.gif) @nospor Na głupotę nie ma rady ;P ale nie mogę zakładać że każdy na nią cierpi - sam robię masę błędów a potem mi wstyd ;P ale nie uważam się za totalnego głupola (IMG:style_emoticons/default/smile.gif) Co do lenistwa... true, true... :/ Zapytania w pętli to faktycznie częsta przypadłość (IMG:style_emoticons/default/biggrin.gif) Dużo ludzi na początku nie wie co to JOIN, nie ma pojęcia co to relacyjność :/ no i przede wszystkim jak już napisali jakieś zapytanie i im działa, to już go nie ruszają i piszą nowe. Każdy z nas się chyba zgodzi, że na początku nauki termin "wydajność" jest nam obcy (IMG:style_emoticons/default/smile.gif) Ale zaintrygowałeś mnie tą rekurencją z zapytaniami!! (IMG:style_emoticons/default/biggrin.gif) Jak gdzie (IMG:style_emoticons/default/tongue.gif) w życiu tego nie widziałem - nie wiem nawet jak to napisać masz jakiś przykład? (IMG:style_emoticons/default/biggrin.gif) |
|
|
|
Post
#6
|
|
|
Grupa: Moderatorzy Postów: 36 560 Pomógł: 6315 Dołączył: 27.12.2004 |
Cytat Na głupotę nie ma rady ;P ale nie mogę zakładać że każdy na nią cierpi - sam robię masę błędów a potem mi wstyd ;P ale nie uważam się za totalnego głupola Nie, nie o taką głupotę mi chodziło. Błędy przytrafiają się każdemu.Cytat Ale zaintrygowałeś mnie tą rekurencją z zapytaniami!! Jak gdzie w życiu tego nie widziałem - nie wiem nawet jak to napisać masz jakiś przykład? A proszę bardzo, pierwszy przykład z brzegu: Drzewko, tabela: ID ID_PARENT ..... No i koleś pobiera rekurencyjnie całe drzewko z góry na dół. Najpierw wierzchołek, potem jego dzieci, potem dzieci dzieci i tak dalej....wszystko w ładnej niesamowidzie mulącej rekurencji (IMG:style_emoticons/default/smile.gif) Inny przykład kodów:
No i koleś się dziwi ze mu się wyswietal jeden i trzy, a przecież wyraźnie zmienna to 1 To jest też dobre:
(IMG:style_emoticons/default/smile.gif) Albo to:
(IMG:style_emoticons/default/wink.gif) |
|
|
|
Post
#7
|
|
|
Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%)
|
Ok przyznam szczerze... z tym drzewkiem... że bym na to nie wpadł (IMG:style_emoticons/default/smile.gif) co prawda od jakiegoś czasu sporo siedzę w SQL'u i obczajam jego wszelkie tajniki (poza administracją może bo to mi na nic) i może przez to wydaje mi się to dziwne, choć kiedyś kto wie - może i sam tak pisałem (IMG:style_emoticons/default/smile.gif)
Ten drugi błąd to też bardziej pod formatowanie (IMG:style_emoticons/default/smile.gif) I kurcze coś w tym jest - trzeba pisać "ładnie", estetycznie, zachowywać te wszystkie (jak to się na początku wydaje) głupie zasady (IMG:style_emoticons/default/tongue.gif) ja osobiście nie przestrzegam tylko jednej. Czytałem parę propozycji jak pisać i formatować kod czy o nazewnictwie zmiennych itd. (także dla różnych frameworków itp.) więc mi się to utrwaliło i z tego wszystkiego mam swoją jedną wizję łączącą po kawałku ze wszystkiego ale nie przestrzegam zasady o tym, żeby linia miała <=80 znaków i nie znam osoby (osobiście) która tego przestrzega (oczywiście nie pisze ciurkiem ale jak coś mi wyskoczy poza 80 znaków to tak zostawiam po prostu). Najgorszy błąd jaki mi się kiedyś przydarzył i naprawdę nie wiedziałem co z tym robić (pomogło dopiero przepisanie kodu od nowa (IMG:style_emoticons/default/haha.gif) ) wyglądał tak: (może nie błąd, ale przeoczenie)
Oczywiście ta pętla odwalała trochę roboty i to nie łatwej i nigdy nie chciała się wyświetlić :/ co bym nie robił (IMG:style_emoticons/default/tongue.gif) Głupi średnik (który swoją drogą sam nie wiem jak się tam dostał zmarnował mi kupę czasu bo zdebugowałem cały skrypt praktycznie (IMG:style_emoticons/default/tongue.gif) EDIT: Te dwa ostatnie powalają nospor ale fakt nawet, że chyba na forum raz z czymś takim "pomogłem" (IMG:style_emoticons/default/tongue.gif) Ten post edytował Sephirus 14.01.2013, 14:10:59 |
|
|
|
Post
#8
|
|
|
Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%)
|
Tyle jest błędów i nieprawidłowych konstrukcji popełnianych przez ludzi, że ten cały wątek chyba nie ma celu, bo po pierwsze chyba miałby z 500 stron, a po drugie całe programowanie sprowadza się do poprawnego pisania algorytmów, więc ten temat jest tak jakby jak całe to forum (IMG:style_emoticons/default/goatee.gif)
|
|
|
|
Post
#9
|
|
|
Grupa: Moderatorzy Postów: 36 560 Pomógł: 6315 Dołączył: 27.12.2004 |
No i cała masa złego porównywania typów, nie rozróżnianie =, ==, ===
|
|
|
|
Post
#10
|
|
|
Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%)
|
Ja do najgłupszych błędów, który popełniłem 30 sekund temu mogę zaliczyć zostawienie patelni na gazie, a potem robienie rzeczy przy komputerze. (ktoś mnie poprosił o pomoc z pewnym problemem natury programistycznej i zapomniałem o patelni). W kuchni pełno dymu, prawie spaliłem dom (IMG:style_emoticons/default/smile.gif) . (ale omlet z cynamonem i tak wyszedł smaczny)
Ten post edytował pyro 14.01.2013, 14:16:27 |
|
|
|
Post
#11
|
|
|
Grupa: Moderatorzy Postów: 36 560 Pomógł: 6315 Dołączył: 27.12.2004 |
No i najważniejsze zło, jakie robią zarówno początkujący jak i ci, którzy uważają się za profesjonalistów:
Na to mi normalnie brak słów |
|
|
|
Post
#12
|
|
|
Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%)
|
@pyro Masz całkowitą rację niestety - to jest "rzeka", można by wymieniać w nieskończoność mimo to uważam, że dobrze jest ciągle wałkować ten temat (IMG:style_emoticons/default/smile.gif) dlaczego?
Jestem sobie programistą, uważam że pozjadałem wszystkie rozumy (IMG:style_emoticons/default/smile.gif) wchodzę na taki wątek i czytam, tu się uśmiechnę, tam się zaśmieje ale może, w pewnym momencie naglę przystanę i stwierdzę - o kurde... nie wiedziałem, że tak nie można (IMG:style_emoticons/default/smile.gif) No i poza tym chciałbym zebrać nieco materiałów na ten temat by się nimi podzielić z "nowymi" w pracy (IMG:style_emoticons/default/smile.gif) i ich na to uczulić a sam wszystkiego nie pamiętam (IMG:style_emoticons/default/sad.gif) @nospor Co do operatorów to fakt, ale bardzo podobała mi się odpowiedź Erixa w temacie o najczęstrzych błędach, że "if($costam = 123)" to nie bug - tylko feature (IMG:style_emoticons/default/smile.gif) To mi nasunęło pewną myśl: rzadko spotykam się z tym żeby ktoś to stosował :/
Czym może to być spowodowane że rzadko to ludzie stosują? Niewiedza? Gorsza przejrzystość kodu? |
|
|
|
Post
#13
|
|
|
Grupa: Moderatorzy Postów: 36 560 Pomógł: 6315 Dołączył: 27.12.2004 |
własnie w dziale przedszkole pojawił się problem z mojego posta wczesniej:
if ($zm = 'b') Bład tak czesty, ze nawet podczas pisania posta pojawiają się takie tematy (IMG:style_emoticons/default/biggrin.gif) |
|
|
|
Post
#14
|
|
|
Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%)
|
No i najważniejsze zło, jakie robią zarówno początkujący jak i ci, którzy uważają się za profesjonalistów: Na to mi normalnie brak słów @nospor, bzdury Pan pleciesz! To nie jest żaden błąd, tylko konstrukcja, która choć nie zawsze stosowana z rozwagą, w wielu przypadkach usprawiedliwiona. |
|
|
|
Post
#15
|
|
|
Grupa: Moderatorzy Postów: 36 560 Pomógł: 6315 Dołączył: 27.12.2004 |
Cytat Czym może to być spowodowane że rzadko to ludzie stosują? Niewiedza? Gorsza przejrzystość kodu? Wg. mnie chodzi o przejrzystość. Sam tego nie stosuję choć dobrze wiem jak to działa (IMG:style_emoticons/default/smile.gif) Wolę mieć przejrzysty kod niż super hiper featured (IMG:style_emoticons/default/wink.gif) @pyro to if ($zm = 'b') te tez nie jest błąd, tylko konstrukcja, rzadko stosowana z rozwagą (IMG:style_emoticons/default/wink.gif) Pomijam przypadki, gdy wyłączenie E_NOTICE jest usprawiedliwione. Mówię o sytujacji, gdy to w żaden sposób nie jest usprawiedliwione, np. gdy zaczynasz projekt od 0 i lecisz już z taką dyrektywą. Wówczas to jest fatalny błąd! NIe chce mi się powtarzać, więc podam tylko linka http://nospor.pl/notice-wyswietlac-czy-nie.html |
|
|
|
Post
#16
|
|
|
Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%)
|
Pomijam przypadki, gdy wyłączenie E_NOTICE jest usprawiedliwione. Mówię o sytujacji, gdy to w żaden sposób nie jest usprawiedliwione, np. gdy zaczynasz projekt od 0 i lecisz już z taką dyrektywą. Wówczas to jest fatalny błąd! NIe chce mi się powtarzać, więc podam tylko linka http://nospor.pl/notice-wyswietlac-czy-nie.html No to nie dopowiedziałeś i można było bardzo łatwo to źle zrozumieć. Trzeba było od razu dać link do artykułu, bo z tego co napisałeś można zrozumieć, że stosowanie tego jest zawsze złe. |
|
|
|
Post
#17
|
|
|
Grupa: Zarejestrowani Postów: 178 Pomógł: 49 Dołączył: 16.04.2012 Skąd: Bytom Ostrzeżenie: (0%)
|
|
|
|
|
Post
#18
|
|
|
Grupa: Moderatorzy Postów: 36 560 Pomógł: 6315 Dołączył: 27.12.2004 |
Cytat No to nie dopowiedziałeś i można było bardzo łatwo to źle zrozumieć. Trzeba było od razu dać link do artykułu, bo z tego co napisałeś można zrozumieć, że stosowanie tego jest zawsze złe. Dobrze, przepraszam. Niepotrzebnie przyjąłem, że każdy zrozumie o co mi chodzi (IMG:style_emoticons/default/smile.gif) @Tuminure o właśnie, ludzie często nie wiedzą do czego służą nawiasy oraz co to ważność operatora i często nie kumają czemu 2+3*4 nie jest równe 20 (IMG:style_emoticons/default/smile.gif) Oczywiście mówię tu w odniesieniu do mysql i php |
|
|
|
Post
#19
|
|
|
Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%)
|
Co do errorów to prawda... ale to jest celowe jakby nie patrzeć ;P zapominają o cudzysłowach itp. a potem jak im wyskakuje wiele notice'ów a mogą je ukryć (bo przecież wszystko działa) to sobie je olewają i ukrywają (IMG:style_emoticons/default/tongue.gif)
U mnie w firmie jak raz włączyliśmy na głównym (starym) portalu logowanie do pliku wszystkich błędów z noticami włącznie to przez 30 minut plik z logiem miał 10GB (IMG:style_emoticons/default/smile.gif) Ten post edytował Sephirus 14.01.2013, 14:41:14 |
|
|
|
Post
#20
|
|
|
Grupa: Moderatorzy Postów: 36 560 Pomógł: 6315 Dołączył: 27.12.2004 |
Cytat U mnie w firmie jak raz włączyliśmy na głównym (starym) portalu włączyliśmy logowanie do pliku wszystkich błędów z noticami włącznie to przez 30 minut plik z logiem miał 10GB No właśnie, i weź potem w takiej ilości błędów znajdź człowieku jakąś literówkę.... nie ma szans.... i dlatego zawsze od początku trzeba pisać poprawnie. Gdy się tego nie zrobiło to potem już pozostaje jedynie na stałe wyłączenie błędów NOTICE i szukać przez 5 godzin jakis banalnych błędów, które z NOTICE znalazłoby się w dwie sekundy
|
|
|
|
![]() ![]() |
|
Aktualny czas: 27.11.2025 - 14:26 |