Jump to content
  • Chmurka
  • Boróweczka
  • Jabłuszko
  • Limonka
  • Czekoladka
  • Węgielek

Recommended Posts

Notacja węgierska (ang. Hungarian notation) to pewna konwencja nazywania zmiennych, klas, metod i innych obiektów, w której do oryginalnej nazwy dodajemy prefiks, zwykle oznaczający typ wartości jaki ona przechowuje, lub właśnie skrót jakim obiektem jest dana rzecz. W internecie jest wiele opinii na ten temat, przeciwnicy tej notacji uważają, że głównym jej minusem jest znaczne pomniejszenie czytelności kodu.

 

 

 

Notacja węgierska w sourcepawn'ie

  • g_ - oznacza zmienną globalną
  • i - zmienna typu integer
  • f - zmienna typu float
  • sz - zmienna typu string lub char
  • h - zmienna typu Handle

 

 

 

Zalety

  • Zmienne o tej samej nazwie innego typu mogą być używane w jednym bloku (iZmienna, fZmienna, szZmienna)
  • W językach programowania które sprawdzają typy zmiennych w czasie działania kodu a nie przy kompilacji, dodawanie do nazw zmiennych ich typu okazuje się bardzo przydatne gdyż minimalizuje błąd programisty (sourcepawn NIE jest takim językiem)
  • Typ zmiennej widzimy w jej nazwie. Jest to przydatne gdy robimy przegląd kodu lub się nim dzielimy - nie trzeba wracać do miejsca deklaracji (która może być trudna do znalezienia) i szukać jaki typ posiada (szczególnie jeśli w sourcepawn'ie dołączamy do naszego pluginu kod z plików .inc)
  • Nazwy zmiennych mogą zostać przez nas łatwiej zapamiętane gdy z góry wiemy jaki mają typ
  • Jest to bardzo konsekwentna metoda nazewnictwa, jeśli raz ją pojmiesz i zobaczysz w kodzie, nie będziesz miał żadnych problemów z odczytywaniem zmiennych
  • Nieprawidłowe używanie zmiennych może zostać łatwo wykryte czytając kod

 

 

 

Wady

  • Zmienne o tej samej nazwie innego typu mogą być używane w jednym bloku - przez to nie wiemy czasami czym właściwie się różnią te zmienne oprócz ich typów
  • W językach które sprawdzają typ zmiennej przy kompilacji (takich jak sourcepawn) nazywanie zmiennych ich typami jest niepotrzebne - kompilator zawsze wykryje typ zmiennych i ich nieprawidłowe użycie (error w kompilatorze pod nazwą type mismatch) w przeciwieństwie do ludzkiego oka które może coś przeoczyć
  • Może być bardzo BARDZO trudna do odczytania w niektórych językach gdzie przy użyciu tej notacji mogą nam wyjść takie perełki jak: rgfpBalances, a_crszkvc30LastNameCol
  • Jeśli zmienisz w trakcie pisania kodu typ tej zmiennej, musisz zmienić jej nazwę w każdym miejscu w kodzie
  • W większości przypadków, jeśli wiesz do czego służy zmienna i wiesz jak jej używać to znasz również jej typ więc oznaczanie jej dodatkowo jest zbędne. A nawet jeśli nie znasz zastosowania danej zmiennej, to na pewno jej nie odczytasz z typu w prefiksie
  • W niektórych przypadkach dodawanie typu zmiennej do jej nazwy jest albo redundancyjne (powtarzające się) albo sprawia że nie jesteśmy w stanie odczytać do czego służy dana zmienna. Dobrym przykładem jest szDatabaseName/szDatabase. W pierwszym przypadku wiemy że jest to Name, więc po co dokładać na początku sz? Redundancja. W drugim przypadku samo szDatabase nie mówi nam za dużo. Nie możemy być pewni że ta zmienna będzie zawierała nazwę bazy danych jeśli po raz pierwszy zaczniemy czytać kod z tą zmienną. Więc dlaczego nie pozostawić zmiennej w nazwie databaseName?
  • Trudniej zapamiętać nazwy zmiennych (bo przecież nie będziemy pamiętać jednej małej literki na samym początku)

 

 

Konkluzja

Notacja Węgierska do dzisiaj (a wymyślona została pod koniec XX wieku) powoduje wiele kontrowersji między programistami. Nie ma wątpliwości że przydaje się w językach gdzie typ zmiennych sprawdzany jest w locie i w czasie działania programu mogą wyskoczyć błędy, jednakże używanie jej w językach gdzie tak nie jest - stoi pod wielkim groźnym znakiem zapytania. Sztuka dobrego nazewnictwa zmiennych odradza tę praktykę z tego względu że typ zmiennej oraz sposób jej użycia i to co w sobie zawiera powinna być zawarta w całej, dobrze skonstruowanej i intuicyjnej nazwie, nie tylko w jej prefiksie. W mojej opinii na pewno najważniejszą rzeczą jest trzymanie się ściśle jednej konwencji w danym programie jaki piszecie. Nie pozwólcie sobie na bycie niekonsekwentnym

 

 

 

Bibliografia

https://pl.wikipedia.org/wiki/Notacja_węgierska
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami!

https://en.wikipedia.org/wiki/Hungarian_notation
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami!

https://forums.alliedmods.net/showthread.php?t=6481
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami!

  • Lubię to! 3

Share this post


Link to post
Share on other sites

Osobiście nigdy nie korzystałem z tej notacji, ponieważ w mojej ocenie zaciemnia ona kod, bo przez te wszystkie prefixy można dostać oczopląsu.

1. g_szRanga[g_iIndex[iClient]]

vs

2. ranga[index[client]]

 

Osobiście lepiej czyta mi się wariant 2-gi

Warto tutaj zaznaczyć, że tworzenie wielkich monolitów (np. potwory 10k+ linijek) nie jest dobrą praktyką - należy raczej kod rozbijać na pomniejsze moduły, które komunikują się ze sobą. Co prawda, w SM jest to utrudnione, jednak kod można cały czas rozbijać na pliki, a reszta zależy od naszego zmysłu projektowania architektury programu ^^

 

  • Lubię to! 1

Share this post


Link to post
Share on other sites

Programuję już od dłuższego czasu i większej głupoty to chyba na oczy nie widziałem..

Share this post


Link to post
Share on other sites

Z własnego doświadczenia, dzięki temu lepiej mi się odnaleźć w kodzie, wielu programistów sm robi dokładnie to samo, czyli dodaje jakieś prefixy przy int, char bądź samych cvarach.

Każdy ma swój gust, o gustach się nie dyskutuje, każdy programista piszę w taki sposób by mu było łatwo odnaleźć się w swoim projekcie.

 

Nie można tutaj oceniać programisty po tym, jeżeli robi jakieś prefixy, jeżeli mu łatwiej, to widocznie jest to w jakiś sposób pomocne.

 

Ja używam dosyć często, nie do wszystkiego, np. nie wyobrażam sobie używać iClient zamiast client, no ale to już jak mówiłem jak kto lubi.

Share this post


Link to post
Share on other sites
4 godziny temu, develop napisał:

Programuję już od dłuższego czasu i większej głupoty to chyba na oczy nie widziałem..

Hej! Dziękuję za Twój wkład w ocenę mojego artykułu ale jeśli już coś krytykujesz, podaj proszę stosowne argumenty lub podziel się swoim pełnym zdaniem na ten temat ^^ Cenimy sobie tutaj zdanie każdego użytkownika z osobna jednakże tylko w przypadku gdy nie jest ono bezmyślną toksycznością niewytłumaczoną właściwie niczym. Jestem pewien że dasz radę wykrzesać z siebie więcej niż to jedno zdanie ? Bo właściwie nie wiem sam czy odnosisz się do samego konceptu notacji węgierskiej, czy porównania zalet i wad czy może chodzi o coś innego? Zapraszam do dyskusji!

Share this post


Link to post
Share on other sites
9 godzin temu, Mesharsky napisał:

Z własnego doświadczenia, dzięki temu lepiej mi się odnaleźć w kodzie, wielu programistów sm robi dokładnie to samo, czyli dodaje jakieś prefixy przy int, char bądź samych cvarach.

Każdy ma swój gust, o gustach się nie dyskutuje, każdy programista piszę w taki sposób by mu było łatwo odnaleźć się w swoim projekcie.

 

Nie można tutaj oceniać programisty po tym, jeżeli robi jakieś prefixy, jeżeli mu łatwiej, to widocznie jest to w jakiś sposób pomocne.

 

Ja używam dosyć często, nie do wszystkiego, np. nie wyobrażam sobie używać iClient zamiast client, no ale to już jak mówiłem jak kto lubi.

Nie istnieją programiści SM... Co najwyżej skrypterzy/koderzy. Nie obrażaj proszę tego zawodu, ograniczając do klepania pluginów w cs...

 

 

8 godzin temu, Vasto_Lorde napisał:

Hej! Dziękuję za Twój wkład w ocenę mojego artykułu ale jeśli już coś krytykujesz, podaj proszę stosowne argumenty lub podziel się swoim pełnym zdaniem na ten temat ^^ Cenimy sobie tutaj zdanie każdego użytkownika z osobna jednakże tylko w przypadku gdy nie jest ono bezmyślną toksycznością niewytłumaczoną właściwie niczym. Jestem pewien że dasz radę wykrzesać z siebie więcej niż to jedno zdanie ? Bo właściwie nie wiem sam czy odnosisz się do samego konceptu notacji węgierskiej, czy porównania zalet i wad czy może chodzi o coś innego? Zapraszam do dyskusji!

 

 

Chodzi o sam zamysł notacji węgierskiej, czekam na tematy o polskim nadawaniu nazw zmiennym, jeszcze tego mi tylko brakuje do kompletu..

Share this post


Link to post
Share on other sites
2 godziny temu, develop napisał:

Nie istnieją programiści SM... Co najwyżej skrypterzy/koderzy. Nie obrażaj proszę tego zawodu, ograniczając do klepania pluginów w cs...

Czyli jeżeli ktoś piszę zaawansowane pluginy do sourcemod'a, które mają po 30k linijek kodu, i czerpią z tego niektórzy dobre siano to znaczy że jest to obraza tego zawodu?
Trochę przesadzasz, każdy, kto piszę w sp. od roku lub dwóch i ma wiedzę ma prawo nazwać się programistą nikt nie jest zmuszony by np przejść na C++ bądź PHP, ktoś może chce być ograniczony do samego cs'a, bo po prostu chce tam tylko pozostać, oceniasz wszystkich jedynie swoim podejściem do sprawy, jest to język jak każdy inny i nie powinno się obrażać w jedną lub drugą stronę.

Troszku szacunku wypada mieć, jak i manier ;).

 

