Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Notacja węgierska :)
envp
post 9.01.2007, 10:20:00
Post #1





Grupa: Zarejestrowani
Postów: 359
Pomógł: 1
Dołączył: 16.04.2006
Skąd: Łódź

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


Chiciałbym wiedzieć ilu z was używa i co o niej sądzicie smile.gif
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
My4tic
post 9.01.2007, 10:23:53
Post #2





Grupa: Zarejestrowani
Postów: 260
Pomógł: 0
Dołączył: 4.08.2005

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


Dla mnie podstawa. Zawsze używam.


--------------------
Załóż konto na dropbox.
Go to the top of the page
+Quote Post
sf
post 9.01.2007, 10:32:35
Post #3





Grupa: Zarejestrowani
Postów: 1 597
Pomógł: 30
Dołączył: 19.02.2003
Skąd: Tychy

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


W php się sprawdza znakomicie smile.gif Na prawdę ułatwia informacje co i gdzie trzymamy, zwłaszcza, że w php nie mamy typowania przecież.


--------------------
Zapraszam na mój php blog, tworzenie stron.
Go to the top of the page
+Quote Post
mike
post 9.01.2007, 10:47:03
Post #4





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Dla ułomnego php notacja węgierska (i inne takie) jest światełkiem w tunelu przejrzystości kodu.
Aczkolwiek ja wolę:
bln - boolean
int - integer
flo - float
str - string
arr - array
obj - object
res - resource
Go to the top of the page
+Quote Post
Turgon
post 9.01.2007, 11:00:25
Post #5





Grupa: Zarejestrowani
Postów: 800
Pomógł: 0
Dołączył: 26.11.2005
Skąd: Nowy Sącz

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


Przydatne, ale ja i tak wolę nazywać zmienne zgodnie z przeznaczeniem i to wystarcza biggrin.gif


--------------------
Jah Music Is On My Mind !
Go to the top of the page
+Quote Post
envp
post 9.01.2007, 11:08:54
Post #6





Grupa: Zarejestrowani
Postów: 359
Pomógł: 1
Dołączył: 16.04.2006
Skąd: Łódź

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


Tak, ale można przecież używać zgodnie z przeznaczeniem, a notacja nie tylko ułatwia prace początkującemu. tworząc zmienną:

  1. <?php
  2. $aTablica = $oObiekt->getParams();
  3. ?>

wiemy od razu jakiego typu jest, po co grzebać w klasach i szukać co getParams() zwraca ;]

A co do notacji to skrócona chyba lepsza co ? smile.gif
  1. <?php
  2. $aArray,
  3. $iInt,
  4. $sString,
  5. $bBool,
  6. $oObject,
  7. $rHandle
  8. ?>


No i co myślicie o wielbłądzię ?

  1. <?php
  2. public function getDataArrayedForSomething
  3. ?>


Ps. Ja już sie przyzwyczaiłem i za cholere nie zmienie stylu pisania smile.gif
Go to the top of the page
+Quote Post
mike
post 9.01.2007, 11:26:08
Post #7





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Ja tam jestem zwolennikiem kodowania wg. Code Conventions for the Java Programming Language.
To jest moim zdaniem jedyny właściwy standard.
I właśnie, to jest standard, jeśli chcesz pisać w Java, piszesz wg. Conventions i kropka.
W php standardu nie ma, jest za to śmietnik.

Dlatego wszystko co zbliża mnie w php do Java Conventions jest lepsze od wszystkiego poprzedniego.
Go to the top of the page
+Quote Post
sf
post 9.01.2007, 12:15:55
Post #8





Grupa: Zarejestrowani
Postów: 1 597
Pomógł: 30
Dołączył: 19.02.2003
Skąd: Tychy

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


@envp: piszę tak jak Ty właśnie podałeś, dla mnie jest to optymalny sposób pisania smile.gif)

W php też jest pewna propozycja pear jak powinno się pisać:

http://pear.php.net/manual/en/standards.php


--------------------
Zapraszam na mój php blog, tworzenie stron.
Go to the top of the page
+Quote Post
ikioloak
post 9.01.2007, 12:18:10
Post #9





Grupa: Zarejestrowani
Postów: 416
Pomógł: 0
Dołączył: 8.01.2004

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


