![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 2.11.2003 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
Cześć
Mam wątpliwość Wiem, ponieważ sam się o tym przekonałem, że można napisać dość zaawansowany skrypt bez użycia żadnej funkcji (własnej). Czy używanie funkcji przyśpiesza działanie skryptów ? Pozdr Oldo |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 223 Pomógł: 0 Dołączył: 13.01.2003 Skąd: 3rd ball of mud behind a big ball of burning gas Ostrzeżenie: (0%) ![]() ![]() |
Używanie funkcji spowalnia działanie skryptów.
Pozdrawiam. -------------------- It's Time to Join the PLD Linux Generation!
<? while (!$success) { $try++; } ?> |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 6.11.2003 Ostrzeżenie: (0%) ![]() ![]() |
Cytat Używanie funkcji spowalnia działanie skryptów.
Pozdrawiam. A picie mleka powoduje raka... ![]() Możesz jakoś uzasadnić to co napisałeś, bo mnie jakoś nie udało ci się przekonać. -------------------- kociou
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 223 Pomógł: 0 Dołączył: 13.01.2003 Skąd: 3rd ball of mud behind a big ball of burning gas Ostrzeżenie: (0%) ![]() ![]() |
Cytat Możesz jakoś uzasadnić to co napisałeś, bo mnie jakoś nie udało ci się przekonać.
Łapatolgicznie rzecz biorąc przedstawiam dwie możlwiości, (nie rozpisuje się na ten temat gdyż w tej chwili nie mam wiele czasu): 1. Kod z użyciem funkcji [php:1:0a3f3ec86f]<?php function pokazTekst() { echo 'tekst'; } pokazTekst(); ?>[/php:1:0a3f3ec86f] 2. Kod bez użycia funkcji [php:1:0a3f3ec86f]<?php echo 'tekst'; ?>[/php:1:0a3f3ec86f] Proponuję zrobić testy pomiaru generowania skryptu i porównać wyniki. Oczywiście dla powyższych przykładów różnice będą znikome. Przy użyciu funkcji interpreter php'a jest bardziej obciążony co jest chyba oczywiste. Przy czym przy wiekszych projektach w celu optymalizacji kodu używamy funkcji / klas a w efekcie nie powtarzamy się z tymi samymi fragmentami kodu. Cytat A picie mleka powoduje raka...
![]() Możesz uzasadnić swoją wypowiedź? ![]() Pozdrawiam. -------------------- It's Time to Join the PLD Linux Generation!
<? while (!$success) { $try++; } ?> |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 691 Pomógł: 0 Dołączył: 6.08.2003 Ostrzeżenie: (0%) ![]() ![]() |
Cytat A picie mleka powoduje raka...
![]() Być może... Cytat Możesz jakoś uzasadnić to co napisałeś, bo mnie jakoś nie udało ci się przekonać.
Wykonanie funkcji wiąże się z dodatkowymi operacjami takimi jak wyszukanie w słowniku funkcji tej właściwej, zmiana kontekstu zmiennych (globalne zmienne przestają być widoczne), czy wstępna inicjalizacja. To zawsze zabiera niezerowy czas. Spoglądając jednak z szerszej perspektywy to po pierwsze te operacje przy mocy obliczeniowej współczesnych komputerów wykonują się niezauważalnie krótko, a po drugie wygoda i porządek w kodzie w przypadku używania funkcji rekompensują całkowicie takie opóźnienia. |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 2.11.2003 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
Czyli zdania są podzielone :-)
W takim razie odpuszczę sobie pisanie funkcji ponieważ doskonale sobie radzę bez nich. Natomiast porządek w skryptach można bez problemu utrzymać stasując inne metody : - komentarze - stosowanie includowania w instrukcjach war. - i jeszcze raz komentarze Pozdr. Oldo |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarząd Postów: 2 277 Pomógł: 6 Dołączył: 27.12.2002 Skąd: Wołów/Wrocław ![]() |
niestety - gdyby tak było, nikt nie marnowałby czasu na wymyslanie funkcji, a potem całej zabawy z projektowaniem obiektowym. A jednak była potrzeba, by to zrobić, i większość programistó w dzisiejszycz czasach własnie tak pracuje (również piszących w php).
Prawda jest niestety również taka, że nie sposób stworzyć większego kodu, nie dzieląc go najpier na funkcje potem również na klasy, któy by zapewniał minimum stabilności i bezpieczeństwa po którejś z rzędu przeróbce i poprawce. Chyba że ktoś ma głowę omnibsa, ale ... i taki pewnie małby problem, (nie mówiąc już o ilości zmarnowanego czasu). Dlatego jestem przekoanany, że nnacznie lepiej jest poświęcić minimalną ilość czasu na naukę pisania w oparciu o funkcje, tak samo jak juz może nieco więcej czasu, któy jest potrzebny na opanowanie programowania obiektowego, ale to i tak bedzie drobnostka w porównianiu z czasem który będzie potrzebny na przerabianie swojego, już pewnie całkiem rozbudowanego projektu, a niewątpliwie kiedyś nadejdzie taka konieczność. -------------------- "Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 2.11.2003 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
Cytat niestety - gdyby tak było, nikt nie marnowałby czasu na wymyslanie funkcji, a potem całej zabawy z projektowaniem obiektowym. A jednak była potrzeba, by to zrobić, i większość programistó w dzisiejszycz czasach własnie tak pracuje (również piszących w php).
Czyli chodzi o trendy :-) Jednak mnie nie przekonałeś, ponieważ cały czas uważam, że jest to kwestia dobrej organizacji i utrzymania porządku w kodzie. Każdy pisze jak uważa i o ile jego skrypty działają i są czytelne (łatwe do modyfikacji) to uważam, że jego metoda jest dobra. http://gadulec.pl W tym nie jest użyta ani jedna funkcja a wszystkie skrypty były przerabiane wiele razy. Nie jestem przeciwnikiem pisania funkcji ale chciałbym znaleźć sensowny powód, dla którego miałbym zacząć z nich korzystać (przyjęte zasady nie wystarczą) - poruszyłem ten temat ponieważ zauważyłem, że wiele osób pisze funkcje dla banalnie prostych operacji. Pozdr. Oldo |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 680 Pomógł: 0 Dołączył: 1.10.2002 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Cytat [...] poruszyłem ten temat ponieważ zauważyłem, że wiele osób pisze funkcje dla banalnie prostych operacji.
Idea tworzenia funkcji nie miała na celu stosowania ich do "banalnie prostych operacji". Raczej mają na celu ułatwiać prace poprzez wykorzystanie tej samej funkcji w różnych mechanizmach. Jeśli masz cierpliwość przepisywać ten sam fragment kodu kilka razy w skrypcie... no cóż. Każdy pisze tak jak mu wygodniej. :wink: -------------------- "Czerp z innych, ale nie kopiuj ich. Bądź sobą." Michel Quoist
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 2.11.2003 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
Nie klepie tego samego kodu kilka razy - includuje go jeśli jest mi potrzebny.
|
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 71 Pomógł: 0 Dołączył: 5.09.2003 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
A co robisz w przypadku, gdy kod w kilku miejscach się powtarza, ew. zmieniają się pewne zmienne?
P.S. (OT) Na stronie gadulec można ujrzeć ten oto tekst: Cytat Lista forów
Bez komentarza. :-) -------------------- Jak stworzyć szybko działającą aplikację wolną od błędów?
Tego nie wiedzą nawet najstarsi indianie... :D Oprogramowanie jest jak katedra - budujesz, budujesz, budujesz, a potem... modlisz się! |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 71 Pomógł: 0 Dołączył: 5.09.2003 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
Zresztą, co ja bedę kijem Wisłę zawracał. Zobaczysz jak Twoje projekty będą się rozrastały. Wtedy wspomnisz swoje słowa i przyznasz, że ludzie, którzy "ulegają trendom" mieli rację.
![]() A tak na marginesie, próbowałeś obiektówki? Kiedyś o tym sposobie programowania myślałem podobnie jak Ty o funkcjach, że można się bez nich (klas) obyć. Teraz nie wyobrażam sobie życia bez nich. A zdanie moje uległo zmianie, jak moje programy (skrypty) zaczęły się rozrastać do takich rozmiarów, że nie panowałem nad tym, szczególnie gdy przyszło mi poprawiać mały błąd po kilku miesiącach od napisania. -------------------- Jak stworzyć szybko działającą aplikację wolną od błędów?
Tego nie wiedzą nawet najstarsi indianie... :D Oprogramowanie jest jak katedra - budujesz, budujesz, budujesz, a potem... modlisz się! |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarząd Postów: 3 503 Pomógł: 28 Dołączył: 17.10.2002 Skąd: Wrocław ![]() |
Cytat Nie klepie tego samego kodu kilka razy - includuje go jeśli jest mi potrzebny. To tylko prywitywniejsza forma funkcji.
-------------------- |
|
|
![]()
Post
#14
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 335 Pomógł: 6 Dołączył: 7.03.2002 Ostrzeżenie: (0%) ![]() ![]() |
Wzasadzie to podchodzac do problemu w kategoriach mody mozna by zaprzestac pisania w php i skupic sie na asemblerze i cgi.
Pamietam, ze w Pascalu np. aby stworzyc wieksza aplikacje uzywanie funkcji bylo wrecz przymusowe gdyz ograniczenia w pamieci sprawialy, ze wystepowaly bledy. Istota funkcji jest uproszczenie procesu tworzenia aplikacji, jej przenosnosc i latwosc wykorzystania elementow przez innych uzytkownikow. Mysle, ze nie mozna mowic o funkcjach jako trendy gdyz powszechne stosowanie tego przez programistow jest zwiazane z tym, ze jest to przydatne i potrzebne. Poza tym gdyby np. programisci nie uzywali funckji nie mogl bys korzystac chociazby z prostego polaczenia do mysql'a uzywajac funkcji mysql_connect() musial bys includowac plik i robic inne magiczne rzeczy :/ Natomiast w OOP funkcje (metody) sa nierozerwalne z koncepcja obiektowki i bez ich uzywania nie ma mowy o stoswaniu tej tehniki, ktora mimo, ze jest na topie sprawdza sie w wielu zastosowaniach upraszczajac i przyspieszajac proces budowania aplikacji. Jezeli nie uzywasz funkcji Twoje skrypty moga byc ciezkie do zrozumienia dla osoby, ktora uzywa funkcji. P.S. Zastanawiam sie jak bys napisal np taki kod nie uzywajac funckcji: [php:1:466832da08] $a = WykonajDzialanie( 20, 2, 4 ); $b = WykonajDzialanie( 2, 22, 14 ); $c = WykonajDzialanie( 72, 2, 7 ); $d = WykonajDzialanie( $a, $b, $c ); function WykonajDzialanie( $a, $b, $c ) { return ( ( $a + $b ) * $c ) - $b; }[/php:1:466832da08] |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 407 Pomógł: 0 Dołączył: 24.10.2002 Skąd: warszawa Ostrzeżenie: (0%) ![]() ![]() |
prosty przyklad... baaardzo prosty....
[php:1:55055ccf38]<?php // generowanie ilustracji produktow z folderu function loadPic($folda) { $folder= "./prod_img/".$folda; if ($handle = @opendir($folder)) { while (false !== ($file = @readdir($handle))) { if ($file != "." && $file != "..") { $thePic = " <img src="".$folder."/".$file."" class="img" vspace=2 hspace=0 border=0>"; } } closedir($handle); } return $thePic; } // formatowanie naglowka function formTitle($text, $ifList) { if ($ifList) { $col = "#F01309"; $ftext_base = ucfirst($text); } else { $col = "#000000"; $pol_1 = array("ą", "ć", "ę", "ł", "ń", "ś", "ż", "ź", "ó"); $pol_big_1 = array("Ą", "Ć", "Ę", "Ł", "Ń", "Ś", "Ż", "Ź", "Ó"); $pol_2 = array("ą", "ć", "ę", "ł", "ń", "ś", "ż", "ź", "ó"); $pol_big_2 = array("Ą", "Ć", "Ę", "Ł", "Ń", "Ś", "Ż", "Ź", "Ó"); $pol_3 = array ("±", "ć", "ę", "ł", "ń", "¶", "ż", "Ľ", "ó"); $pol_big_3 = array("Ą", "Ć", "Ę", "Ł", "Ń", "Ś", "Ż", "Ź", "Ó"); $ftext_base = strtoupper($text); } $ftext = "<b style="color: ".$col."; text-decoration: none">"; $ftext .= str_replace($pol_1, $pol_big_1, $ftext_base); $ftext = str_replace($pol_2, $pol_big_2, $ftext); $ftext = str_replace($pol_3, $pol_big_3, $ftext); $ftext .= "</b>"; return $ftext; } // formatowanie opisu, $cut to obcinanie przy skroconych opisach function formText($text, $cut) { if ($cut != 0) { $ftext = substr($text, 0, $cut); $ftext .= "..."; } else { $ftext = $text; } return $ftext; } ?>[/php:1:55055ccf38] uzycie przy wyswietlaniu opisow w jednym z n miejsc [php:1:55055ccf38]<?php $tmp_link = $PHP_SELF."?dzial=".$HTTP_GET_VARS[dzial]."&&marka=".$HTTP_GET_VARS[marka]. "&&kat=".$kat[id]; $link = makeLink($tmp_link, "więcej..."); $zaw .= "<tr><td>"; $zaw .= makeLink($tmp_link, loadPic($kat[folder])); $zaw .= " </td><td class="txt_prod">"; $zaw .= formTitle($kat[nazwa],0)."<br>".formText($kat[txt], 200)."<br>".$link; $zaw .= " </td></tr>"; ?>[/php:1:55055ccf38] Cytat W takim razie odpuszczę sobie pisanie funkcji ponieważ doskonale sobie radzę bez nich.[..]
Pozdr. Oldo mozesz mi przedstawic swoja wersje powyszego bez funkcji? -------------------- Zalew :: http://jakubzalewski.info
|
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 70 Pomógł: 0 Dołączył: 22.10.2003 Skąd: Trójmiasto Ostrzeżenie: (0%) ![]() ![]() |
Cytat Czyli chodzi o trendy :-)
Jednak mnie nie przekonałeś, ponieważ cały czas uważam, że jest to kwestia dobrej organizacji i utrzymania porządku w kodzie. Każdy pisze jak uważa i o ile jego skrypty działają i są czytelne (łatwe do modyfikacji) to uważam, że jego metoda jest dobra. W tym nie jest użyta ani jedna funkcja a wszystkie skrypty były przerabiane wiele razy. Nie jestem przeciwnikiem pisania funkcji ale chciałbym znaleźć sensowny powód, dla którego miałbym zacząć z nich korzystać (przyjęte zasady nie wystarczą) - poruszyłem ten temat ponieważ zauważyłem, że wiele osób pisze funkcje dla banalnie prostych operacji. Proste, wystarczy, ze jakis kawalek kodu wykonujesz drugi raz i juz potrzebna jest funkcja, zeby nie robic tego parenascie razy w wielu miejscach. Takim przykladem ktory mi przychodzi na mysl, jest np. funkcja sprawdzajaca poprawnosc maila. Czy jesli na stronie masz kilka razy sprawdzanego maila to za kazdym razem piszesz taki sam kawalek kodu? Bo ja nie. Banalne operacje? Nie. To jest przewidywanie - cos czego brakuje wiekszosci poczatkujacych programistow. Trzeba umiec przewidziec, ze taka funkcja bedzie mi jeszcze moze gdzies potrzebna i wtedy nie bede musial jej pisac, szukac - bede juz ja mial. Przewidywanie nie zawsze sie sprawdza ale w wiekszosci tak (to zalezy tez od doswiadczenia). Swoja droga ostatnio natknalem sie na jakis archaiczny programik w php ktory byl napisany w jednym pliku z inkludami i ja (pomimo komentarzy) nie za bardzo lapalem o co tam chodzi. Chodzi mi o to, ze Tobie sie wydaje, ze twoj kod jest czytelny bo go znasz - pokaz go innym i zobacz czy oni cos z tego rozumieja - wtedy sie dowiesz jaki jest Twoj kod... Ogolnie - zastanow sie dobrze zanim zaczniesz pisac swoj kod - zastanow sie nad jego przyszloscia i pomysl gdzie moznaby zastosowac funkcje a gdzie one nie sa potrzebne. -------------------- "Use the force - read the source"
|
|
|
![]()
Post
#17
|
|
![]() Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 2.11.2003 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
Cytat A co robisz w przypadku, gdy kod w kilku miejscach się powtarza, ew. zmieniają się pewne zmienne?
P.S. (OT) Na stronie gadulec można ujrzeć ten oto tekst: Cytat Lista forów
Bez komentarza. :-) Odmień to jak trzeba :-) Od kiedy forum przestało być czymś pojedynczym jest problem i każda forma jest poprawna. Gdzie niegdzie piszą for :-) czy to jest poprawne ? |
|
|
![]()
Post
#18
|
|
![]() Grupa: Zarejestrowani Postów: 493 Pomógł: 0 Dołączył: 14.06.2003 Skąd: Tomaszów Lubelski/Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
Cytat Gdzie niegdzie piszą for :-) czy to jest poprawne ?
tak. BTW. Witam po malej przerwie ponownie ![]() -------------------- |
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 44 Pomógł: 0 Dołączył: 17.04.2002 Skąd: Jastrzębie Zdrój Ostrzeżenie: (0%) ![]() ![]() |
Dzieki funkcja kod staje sie krotszy a przeciez o to chodzi w skrypcie.
Zreszta nawet include("nazwa_pliku") to funkcja w ktorej podajesz zmienna ze sciezka do pliku, gdzie ma sie wykonywac to co jest w tym pliku, po wykonaniu wraca do dalszej czesci skryptu. Zapraszam tutaj [manual:dbe4132b5e]manual/pl/function.include.php[/manual:dbe4132b5e]. -------------------- GG: 1331870 | Morecambe Bay
|
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 7.11.2003 Ostrzeżenie: (0%) ![]() ![]() |
Cytat Dzieki funkcja kod staje sie krotszy a przeciez o to chodzi w skrypcie.
Popieram w całości! Piszę właśnie "słup ogłoszeniowy" i wybieranie ogłoszeń zależnych od różnych parametrów za pomocą "if" czy "switch" wymaga sporo kodu, przeważnie powtarzalnego, a stosując: [php:1:4a4099851b] ... // funkcja sprawdzająca kategorię function o_kat($nr) { if ($nr == '') { $wynik = (''); } else { $wynik = ("kategoria = "$nr" "); } return $wynik; } // funkcja sprawdzająca podkategorię (np. markę) function o_pkat($nr, $nr2) { if ($nr == '') { $wynik = (''); } else { if ($nr2 == -1) { $wynik = ("AND pk2 = "0" "); } else { $wynik = ("AND pk2 = "$nr" "); } } return $wynik; } // funkcja sprawdzająca rodzaj transakcji (kupno/sprzedaż) function o_trans($nr) { if ($nr == 1) { $wynik = ("AND transakcja = "k" "); } elseif ($nr == 2) { $wynik = ("AND transakcja = "s" "); } else { $wynik = (''); } return $wynik; } ... [/php:1:4a4099851b] (tak na marginesie, wszystkie te funkcje są zawarte w klasie "ogloszenie") wywołuję funkcje i: [php:1:4a4099851b] ... $ogl = new ogloszenie; $o_kat = $ogl->o_kat($par[1]); $o_pkat = $ogl->o_pkat($par[3]); $o_trans = $ogl->o_trans($par[5]); $sql = "SELECT * FROM tabela WHERE ".$o_kat.$o_pkat.$o_trans; ... ?>[/php:1:4a4099851b] i jednym wywołaniem przeszukiwania bazy wyświetlam to, co trzeba, zależnie od wybranych parametrów. i o to przecież chodzi ![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 21.06.2025 - 21:13 |