![]() ![]() |
Post
#10061
|
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%)
|
Ooo, ten wątek jeszcze żyje? Nieźle.
Pamiętam jak dziś kiedy powstawał (IMG:style_emoticons/default/smile.gif) |
|
|
|
Post
#10062
|
|
|
Grupa: Zarejestrowani Postów: 655 Pomógł: 73 Dołączył: 2.05.2014 Ostrzeżenie: (0%)
|
Nie napisałem że to jest ideał (IMG:style_emoticons/default/wink.gif) Pisane na szybko. Oczywiście że w tym i wielu innych przypadkach lepiej użyć reg_exp. Niech każdy używa czego chce (IMG:style_emoticons/default/wink.gif) Ja czasami z lenistwa wolę regexp '(slowo|slowo2)' niż bawić się w coś innego. Kontekst jest ważny. Jak tam Wasze poniedziałki? Mi łatwiej napisać str_replace (IMG:style_emoticons/default/tongue.gif) W nocy po żone musiałem pojechać po koncercie, także masakra (IMG:style_emoticons/default/biggrin.gif) a jeszcze po pracy meet.js się szykuje. btw: właśnie pierwszy raz w życiu użyłem Trait. Nawet przydatne, co o tym mechanizmie sądzicie? Ten post edytował Forti 2.03.2015, 14:18:37 |
|
|
|
Post
#10063
|
|
|
Grupa: Zarejestrowani Postów: 999 Pomógł: 30 Dołączył: 14.01.2007 Skąd: wiesz ? Ostrzeżenie: (0%)
|
(...) Ostatnio z uporem maniaka próbowałem w kilku miejscach zastosować traitsy i chyba zrobiłem to dobrze, ale skoro mają one zastępować szablony z C++ bądź naokoło wdrażać dziedziczenie po wielu klasach którego nie ma w PHP to dlaczego nie mogę zmienić typów argumentów w poszczególnych metodach. W takim \ArrayAccess na przykład by się to przydało. |
|
|
|
Post
#10064
|
|
|
Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%)
|
Czyli nie masz żadnego argumentu, poza "bo tak, bo ja nie ogarniam". Kolego wykrzyknik-gwiazdka-wykrzyknik, na każdym kroku każdego pojeżdżasz, zastanawiam się po co. Akurat tak się składa, że znam wyrażenia regularne BARDZO dobrze, zresztą nawet na tym forum pomagałem wielokrotnie z regexem. Po raz któryś już pokazujesz, że nigdy nie pracowałeś nad profesjonalnymi projektami, tworzonymi w grupie programistów. W poważnych projektach kod pisze się tak, żeby był czytelny dla pozostałych programistów. I to nie oznacza, że oni są kiepscy i nie potrafią tego odczytać. Wręcz przeciwnie. To oznacza, że oni mają do roboty 100 innych rzeczy i szkoda ich czasu na analizę kodu, który można było napisać prościej. Tylko że tak jak napisałem wcześniej, z wyrażeniami regularnymi na ten moment zwykle nie ma lepszej alternatywy. W przypadku gdy jedynym argumentem jest nie czytelność skomplikowanych wzorców to smutne, ponieważ skomplikowane wzorce z definicji są trudne w czytaniu. Np. prosta walidacja czy mamy do czynienia z kodem pocztowym:
Co jest w tym trudnego do czytania? A zrób to jakimiś funkcjami php. Chętnie porównam wyniki w pętli 1000 ;) No jeśli kod pocztowy to najtrudniejszy przypadek jaki możesz sobie wyobrazić, to się nie dziwię, że tak podchodzisz do tematu ;) |
|
|
|
Post
#10065
|
|
|
Grupa: Zarejestrowani Postów: 655 Pomógł: 73 Dołączył: 2.05.2014 Ostrzeżenie: (0%)
|
Nie, to jest bardzo prosty przypadek, który pokazuje jak regex jest przydatny. Ciężko to zrobić inaczej - czyściej czy krócej.
Trudny przypadek to idealne parsowanie adresu email: http://www.regular-expressions.info/email.html Nawet nie idealne ale zwykłe [a-z0-9]@[a-z0-9].[a-z] już jest trudno zastąpić czym innym pod względem czytelności. A czym bardziej skomplikowany regex na to tym bardziej skomplikowany będzie kod. W końcu zrobi się odzielna klasa - odzielna biblioteka i w końcu cały bundle (IMG:style_emoticons/default/wink.gif) |
|
|
|
Post
#10066
|
|
|
Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%)
|
Podany przez Ciebie wzorzec zaakceptuje nawet np. 7@7@x, więc chyba nie za bardzo. Ja lubię czasem krok po kroku analizować string, nie upychać tego na siłę do jednej instrukcji. Chociaż przyznam się, że zbyt często kończę tworząc jeden wielki wzorzec, no ale czytelne to to potem nie jest.
|
|
|
|
Post
#10067
|
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 10 Dołączył: 17.03.2012 Ostrzeżenie: (0%)
|
Tylko że tak jak napisałem wcześniej, z wyrażeniami regularnymi na ten moment zwykle nie ma lepszej alternatywy. Operatory parserów (parser combinators) albo translatory z gramatyk bezkontekstowych. To dobre rozwiązania do większych problemów. Co do kodu pocztowego, kiedyś słyszałem taki rule of thumb, że jeśli wywołanie wyrażenia regularnego idzie zamknąć w funkcji to jest ok. Jeśli napotkam wywołanie is-zip-code, to nie muszę się przejmować wyrażeniem w środku, tylko wywołać funkcję. Jak chcę refaktoryzować, zmieniać, debugować to i tak muszę pobrudzić ręcę. Ważne jest też ten fakt o wywołaniu - chodzi o to, żeby nie wyciekały instancje matchera i nie było korzystania z grup poza funkcją. Grupy nazwane częściowo rozwiązują ten problem, ale najlepiej żeby zwrócić stosowną strukturę, bo dociekanie co oznacza null albo false w różnych polach gdy wyrażenie się nie dopasowało jest straszne. |
|
|
|
Post
#10068
|
|
|
Grupa: Zarejestrowani Postów: 4 298 Pomógł: 447 Dołączył: 16.11.2006 Ostrzeżenie: (0%)
|
@SmokAnalog - właśnie czekałem na ten moment w którym będziesz pisał mi, albo Fortiemu w jakich to nieprofesjonalnych grupach pracujemy lub pracowaliśmy. Pytanie było proste, nie odpowiedziałeś, bo argument "kod jest mało czytelny" nie jest argumentem, rzecz względna, tak samo jak pisanie czystego SQL na 50 linijek... Można to ładnie formatować, tylko po co, są proste reguły które się nie zmieniają, już nie mówiąc o kolorowaniu całości przez IDE które pomaga jakby ktoś się gubił w nawiasach... język jak każdy inny.
Zapytać na forum php dlaczego należy czegoś unikać... odpowiedź, bo się gubimy w krzaczkach... boskie...A liczyłem na coś choćby... wyciek pamięci w preg_replace_callback... ale nie, krzaczki i nawiasy dziwnie stoją i nie ma czasu ich ogarniać. (IMG:style_emoticons/default/facepalmxd.gif) |
|
|
|
Post
#10069
|
|
|
Grupa: Zarejestrowani Postów: 675 Pomógł: 58 Dołączył: 17.12.2013 Ostrzeżenie: (10%)
|
troche nie ogarniam dyskusji i cisniecia SmokAnalog na te regexy... to powinno byc prosze niz czytanie bajki na dobranoc bo podstawa wyrazen jest logika. jesli komus sprawiaja trudnosc to odnosze wrazenie ze z mysleniem tez moze miec taki problem. to nie jest jakis tam wzorzec projektowy tylko proste wyrazenie opierajace sie o podstawy matematyki wiec wtf? ale to oczywiscie moje osobiste upodobania regexa nad inne funkcje do mielenia stringow. kto co lubi.
@!*! to juz chyba druga dyskusja w ciagu kilku ostatnich dni gdzie Smoku nie potrafi odpowiedziec na proste pytanie. olej bo szkoda nerwow. @Pyton_000, poniedzialek super. 8 godzin ciecia jakis templatow zeby leciec do klienta na 18:30... takze na poczatek tygodnia po l4 14 godzin pracy lacznie z dojazdami (IMG:style_emoticons/default/biggrin.gif) nie ma lekko |
|
|
|
Post
#10070
|
|
|
Grupa: Zarejestrowani Postów: 417 Pomógł: 44 Dołączył: 23.06.2011 Ostrzeżenie: (0%)
|
Ja zauważyłem że Smok zwyczajnie próbuje każdemu wmówić że to On ma racje...
|
|
|
|
Post
#10071
|
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 10 Dołączył: 17.03.2012 Ostrzeżenie: (0%)
|
|
|
|
|
Post
#10072
|
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%)
|
Nie macie przyjemniejszych tematów na Poniedziałek zamiast rzucać się do gardeł? Takie rzeczy to w piątek, bo przynajmniej można się uchlać (IMG:style_emoticons/default/wink.gif)
|
|
|
|
Post
#10073
|
|
|
Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%)
|
Bo wasze argumenty pokazują jasno, że nie mieliście do czynienia z poważnymi problemami programistycznymi. To jest niestety jeden z większych paradoksów na tym świecie, że świeżakowi coś się wydaje trudne, średnio ogarniętemu proste, a ogarniętemu znowu trudne. Wy jesteście w środku tej skali i po prostu nie natrafiliście jeszcze na problemy, gdzie regex nie jest idealnym rozwiązaniem. Wydaje Wam się, że to ja czegoś nie rozumiem, że Wy mnie czegoś uczycie. Ja nic do tego nie mam, kiedyś też mi się wydawało, że umiem więcej niż umiem. Możemy porozmawiać o projektach nad którymi pracowaliśmy i ile czasu programujemy.
tzm, na jakie pytanie nie odpowiedziałem? |
|
|
|
Post
#10074
|
|
|
Grupa: Zarejestrowani Postów: 341 Pomógł: 25 Dołączył: 28.09.2008 Skąd: Lublin Ostrzeżenie: (0%)
|
(IMG:http://dreamatico.com/data_images/popcorn/popcorn-1.jpg)
Ten post edytował usb2.0 2.03.2015, 17:58:10 |
|
|
|
Post
#10075
|
|
|
Grupa: Zarejestrowani Postów: 675 Pomógł: 58 Dołączył: 17.12.2013 Ostrzeżenie: (10%)
|
a Ty do ktorej grupy ogarnietych sie zaliczasz?
1. pytali chlopaki dlaczego regex jest gorszy od Twoich rozwiazan. !*! juz wyraznie podsumowal ta dyskusje. 2. postep technologiczny komputerow. 3 osoby, przez 10 postow o cos Cie pytaly, a Ty zamiast odpowiedzi wciskales swoje prawdy. tutaj jest to samo jak z kolei zauwazyl Posio. x: ktora godzina? Y: zobacz jaki mam fajny zegarek x: ale ja chce wiedziec ktora jest godzina Y: ale to elektroniczny zegarek i tak do porzygu. spadam, czesc |
|
|
|
Post
#10076
|
|
|
Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%)
|
No jakbyście czytali ze zrozumieniem to byście może jednak znaleźli odpowiedzi. Napisałem wyraźnie, że REGEX JEST NIECZYTELNY I TRUDNY DO SZYBKIEJ I BEZBŁĘDNEJ ANALIZY. Teraz widać?
EDIT Do której ja się grupy zaliczam? Do ogarniętej, bo po prostu od wielu lat pracuję jako programista. Chcąc nie chcąc mam styczność z tym na co dzień. Ten post edytował SmokAnalog 2.03.2015, 18:08:40 |
|
|
|
Post
#10077
|
|
|
Grupa: Zarejestrowani Postów: 1 045 Pomógł: 141 Dołączył: 19.09.2006 Skąd: B-tów Ostrzeżenie: (0%)
|
równie dobrze mogę napisać:
REGEX JEST CZYTELNY I ŁATWY DO SZYBKIEJ I BEZBŁĘDNEJ ANALIZY. Teraz widać? nie ? nie widać ? Przykład Panie, bo tak to można całą wieczność dyskutować |
|
|
|
Post
#10078
|
|
|
Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%)
|
Ostatnio miałem do czynienia z pluginem, który parsował stringa strpos-em. String wyglądał mniej więcej tak: {PLUGIN}kategoria/13,jakisParametr=1,jakisParametr=0,jakisParametr=1,jakisParametr=0{/PLUGIN}
Tutaj regex pasuje jak ulał. Podstawiamy wyrażenie i pobieramy dane do ładnych zmiennych za pomocą list(). Proste i eleganckie. Ale nie, ktoś wziął się za to strposem... |
|
|
|
Post
#10079
|
|
|
Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%)
|
Turson, no pewnie - to jest piękny i prościutki przykład do używania regexa. Ja bardzo lubię funkcję preg_replace_callback do parsowania wszelkich shortcode'ów i innych kontekstowo analizowanych tekstów.
Ale antyprzykładem jest przede wszystkim HTML, XML oraz praktycznie każdy tekst pisany przez człowieka w formie zdań, bo wtedy musimy zakładać bardzo wiele możliwości - mnogość białych znaków, nowych linii itd. Taki wzorzec jest potem po prostu brzydki, długi i łatwo w nim o pomyłki. Poza tym, co zresztą zrobił jeden z kolegów wyżej, bardzo często spotykanym i trudnym do wyłapania błędem jest podawanie wymogu znaku kropki jako ".", co potem kończy się dość tragicznie. Nie wiem jakie wrażenie odnieśliście po moich wcześniejszych wypowiedziach, ale prawda jest taka, że ja regexy bardzo lubię, ale nie lubię, gdy są nadużywane lub pisane niechlujnie - gdy np. są zbyt tolerancyjne (jak wzorzec e-maila kolegi) lub za mało (np. odrzucające dwie spacje obok siebie w tekście pisanym). Swoją drogą, metoda na strpos jest jeszcze mniej czytelna niż regex, jeśli się używa tego do czegoś więcej niż sprawdzanie czy ciąg znaków jest obecny czy nie. Do bardziej skomplikowanych operacji na tekście lubię robić to krok po kroku, formatując najpierw tekst do późniejszego przetestowania lub wyłapania czegoś. Ten post edytował SmokAnalog 2.03.2015, 21:50:22 |
|
|
|
Post
#10080
|
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%)
|
Wasza akademicka dyskusja o wyrażeniach regularnych powinna skończyć się dawno temu. Przecież dobre praktyki programowania mówią jasno, że taki nieczytelny dla wszystkich kawałek kodu należy zamienić czytelnym (IMG:style_emoticons/default/smile.gif) czyli na przykład stałą lub zmienną (zależy od kontekstu) o nazwie, która sama się dokumentuje:
Ten post edytował mike 3.03.2015, 10:27:56 |
|
|
|
![]() ![]() |
|
Aktualny czas: 15.06.2026 - 12:48 |