Wg mnie okreslanie typow zmiennych poprzez ich nazwy w jezyku typowanym dynamicznie jest conajmniej dziwne. Po to jest typowany dynamicznie zeby zmienna nie miala narzuconego typu. Jak rozwiazujecie sytuacje gdy nie znacie typu zmiennej? Ulomnoscia php jest niemoznosc przeciazania funkcji. Wiec w przykladzie
  1. <?php
  2. function foo($param)
  3. {
  4. if (is_array($param)) { 
  5. ...
  6. } elseif (is_numeric($param)) {
  7. ...
  8. }
  9. }
  10. ?>

Jak wg notacji wegierskiej powinna byc oznaczona $param? Jako mixed?

Co do konwencji kodowania, nie ma ustalonej odgornej, ale jest ich kilka. PEARowa i ZF sa bardzo zblizone do Java Code Conventions.

Cytat
I właśnie, to jest standard, jeśli chcesz pisać w Java, piszesz wg. Conventions i kropka. W php standardu nie ma, jest za to śmietnik.

Bez przesady. Nie chcesz pisac wedlug konwencji Javowych to tez nie piszesz. I to samo w php.

edit: poprawki gramatyczne bo sam nie moglem jednego zdania zrozumiec po przeczytaniu winksmiley.jpg

Ten post edytował ikioloak 9.01.2007, 12:34:48
Go to the top of the page
+Quote Post
dr_bonzo
post 9.01.2007, 12:37:46
Post #10





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Cytat
Jak wg notacji wegierskiej powinna byc oznaczona $param? Jako mixed?

Tak, a potem mozesz zmienic jej nazwe:

if ( is_array( $params ) )
{
$aParams = $params;
}

itp


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
sf
post 9.01.2007, 13:09:00
Post #11





Grupa: Zarejestrowani
Postów: 1 597
Pomógł: 30
Dołączył: 19.02.2003
Skąd: Tychy

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


Cytat(ikioloak @ 9.01.2007, 12:18:10 ) *
Wg mnie okreslanie typow zmiennych poprzez ich nazwy w jezyku typowanym dynamicznie jest conajmniej dziwne.


Jeśli coś ułatwia pracę to dlaczego tego nie stosować? Osobiście w ogóle nie wsadzam do jednej zmiennej np. stringu, a potem tablicy czy obiektu. Mogę, ale wydaje mi się to niewłaściwe z punktu przejrzystości kodu.. raz w zmiennej była tablica, potem jest obiekt.. e sorry, mnie to nie bawi. Wolę mieć porządek, a ten porządek pomaga mi zachować notacja węgierska.

Mixed używam gdy nie wiem jakiego typu będzie dana zmienna.. czasem się zdarza winksmiley.jpg


--------------------
Zapraszam na mój php blog, tworzenie stron.
Go to the top of the page
+Quote Post
tes
post 9.01.2007, 13:11:29
Post #12





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 23.06.2004
Skąd: Rzeszów

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


Cytat(envp @ 9.01.2007, 11:08:54 ) *
No i co myślicie o wielbłądzię ?
(...)
Ps. Ja już sie przyzwyczaiłem i za cholere nie zmienie stylu pisania smile.gif


Mam dokładnie to samo... Wielbłąd ponad wszystko smile.gif
W php i takza wiele nie piszę, a w innych językach IDE podpowiada zwracany typ ;]


--------------------
czemuja?
Go to the top of the page
+Quote Post
Cysiaczek
post 9.01.2007, 13:17:57
Post #13





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Obecnie nie musisz sprawdzać typu zmennej jeśli jest ona obiektem, lub tablicą
  1. <?php
  2. function foo(array $param){}
  3. ?>


