![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 233 Pomógł: 87 Dołączył: 6.03.2009 Ostrzeżenie: (40%) ![]() ![]() |
Kiedy pisze kod staram się unikac wyrazen regularnych, xpathy i podobnych – na pierwszy rzut oka – nic nie mówiących linii kodu.
Wole zapisac dłuższy kod, gdzie po rzuceniu okiem na lika linii już wiem o co chodzi, niż wyrażenie regularne nad którym musze zatrzymać oko żeby zrozumieć.. Niby niepozorna rzecz. Jednak gdy przychodzi momenty, gdy masz do naprawienia buga, dużo łatwiej analizować kod który jest „rozmyty” -- tutaj brakuje mi terminu, bo to zjawisko pewnie ma fachową nazwę. Jak wy sobie z tym radzicie.. P.S Zadanie: kto wie co robi ten kod:
Jeśli wiesz, to spróbuj teraz napisać to samo przy pomocy preg_match ![]() Ten post edytował wNogachSpisz 29.02.2012, 11:34:40 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Ja tam nie unikam wyrażen. One wręcz powodują ze kod jest czytelniejszy. Zamiast 100 linijek potwórków masz jedno wyrażenie i już.
Kod co podałeś pobiera atrybut HREF wszystkich A znajdujących się w tabelach. Cytat Jeśli wiesz, to spróbuj teraz napisać to samo przy pomocy preg_match I że niby to ma być argument za nieużywaniem preg_match?? No bez jaj... jedne rzeczy robi się przy pomocy wyrażen inne nie. Wszystko zależy co potrzebujesz zrobić.Armaty używasz by rozwalić np. mur a nie zabić muchę. Wg twojej argumentacji, zawsze należałoby używać packi na muchy, nawet idąc na zamek ![]()
Powód edycji: [nospor]:
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 233 Pomógł: 87 Dołączył: 6.03.2009 Ostrzeżenie: (40%) ![]() ![]() |
Mam nadzieje, że nigdy nie będę musiał usuwać BUGów w twoim kodzie..
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Bo używam wyrażen, tam gdzie ich używać należy? WOW, jestem pod niesamowitym wrażeniem...
Nie znasz się na wyrażeniach i próbujesz zasugerować, że każdy kto ich używa to zło wcielone? Czy może jednak nie znasz wyrażen regularnych i próbujesz się tylko usprawiedliwić? Wybacz, nie rozumiem sensu tego tematu. Moze go wytłumaczysz?
Powód edycji: [nospor]:
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 260 Pomógł: 14 Dołączył: 8.09.2011 Ostrzeżenie: (0%) ![]() ![]() |
Za testy jednostkowe sie wezcie a nie kłócicicie sie o pierdoły
![]() -------------------- "The first 90 percent of the code accounts for the first 90 percent of the development time. The remaining 10 percent of the code accounts for the other 90 percent of the development time."
Tom Cargill, Bell Labs |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Jak jest jakaś linijka kodu, którą trzeba by dłużej analizować żeby ją zrozumieć, to taką linijkę dobrze opisać jakimś komentarzem, wtedy przy późniejszych modyfikacjach nie trzeba się zastanawiać, wystarczy przeczytać komentarz.
EDIT: ajj zapomniałem, że w twoich tematach miałem się nie wypowiadać.. Ten post edytował by_ikar 29.02.2012, 11:49:05 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 233 Pomógł: 87 Dołączył: 6.03.2009 Ostrzeżenie: (40%) ![]() ![]() |
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
@wNogachSpisz a teraz ja mam dla ciebie zadanie
Z tekstu: 'sdfds ds fds sd fsdlsk sd sdf jsdkf sd#cos.tam# ddsfsdfdsfd sfsd sd fds ds sd sd fdsfdsfsdf sd #inne.cos# asd dsf dsfdsf sdf sd #ala.ola#dsfdsfsdfdsfdsfdsfdsdsf#blabla#sdfsdfsdfsdf ' Wyodrębnij mi wszystkie teksty z #tutaj.cos# ps: oczywiście nie używaj wyrażen, tylko swojego "wygodnego" sposobu -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Cytat Jeśli wiesz, to spróbuj teraz napisać to samo przy pomocy preg_match Ale czekaj... wiesz, że wyrażenia regularne nie służą* do parsowania dokumentów XML/SGML-podonych? Tak więc czego oczekujesz... że jakiś idiota będzie się męczyć ze zrobieniem czegoś kompletnie nieodpowiednim narzędziem?![]() * z drobnymi wyjątkami, gdzie mamy bardzo okrojony "dokument", a raczej jego maluteńki, bardzo "regularny" fragment. |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 260 Pomógł: 14 Dołączył: 8.09.2011 Ostrzeżenie: (0%) ![]() ![]() |
Chodzi o wygodę, nie wydajność - zawsze myślałem że PHP jest jęyzkiem dla wygodnickich ![]() Testy jednostkowe pisze sie właśnie dla własnej wygody, żeby mieć kontrolę nad tym czy dziala aplikacja czy nie. Wyobrazasz sobie testowanie 100 tys linijkowej aplikacji w PHP za pomocą stada testerów przed każdym releasem? Przetestowanie każdego wątku, każdego biegu wydarzen jaki może się wydarzyć? Moje doswiadczenie mi podpowiada ze jest to niemozliwe, pewnie w duzych firmach dałoby rade dużym nakładem kosztów, ale to i tak sie nie oplaca. 8 godzinne klikanie na stronie i sprawdzanie czy wszystko dziala to praca godna gimnazjalisty a nie normalnego czlowieka. Pisanie czegos ciekawego, bez testów, w PHP, języku który błędy w pisowni pokazuje nie programiscie, w oknie IDE, tylko zdziwionym uzytkownikom jest czystym masochizmem. Psucie dobrych kawałków kodu, przez przypadkowe zmiany w innych sprawia ze czlowieka szlag trafia i nigdy nie wie czy ta aplikacja w sumie dziala czy nie dziala. a jak jakas linijka kodu jest trudna do zrozumienia to sie ja podobno powinno wydzielac do osobnej metody, ale ja sie nie znam Ten post edytował Orzeszekk 29.02.2012, 11:59:33 -------------------- "The first 90 percent of the code accounts for the first 90 percent of the development time. The remaining 10 percent of the code accounts for the other 90 percent of the development time."
Tom Cargill, Bell Labs |
|
|
![]()
Post
#11
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
@wNogachSpisz i jak tam idzie zadanko? No to jest dosłownie na minutę roboty, wiec czemu to tak długo trwa?
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Wyrażenia regularne stosuje się do ciągów tekstów posiadajacych pewną regularność. Zatem do walidacji pól, danych otrzymanych od użytkownika nadają się wyśmienicie.
Do czego jeszcze: - do plików CSV jeśli mamy określoną liczbę pól (oczywiście wystarczy tutaj explode() ale są tą teksty regularne więc zastosowanie preg_match też jest poprawne) - do struktur ze znacznikami (XML,HTML itp) w niektórych przypadkach gdy prawdziwe jest założenie o regularności - do wielu wielu innych rzeczy gdzie mamy do czynienia z tekstami regularnymi... Oczywiście wielu z nas próbuje zastępować preg_matche (bo to najłatwiejsze) na inne metody, będące bardziej wydajne. Trzeba się jednak zastanowić i może nawet sprawdzić czy zawsze druga metoda jest wydajniejsza od preg_matchy ... Wcale bym się nie zdziwił gdyby pomysł autora tematu z wykorzystaniem DOM był o wiele mniej wydajny dla masy wyszukiwań w HTML/XML ![]() ![]() Tak więc podsumowując - programowanie i język jest dla programistów... robimy tak by było wydajnie i wygodnie dla nas. Więc jest pełna dowolność (oczywiście z zachowaniem rozwagi) w wyborze techniki/techonologii. Osobiście często używam zarówno preg_matchy jak i kombinacji strpos'a, czy DOM'a - ale zależnie od potrzeby ![]() P.S. Jeśli się naprawdę dobrze zna wyrażenia i XPath'y to debuging kodu wcale nie jest aż tak skomplikowany - choć faktycznie przy "rozmytym" kodzie jest nieco prościej ![]() Cytat Chodzi o wygodę, nie wydajność - zawsze myślałem że PHP jest jęyzkiem dla wygodnickich Ciekawe podejście do tematu programowania... Musze to powiedzieć mojemu CEO przy jednym z projektów przygotowywanym na gigantyczny ruch... ![]() - Czemu ta strona ładuje się w 10 sekund? - Bo tak mi było wygodniej... ![]() -------------------- If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;) Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka... |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 307 Pomógł: 37 Dołączył: 9.11.2010 Skąd: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
@nospor - Panie moderatorze, taka zgryźliwość Ci nie przystaje
![]() A co do samego tematu, to go nie rozumiem. Chcę parsować XML'e to używam narzędzi do parsowania XML'a nie wyrażeń regularnych. Reg expy to najnormalniejsza w świecie rzecz, brak najomości wyżej wymienionych to raczej wstyd aniżeli powód do przechwałek (ale to tylko moje zdanie), sam nie czuje się zbyt mocno w wyr. regularnych ale pozwalają one tak neisamowicie przyspieszyć pewne procesy że nie wyobrażam sobie życia bez nich. Cytat Chodzi o wygodę, nie wydajność - Łat da fak ? ![]() EDIT: Swoją drogą czemu do cholery służy ten temat ? Takie coś to może co najwyżej do działu offtopic trafić, nie tutaj. Ten post edytował Uriziel01 29.02.2012, 12:39:36 |
|
|
![]()
Post
#14
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat @nospor - Panie moderatorze, taka zgryźliwość Ci nie przystaje 9. Moderator nie jest zgryźliwy. Moderator dobitnie próbuje na przykładach pokazać, że przeciwnik zboczył troszkę ze ścieżki dobra (znaczy z dobrego programowania) i że argumenty których używa są poprostu bez sensu. ![]() Cytat Swoją drogą czemu do cholery służy ten temat ? TEż o to pytałem, ale nie uzyskałem odpowiedzi ![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 260 Pomógł: 14 Dołączył: 8.09.2011 Ostrzeżenie: (0%) ![]() ![]() |
regexpy są super, szkoda tylko że niemal każdy język ma własną składnię wyrażen regularnych, jakby nie mogli z nich zrobic standardu jak html, skoro wszystkie robią prawie to samo.
-------------------- "The first 90 percent of the code accounts for the first 90 percent of the development time. The remaining 10 percent of the code accounts for the other 90 percent of the development time."
Tom Cargill, Bell Labs |
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
To nie jest do końca tak
![]() Większość języków/technologii wspiera przynajmniej w jakiejś części regexy z POSIX Jeżeli ktoś używa PHP, JS, AS lub pisze regułki pod Apache czy SQL to sobie bez problemu poradzi... ![]() ![]() -------------------- If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;) Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka... |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 46 Pomógł: 10 Dołączył: 30.06.2008 Ostrzeżenie: (0%) ![]() ![]() |
xPath - "nic nie mówiąca linia kodu"? Właśnie dzięki xPath mógłbyś przerobić swojego potworka tak że na pierwszy rzut oka widać byłoby co wyciągasz z XML-a.
|
|
|
![]()
Post
#18
|
|
![]() Grupa: Zarejestrowani Postów: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
To nie jest do końca tak ![]() Większość języków/technologii wspiera przynajmniej w jakiejś części regexy z POSIX Jeżeli ktoś używa PHP, JS, AS lub pisze regułki pod Apache czy SQL to sobie bez problemu poradzi... ![]() ![]() Dokładnie tak, a jak już się zna jakieś średnio zaawansowane podstawy (jak się ogarnia przewidywania i pozostałe warunki) to czy to w większości języków jakoś nie specjalnie straszny jest ten regexp. Mnie regexpy akurat pasują, jak się je w w miarę rozumie, to są całkiem przyjemne ![]() |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 19:07 |