Cytat

Chodzi o sam zamysł notacji węgierskiej, czekam na tematy o polskim nadawaniu nazw zmiennym, jeszcze tego mi tylko brakuje do kompletu..

 

Jak mówiłem ci wcześniej, każdy piszę pod siebie byle by mu było jak najprościej, jeżeli ktoś używa notacji węgierskiej, bo dzięki czemu łatwiej jest mu potem poruszać się w kodzie i według niego jest to przejrzyste to czemu miałby z tego rezygnować? Bądź nie używać?

  • Lubię to! 1

Share this post


Link to post
Share on other sites
W dniu 7.07.2019 o 15:22, Mesharsky napisał:

Czyli jeżeli ktoś piszę zaawansowane pluginy do sourcemod'a, które mają po 30k linijek kodu, i czerpią z tego niektórzy dobre siano to znaczy że jest to obraza tego zawodu?
Trochę przesadzasz, każdy, kto piszę w sp. od roku lub dwóch i ma wiedzę ma prawo nazwać się programistą nikt nie jest zmuszony by np przejść na C++ bądź PHP, ktoś może chce być ograniczony do samego cs'a, bo po prostu chce tam tylko pozostać, oceniasz wszystkich jedynie swoim podejściem do sprawy, jest to język jak każdy inny i nie powinno się obrażać w jedną lub drugą stronę.