Notacja węgierska faktycznie może pomóc w czytaniu kodu, ale nazewnictwo zmiennych wydaje mi się przesadą (choć nie zawsze), zwłaszcza w kodzie obiektowym, mocno "zinterfejsowanym". Rozważmy taki przykład.

  1. <?php
  2. class A{
  3.  
  4. /**
  5.  * @var integer
  6.  */
  7. private $MyProperty;
  8.  
  9. /**
  10.  * Ustawia A::$MyProperty
  11.  * @param integer
  12.  */
  13. public function setMyProperty($value){
  14.  
  15. if (is_int($value)){
  16. $this->MyProperty=$value;
  17. }
  18. else {
  19. throw new BadVarTypeException($value, gettype($value));
  20. }
  21. }
  22.  
  23. public function getMyProperty(){
  24.  
  25. if (isset($this->MyProperty)){
  26. return $this->MyProperty;
  27. }
  28. else{
  29. return false; // albo coś innego - np, wyjatek, lub null
  30. }
  31. }
  32.  
  33. public function testClass(){
  34. $this->setMyProperty(2);
  35. print $this->getMyProperty();
  36. }
  37.  
  38. }
  39.  
  40. $obj=new A();
  41. $obj->testClass();
  42. ?>

Nazwy zmiennej praktycznie się nie używa. Klasa udostępnia za to settery i gettery do tej właściwości. Od tego momentu nie musisz znać nazwy zmiennej - używasz interfejsu, do którego musisz przeczytać dokumentację. Zauważcie, że metody są publiczne, a więc przeznaczone dla otoczenia obiektu, ale sama klasa również korzysta ze zdefiniowanego przez siebie interfejsu
W tym przypadku oznaczanie A::$MyProperty przedrostkiem i lub int byłoby masłem maślanym, bo tylko dwie metody bezpośrednio operują na tej zmiennej. Dla programisty jest ważne, że musi przekazać zmienną typu integer jako argument metody setMyProperty(). Nie musi sprawdzać tez typu zwracanego przez getMyProperty(), bo jest on wymuszony przez wspomniany setter.
Owszem. Nie zawsze tworzy się tak rozbudowane interfejsy dostępu do zmiennych, ale chciałem pokazać, że w kodzie obiektowym można (często się nawet zaleca) inaczej.

Wydaje mi się, że ta notacja jest w php niezbędna w kodzie strukturalnym oraz w mocno skomplikowanych algorytmach (30-40 linijek kodu?). Po prostu ułatwia zrozumienie.

Na koniec cytat z Wikipedia.org
Cytat
Notacja węgierska, przez wielu wręcz uwielbiana, u innych wywołuje mieszane uczucia. Główną wadą tego systemu jest zmiana typu zmiennej. Jeśli chce się zmienić typ, trzeba poprawiać nazwę w każdym miejscu programu. W związku z tym notacja nie jest najlepszym rozwiązaniem dla programistów nieco roztargnionych.


Pozdrawiam.

Ten post edytował Cysiaczek 9.01.2007, 13:27:26


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
nrm
post 9.01.2007, 13:39:03
Post #14





Grupa: Zarejestrowani
Postów: 627
Pomógł: 33
Dołączył: 1.05.2005
Skąd: Katowice

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


dla mnie to robienie z kodu śmietnika, zamiast przejrzystego kodu otrzymujemy jakieś szlaczki. tutaj przychylam sie do glosu mike_mecha.


--------------------
Go to the top of the page
+Quote Post
ikioloak
post 9.01.2007, 13:54:46
Post #15





Grupa: Zarejestrowani
Postów: 416
Pomógł: 0
Dołączył: 8.01.2004

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


Co tak poza tym daje wiadomosc ze zmienna jest obiektem jak i tak nie wiemy jakiej klasy. Znow jak okreslic tablice obiektow zeby oddac jej charkter.
Lepszym rozwiazaniem niz konwencja wegierska wydaje mi sie robienie stosownych komentarzy phpDoc'a.
Go to the top of the page
+Quote Post
envp
post 9.01.2007, 15:12:19
Post #16





Grupa: Zarejestrowani
Postów: 359
Pomógł: 1
Dołączył: 16.04.2006
Skąd: Łódź

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


Cytat
dla mnie to robienie z kodu śmietnika, zamiast przejrzystego kodu otrzymujemy jakieś szlaczki. tutaj przychylam sie do glosu mike_mecha.


No bez przesady, kod 'po węgiersku' wydaje się być bardzo czytelny a przedrostki "_" przed nazwą zmiennej pokazują w łatwy sposób czy to prywatna zmienna czy stała. No, ale z tego robi się troszeczkę flame, bo to kwestia gustu. Mimo to uważam, że to jest najlepszy do tej pory sposób pisania a czemu ? Powtarzanie w kółko tego samego że zaczynamy od typu zmiennej z małej litery, wielbłąd, oraz przedrostki typu "_" pozwalają naprawdę w łatwy sposób kod już czytać bo, trzymając się tego kruczowo (po kilku tysiącach linii kodu) widzimy to co chemy bo zawsze to znajduje się tam gdzie powinno smile.gif

