Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Notacja węgierska - zły nawyk?

Ostatnio zmodyfikowano 2013-03-17 13:40
Autor Wiadomość
Bajt
Temat założony przez niniejszego użytkownika
Notacja węgierska - zły nawyk?
» 2013-03-10 18:51:47
Witam. Ostatnio czytałem artykuł pracownika Microsoftu, o czytelności kodu w programie. Na koncu artykułu, autor napisał, aby nigdy nie stosowac notacji węgierskiej. Zdziwiłem sie trochę, bo kiedy ja uczylem się programowac, notacja była bardzo popularna. I chciałem zapytać: czy powinienem z niej zrezygnować? I czy wy z niej korzystacie?
P-78061
ison
» 2013-03-10 19:25:07
zrezygnuj, zaciemnia kod, zmiana typu zmiennej wiąże się ze zmianą jej nazwy, co więcej ten sposób nazywania zmiennych jest zabójczy dla feature'ów nowych IDE, bo praktycznie uniemożliwia korzystanie z podpowiadania nazw zmiennych jeśli nie znasz typu
P-78069
DejaVu
» 2013-03-10 20:27:37
1. typ danych nie zmienia się 'ot tak'
2. nowe IDE umożliwiają łatwą zmianę nazw zmiennych
3. podpowiadanie nazw zmiennych jest raczej marnym argumentem, bowiem nie ma tysiąca dostępnych zmiennych w jednym scope. Jeżeli nazwy zmiennej nie pamiętasz to intellisense również Ci nie pomoże.
4. pisząc aplikacje obiektowo stosowanie prefiksów m_* dla zmiennych jest praktyczne, bowiem czytając kod wiesz, czy zmienna należy do klasy czy też została utworzona lokalnie wewnątrz metody.

Argument 'nie używać bo nie' jest bezsensowny. Praca w Microsofcie czy w jakiejkolwiek innej firmie nie gwarantuje, że pracownik jest/był zajebistym deweloperem. Być może notacja węgierska nie jest idealna, jednak wbrew pozorom ma sporo zalet - chociażby powszechność jego stosowania.
P-78077
ison
» 2013-03-10 21:20:07
Tylko pytanie po co ją stosować? I tak w każdym normalnym IDE po najechaniu myszką na zmienną jest wyświetlany jej typ.
Przedrostki typu m_ i g_ to akurat dobre nawyki, zwłaszcza dla intellisense, ale imo te i tylko te. Stosowanie przedrostków zależnych od typu zmiennej zwyczajnie nie ma przy aktualnych narzędziach celu, aczkolwiek koderzy z dawniejszych czasów z przyzwyczajenia nadal używają i będą używać tego typu notacji.

Hungarian Notation becomes confusing when it is used to represent several properties, as in a_crszkvc30LastNameCol: a constant reference argument, holding the contents of a database column LastName of type varchar(30) which is part of the table's primary key.
(http://en.wikipedia.org/wiki/Hungarian_notation)
Pomimo tego, że tego typu zmiennych nie deklaruje się codziennie to obrazuje to jednak problem.

Kwestia gustu, jak komuś się podoba to nikt nie zabroni korzystać.
Na wiki są przedstawione wszystkie 'za i przeciw'.
P-78081
DejaVu
» 2013-03-10 21:30:26
@up: czytając kod będziesz najeżdżał na każdą zmienną? Patrzysz na kod jak na własny produkt, a nie jak na produkt będący efektem prac innych programistów. Doświadczenie mówi, że intellisense nie zawsze działa, a więc bezgraniczne poleganie na 'doskonałości' IDE jest raczej błędnym podejściem.

/edit:
Dodam jeszcze, że w PHP nie masz czegoś takiego jak 'zmienna typu int', a więc dopisanie prefiksu 'i' jest pożytecznym oraz mało kosztownym zabiegiem.
P-78082
ison
» 2013-03-10 21:35:03
Zazwyczaj pisze sie kod tak aby po kontekście i nazwie zmiennej widać było co to za typ.
Najeżdżać będę tylko na te zmienne, gdzie będę miał wątpliwość.
Zmienna o nazwie 'x' raczej nie będzie stringiem, zmienna o nazwie 'firstName' raczej nie będzie intem.
Trzeba iść z duchem czasu ;)
No jak komuś się to podoba i ułatwia pisanie kodu to ok, warto jedynie znać plusy i minusy.
P-78083
DejaVu
» 2013-03-10 21:45:20
Ja akurat uważam, że najpierw trzeba zdobyć masę doświadczenia w wytwarzaniu oprogramowania (nie tylko tworzonego przez siebie), a dopiero potem co najwyżej krytykować stosowane podejścia mając do tego zarówno stosowną argumentację jak i lepszą alternatywę wraz z racjonalnym uzasadnieniem. Programiści nie biorą się z ulicy i raczej ten zawód wymaga kilku lat nauki oraz systematycznego pogłębiania wiedzy, niezaleznie od ilości zdobytego/posiadanego doświadczenia. Innymi słowy, człowiek z ulicy nie zrewolucjonizuje programowania jak również nie zrobi tego żaden analityk, nastawiony co najwyżej na samo projekowanie rozwiązań bez szczegółów stricte implementacyjnych.
P-78084
ison
» 2013-03-10 22:06:57
Dodam jeszcze, że w PHP nie masz czegoś takiego jak 'zmienna typu int', a więc dopisanie prefiksu 'i' jest pożytecznym oraz mało kosztownym zabiegiem.
Pytanie dotyczy C++, a nie php w którym to nie ma jawnych typów. W przypadku php może i rzeczywiście warto używać notacji węgierskiej, chociaż i tak nazwy zmiennych powinny mówić jakiego typu jest zmienna bez prefixu. Nawet jeśli zmienna ID będzie zawierała '35' to i tak po rzutowaniu na inta będzie to 35.

Nawet argumentując osobami doświadczonymi w projektowaniu kodu C/C++ i tak nie dojdziemy do wniosku czy warto stosować notację węgierską czy nie. I tak zdania są podzielone.
Jednym się to podoba, innym nie.
Jak już mówiłem wszystkie 'za i przeciw' są wypisane na wiki.

pracownik jest/był zajebistym deweloperem
Bycie zajebistym to pojęcie względne. Tak samo jak nie ma i nigdy nie będzie idealnego sposobu projektowania kodu ani zarządzania projektem.
P-78085
« 1 » 2 3
  Strona 1 z 3 Następna strona