Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Notacja węgierska :)
envp
post
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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Cysiaczek
post
Post #2





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

Posty w temacie
- envp   Notacja węgierska :)   9.01.2007, 10:20:00
- - My4tic   Dla mnie podstawa. Zawsze używam.   9.01.2007, 10:23:53
- - sf   W php się sprawdza znakomicie Na prawdę ułatwia i...   9.01.2007, 10:32:35
- - mike_mech   Dla ułomnego php notacja węgierska (i inne takie) ...   9.01.2007, 10:47:03
- - Turgon   Przydatne, ale ja i tak wolę nazywać zmienne zgodn...   9.01.2007, 11:00:25
- - envp   Tak, ale można przecież używać zgodnie z przeznacz...   9.01.2007, 11:08:54
|- - tes   Cytat(envp @ 9.01.2007, 11:08:54 ) No...   9.01.2007, 13:11:29
- - mike_mech   Ja tam jestem zwolennikiem kodowania wg. Code Conv...   9.01.2007, 11:26:08
- - sf   @envp: piszę tak jak Ty właśnie podałeś, dla mnie ...   9.01.2007, 12:15:55
- - ikioloak   Wg mnie okreslanie typow zmiennych poprzez ich naz...   9.01.2007, 12:18:10
|- - sf   Cytat(ikioloak @ 9.01.2007, 12:18:10 ...   9.01.2007, 13:09:00
- - dr_bonzo   CytatJak wg notacji wegierskiej powinna byc oznacz...   9.01.2007, 12:37:46
- - Cysiaczek   Obecnie nie musisz sprawdzać typu zmennej je...   9.01.2007, 13:17:57
- - normanos   dla mnie to robienie z kodu śmietnika, zamiast prz...   9.01.2007, 13:39:03
- - ikioloak   Co tak poza tym daje wiadomosc ze zmienna jest obi...   9.01.2007, 13:54:46
- - envp   Cytatdla mnie to robienie z kodu śmietnika, z...   9.01.2007, 15:12:19
- - NuLL   Powiem krotko - nie znosze n.wegierskiej i nie kor...   9.01.2007, 15:42:00
- - DeyV   A ja jestem wielkim zwolennikiem notacji węgi...   9.01.2007, 16:17:41
- - hwao   Podpisuje się pod opinią DeyV. Praktycznie idealn...   9.01.2007, 20:02:31
- - intol   Polecam ten artykuł: http://www.joelonsoftware.com...   9.01.2007, 20:59:47
- - cadavre   Nie używam węgierskiej choć kiedyś prowadziłem się...   9.01.2007, 21:57:09
- - Turgon   Zgadzam sie z NuLLem wielbłądzia Rulezz A rzadko k...   10.01.2007, 12:00:20
- - nasty_psycho   Ja tez uwazam ze notacja węgierska jest jakas pomy...   10.01.2007, 17:38:16
- - sztosz   @intol: Świetny artykuł naprawdę A to całe Apps H...   10.01.2007, 22:49:53
- - MrMag   w swojej aplikacji to jeszcze, ale jak trzeba cos ...   10.01.2007, 23:25:50
- - J4r0d   Ja też używam notacji węgierskiej ponieważ jest mi...   11.01.2007, 00:01:40
- - Turgon   A po co je oznaczać ? Ja wszystkie właściwości kla...   11.01.2007, 10:28:14
|- - hwao   Cytat(Turgon @ 11.01.2007, 10:28:14 )...   11.01.2007, 13:57:58
|- - J4r0d   Cytat(Turgon @ 11.01.2007, 10:28:14 )...   11.01.2007, 20:11:51
- - Cysiaczek   @J4r0d - Podkreślenie jak już wspomnia...   11.01.2007, 20:49:28
- - normanos   z węgierską jest jak z Symfony: używać się tego ni...   11.01.2007, 21:07:41


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

 



RSS Aktualny czas: 3.10.2025 - 09:37