2009-07-16 10 views
9

Więc idę według tego schematu nazewnictwa Delphi argumentów zaczynających się od A, klasa vars zaczyna się od F, a lokalne vars zaczynają się od M. Czy ten schemat ma nazwę? Widzę to dużo w źródle Delphi Chciałbym przeczytać więcej na ten temat, ale nie jestem pewien, jak to się nazywa.Czy moja konwencja nazywania zmiennych ma nazwę?

+5

Nazwanie zmiennych globalnych za pomocą 'F' powoduje błąd. 'F' jest konwencją nazw pól, a nie globów. –

+0

Mam na myśli zmienne klasowe, prawie nigdy nie używam globali, więc nazwałem je niewłaściwą rzeczą. –

+2

Skąd wziąłem M? –

Odpowiedz

18

Ten styl kodowania jest specjalnie zawołał w Object Pascal Style Guide jako nie będącego notacji węgierskiej (z jednym wyjątkiem, enumerated types.)

Określone standardy kodowania mówisz nie ma nazwy, takie jak , o ile mi wiadomo, po prostu piszesz kod zgodny z przewodnikiem stylu CodeGear (stary Borland). Przewodnik nie wydaje się nadawać temu stylowi nazwy.

Powodem, dla którego dużo widzisz w źródle Delphi, jest to, że ten przewodnik oparty jest na stylu kodowania opracowanym przez zespół Delphi!

Dokument ten jest wart przeczytania - nie tylko w odniesieniu do wytycznych kodowych, ale także w przypadku zainteresowania innymi rzeczami, o których wspomina.

+0

WTF? dlaczego zostało to odrzucone? To IMO jest najlepszą odpowiedzią, z pewnością najbardziej poprawną. W rzeczywistości usunąłem odpowiedź, ponieważ ta jest lepsza. –

+0

heh heh, naprawdę muszą usunąć stary adres e-mail Borlanda z serwisu Borland z tego dokumentu. Charlie pracuje teraz dla Microsoft. –

+1

Mimo że odpowiedź jest świetną odpowiedzią (i przegłosowałem ją), za podanie odniesienia do tego, skąd pochodzi styl, dokument taki jak go przeczytałem * nie * nazwał go notacją węgierską, gdy mówi: "Wyjątek od węgierskiej notacji Reguła jest w typach wyliczeniowych. " tj. zwykła konwencja F jest notacją węgierską. – Yishai

7

Generalnie brzmi to jak węgierska notacja - ale nie określa ona konwencji A, F lub M, a konkretnie tylko poprzedzającej informacji o typie w nazwie.

+0

Myślałem, że węgierskie umieścić informacje typu i zawartości w nim - jak piVar, jeśli var jest wskaźnikiem do int, a także określone zestaw wartości do użycia. Chodzi mi o to, że myślałem, że jest to bardziej szczegółowe niż "przedrostek", ale mogę się mylić. –

+2

Notacja węgierska może być wykonana na różne sposoby, ale z reguły umieszczanie informacji o języku w nazwie zmiennej nazywa się notacją węgierską. Joel słynie z tego, że powinno się go używać w zupełnie inny sposób, ale niezależnie od tego, jak powinno "być", tak to nazywają ludzie. http://www.joelonsoftware.com/articles/Wrong.html – Yishai

+0

Z drugiej strony, system typu Delphi sprawia, że ​​problemy, które "dobry węgierski" Joel rozwiązuje, stają się przestarzałe. Jeśli chcesz mieć specjalny typ liczby całkowitej lub łańcucha, który nie jest zgodny z normami lub zwykłymi ciągami znaków, możesz zadeklarować jeden z nich za pomocą słowa kluczowego "type" w definicji typu i niech kompilator złapie za ciebie te błędy. –

10

Twój schemat można uznać za formę Hungarian notations (HN). Zazwyczaj HN jest używany do oznaczenia type zmiennej, ale stwierdza, Wikipedia,

zapis jest czasami rozszerzone w C++, aby obejmować scope zmiennej oddzielone podkreślenia. To rozszerzenie jest często również wykorzystywane bez typu specyfikacji węgierski : [..]

10

powiedziałbym swoją konwencję nazewnictwa naprawdę nie pasuje do notacja węgierska, ale skłania się nieco, aby być bliżej oryginalna węgierska notacja wynaleziona przez Charlesa Simonyi, która stała się znana jako Apps Hungarian. Ale nie całkiem.

Są właściwie dwa rodzaje notacja węgierska:

  • Aplikacje węgierski - Chodziło o to, aby ozdobić identyfikatory nazw oparte na semantycznej informacji o tym, co oni przechowywać, więc w zasadzie zmiennej za Celem:
 
    rwElement - variable represents a row ("rw") 
    colElement - variable represents a columns ("col") 
  • Sy wynika węgierski - prefiks koduje rzeczywisty typ danych zmiennej.
 
    szName - variable is a zero-terminated string ("sz") 
    lAccount - variable is a long integer ("l") 

więc podczas nazewnictwo ma w pewnym sensie reprezentuje jakiś cel, to naprawdę nie jest celem, który odnosi się do Aplikacji węgierski.

+2

Używa on formy węgierskiej, która wskazuje zakres. Nie powiedziałbym, że jest bliższy celu niż typowi. –

+0

Moja racjonalność polegała na tym, że nigdzie nie jest w pobliżu typu danych, ale zakres przy projektowaniu aplikacji ma cel. Oczywiście nie jest to ten sam cel, ale z dwóch jest bliżej bycia takim w jakimś celu. –

7

Pozdrawiam was w ogólnej klasie konwencji nazw znanych jako Węgierska notacja (w szerszym niż zwykle rozumieniu, że nazwa ma przedrostek opisujący zmienną), ale nie, wasza konwencja nie ma żadnych bardziej szczegółowa nazwa.

Nigdy wcześniej nie widziałem Twojego konkretnego wyboru przedrostków. Najbliższy Widziałem to, co myślę o jak Konwencja Indy, który wykorzystuje A dla argumentów F dla pól, G dla globalnych, L dla mieszkańców, i oczywiście zwykle I dla interfejsów i T dla rekordów i klas. Właściwości i podprogramy nie otrzymują prefiksu.

+0

Czy podałeś tę nazwę z korelacji między Delphi RTL i Indy Source, czy też Borland Programmer rzeczywiście wybrał te rzeczy od Indy'ego w początkach Delphi? Nie mam żadnego źródła wcześniej niż Delphi 7, więc nie widzę różnicy. –

+0

Prefiksy 'F',' I' i 'T' są używane niemal uniwersalnie, a prefiks' A' jest bardzo popularny. Używanie prefiksów na globaliach i miejscowych to coś, co najbardziej kojarzy mi się z Indy; Nie znam żadnych prefiksów "G" lub "L" w kodzie Borlanda. –

Powiązane problemy