Troszku szacunku wypada mieć, jak i manier ;).

 

 

Jak mówiłem ci wcześniej, każdy piszę pod siebie byle by mu było jak najprościej, jeżeli ktoś używa notacji węgierskiej, bo dzięki czemu łatwiej jest mu potem poruszać się w kodzie i według niego jest to przejrzyste to czemu miałby z tego rezygnować? Bądź nie używać?

Gratuluje cenzury, brak argumentów = usunięcie posta? Rozumiem...

By Vasto_Lorde,

Hej! O jakie usunięcie posta chodzi? Możesz zawsze napisać do kogoś z Ekipy jeśli coś nie gra na forum (ja nie zauważyłem żeby cokolwiek zniknęło w każdym razie)

Share this post


Link to post
Share on other sites
47 minut temu, develop napisał:

Gratuluje cenzury, brak argumentów = usunięcie posta? Rozumiem...

Żaden twój post ani nic nie zostało usunięte, o jaką wypowiedź dokładnie ci chodzi?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

Nasza historia

Na początku byliśmy małą grupą internetowych znajomych, którzy stwierdzili, że potrzebne jest solidne forum, na którym znajdą się ludzie z dużą wiedzą programistyczną ukierunkowaną na CS:GO. Pomysł powstał na początku 2018 roku, a parę miesięcy później, 19 kwietnia, powstała ta strona internetowa. Jako alternatywna odpowiedź na inne tego typu miejsca, poważnie podeszliśmy do tematu, najpierw tłumacząc angielską dokumentację SourceMod'a na język polski, a potem pisząc rozległe poradniki i wypełniając forum najpotrzebniejszymi rzeczami dla właścicieli serwerów i programistów. Cała nasza Ekipa jest dumna z pracy jaką w to włożyliśmy i cieszymy się że zbierają się wokół nas zarówno ludzie znający tematy sourcepawn'a i konfiguracji, jak i również nowe twarze w tym "biznesie", którym z chęcią niesiemy wiedzę oraz pomoc w rozwiązywaniu problemów.

Największe modyfikacje serwerowe

×
×
  • Create New...