Ten post edytował envp 9.01.2007, 15:12:40
Go to the top of the page
+Quote Post
NuLL
post 9.01.2007, 15:42:00
Post #17





Grupa: Zarejestrowani
Postów: 2 262
Pomógł: 21
Dołączył: 3.05.2004
Skąd: Sopot, Krakow, W-wa

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


Powiem krotko - nie znosze n.wegierskiej i nie korzystam. Notacja wegierska jest dla tych co nie potrafia sie polapac we wlasnym kodzie.

Notacje wielbladzia to jest to :-)

Podkresliniki na poczatku byly dla PHP4 - kazde porzadne srodowisko dla PHP5 rozroznia protected itp tak wiec nie ma potrzeby.

A najgorsze to jest to : Zend_Controller_Costam_Jeszczecosinnego winksmiley.jpg


--------------------
Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
Go to the top of the page
+Quote Post
DeyV
post 9.01.2007, 16:17:41
Post #18





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




A ja jestem wielkim zwolennikiem notacji węgierskiej w połączeniu z CamellCase.

Dlaczego? Nie zawsze przeglądam kod php w środowisku programistycznym. Czasem konieczne jest praca w jakimś prostszym edytorze. Wtedy typowanie zmiennych po ich nazwach okazuje się więcej niż przydatne.

Wstępnie korzystałem z wersji 3-znakowej, tak jak mike_mech - ostatecznie stwierdziliśmy jednak, że jest to bezcelowe marnowanie dodatkowych 2 znaków, w sytuacji, gdy i tak nic więcej to nie wnosi. Dlatego został tylko jeden smile.gif

Argument o tym, że w przypadku zmiany typu zmiennej konieczna jest poprawka wielu jej wywołań jest CO NAJMNIEJ bzdurny. Przecież oczywiste jest, że jeśli coś, co było tekstem, stało się int, to służy do czegoś innego, będą na tej zmiennej wykonywane inne operacje i zmienna służyć będzie po prostu do czegoś innego. Tak więc kod i tak i tak trzeba będzie modyfikować. Taki los roztargnionych...

A co z zmiennymi o nie określonym typie? Ja używam przedrostka m (mixed) i wtedy wiem dokładnie, że w tym przypadku konieczna jest zwiększona ostrożność w pracy z nią.

A w przypadku obiektów, zgodnie z dłuższą rozmową, którą kiedyś prowadziliśmy w naszym php.pl'owym gronie, nazywam z dużych liter, bez żadnych dodatkowych przedrostków.
Jest to jedyne odstępstwo od notacji Javy, na które zdecydowaliśmy się by wyraźnie zaznaczyć obiektowość niektórych atrybutów.

(acha - w większości notacji denerwuje mnie jeszcze jedna rzecz - umiejscowienie spacji w strukturach kontrolnych. Nie wiem do końca dlaczego, ale nie znoszę zapisu if ($cos>0){ i za o wiele czytelniejszy uznaję if( cos>0 ){ - ale to już chyba moje prywatne zboczenie winksmiley.jpg )


--------------------
"Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
Go to the top of the page
+Quote Post
hwao
post 9.01.2007, 20:02:31
Post #19


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




Podpisuje się pod opinią DeyV.

Praktycznie idealnie tak pracuje jak Deyv i jestem bardzo zadowolony z tego sposobu. Stosowałem wiele innych , lecz w końcu okazała się że zbiór tych zasad jest najlepszy.
Go to the top of the page
+Quote Post
intol
post 9.01.2007, 20:59:47
Post #20





Grupa: Zarejestrowani
Postów: 110
Pomógł: 1
Dołączył: 29.07.2003

Ostrzeżenie: (10%)
X----


Polecam ten artykuł: http://www.joelonsoftware.com/articles/Wrong.html .


--------------------
Zbiór najlepszych technologicznych artykułów (programowanie, internet, linux)
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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 Wersja Lo-Fi Aktualny czas: 24.07.2025 - 14:24