Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php]jak pisać kod
wNogachSpisz
post
Post #1





Grupa: Zarejestrowani
Postów: 1 233
Pomógł: 87
Dołączył: 6.03.2009

Ostrzeżenie: (40%)
XX---


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:
  1. $dom->getElementsByTagName('table')->item($i)->$trList->item($j)->getElementsByTagName('a')->item(0)->getAttribute('href')


Jeśli wiesz, to spróbuj teraz napisać to samo przy pomocy preg_match biggrin.gif

Ten post edytował wNogachSpisz 29.02.2012, 11:34:40
Go to the top of the page
+Quote Post
nospor
post
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 tongue.gif
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

Go to the top of the page
+Quote Post
wNogachSpisz
post
Post #3





Grupa: Zarejestrowani
Postów: 1 233
Pomógł: 87
Dołączył: 6.03.2009

Ostrzeżenie: (40%)
XX---


Mam nadzieje, że nigdy nie będę musiał usuwać BUGów w twoim kodzie..
Go to the top of the page
+Quote Post
nospor
post
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

Go to the top of the page
+Quote Post
Orzeszekk
post
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 smile.gif


--------------------
"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
Go to the top of the page
+Quote Post
by_ikar
post
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
Go to the top of the page
+Quote Post
wNogachSpisz
post
Post #7





Grupa: Zarejestrowani
Postów: 1 233
Pomógł: 87
Dołączył: 6.03.2009

Ostrzeżenie: (40%)
XX---


Cytat(Orzeszekk @ 29.02.2012, 11:46:24 ) *
Za testy jednostkowe sie wezcie a nie kłócicicie sie o pierdoły smile.gif

Chodzi o wygodę, nie wydajność - zawsze myślałem że PHP jest jęyzkiem dla wygodnickich smile.gif
Go to the top of the page
+Quote Post
nospor
post
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

Go to the top of the page
+Quote Post
Crozin
post
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 biggrin.gif
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.
Go to the top of the page
+Quote Post
Orzeszekk
post
Post #10





Grupa: Zarejestrowani
Postów: 260
Pomógł: 14
Dołączył: 8.09.2011

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


Cytat(wNogachSpisz @ 29.02.2012, 11:48:13 ) *
Chodzi o wygodę, nie wydajność - zawsze myślałem że PHP jest jęyzkiem dla wygodnickich smile.gif


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
Go to the top of the page
+Quote Post
nospor
post
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

Go to the top of the page
+Quote Post
Sephirus
post
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 smile.gif Z kolei przy sprawdzaniu na przykład czy string zaczyna się od "coś" wystarczy dać strpos() zamiast preg_match('/^coś/si') itd... Zatem IMHO używanie preg_match jak i innych technik jest poprawne tam gdzie jest wydajne i daje zamierzony efekt smile.gif

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 smile.gif

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 smile.gif

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... haha.gif
- Czemu ta strona ładuje się w 10 sekund?
- Bo tak mi było wygodniej...

tongue.gif


--------------------
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...
Go to the top of the page
+Quote Post
Uriziel01
post
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 wink.gif

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 ? sciana.gif

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
Go to the top of the page
+Quote Post
nospor
post
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.
wink.gif

Cytat
Swoją drogą czemu do cholery służy ten temat ?
TEż o to pytałem, ale nie uzyskałem odpowiedzi smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Orzeszekk
post
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
Go to the top of the page
+Quote Post
Sephirus
post
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 smile.gif

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... smile.gif Zasady są takie same - różni się na ogół jedynie samo tworzenie i używanie wyrażeń jednak w większości przypadków dany "pattern" działa w wielu miejscach bez zmian tongue.gif


--------------------
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...
Go to the top of the page
+Quote Post
Methestel
post
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.
Go to the top of the page
+Quote Post
by_ikar
post
Post #18





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


Cytat(Sephirus @ 29.02.2012, 13:07:41 ) *
To nie jest do końca tak smile.gif

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... smile.gif Zasady są takie same - różni się na ogół jedynie samo tworzenie i używanie wyrażeń jednak w większości przypadków dany "pattern" działa w wielu miejscach bez zmian tongue.gif


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 wink.gif
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.08.2025 - 19:07