webForumDet fria alternativet

Hungarian notation?

64 svar · 3 206 visningar · startad av johannormen

johannormenMedlem sedan sep. 200888 inlägg
#1

Tja,

Lite nyfiken att höra hur många av er som fortfarande använder Hungarian notation och då varför när JAVA och .NET guideline för OOP säger att man inte skall använda det utan använda camel Casing och Pascal Casing.

För er som inte vet vad Hungarian notation är så är det typ när man skriver typen framför sin variabel.

strName
intNumber
intOrderNumber

camel Casing o Pascal Casing handlar om att skriva utan dessa notationer och dela in members med start av liten bokstav och stor för nästa ord. ex:

orderNumber

och på metod.
SaveOrder

I kort förklaring...

Mvh Johan

NickemannenMedlem sedan aug. 20003 575 inlägg
#2

Jag tycker det är oldschool och inte hör hemma i .NET, ok vill alla köra på det så är det ok bara det är konsekvent, men jag hade inte velat arbeta med det.

Här under kommer ett citat ur av chefsarkitekten av .NET från en av mina favoritböcker "Framework Design Guidelines"

Expert from 3.2.5 Word Choice

DO NOT use Hungarian notation.

KRZYSZTOF CWALINA There have always been both positive and negative
effects of using the Hungarian naming convention and they still exist
today. Positives include better readability (if used correctly). Negatives
include cost of maintenance, confusion if maintenance was not done properly,
and finally, Hungarian makes the API more cryptic (less approachable)
to some developers. In the world of procedural languages (e.g., C) and the
separation of the System APIs for advanced developers from framework
libraries for a much wider developer group, the positives seemed to be
greater than the negatives. Today, with System APIs designed to be
approachable to more developers, and with object-oriented languages, the
trade-off seems to be pulling in the other direction. OO encapsulation
brings variable declaration and usage points closer together, OO style
favors short, well-factored methods, and abstractions often make the exact
type less important or even meaningless.

Länkkälla: http://blogs.msdn.com/brada/archive/2005/11/04/486216.aspx

Hämtat ur wiki (nu tog jag visserligen inte med fördelarna, men de flesta fördelarna kan man få med om man döper sina variabler med bra namn. Samt använder intellisensen.

Critics argue that:
* The Hungarian notation is redundant with the type checking made by the compiler. A language providing type checking will be much more powerful to ensure that the usage of a variable is consistent with its type than the human eye would be to merely check that usage is coherent with the name of the variable.
* Some modern Integrated development environments, such as Visual Studio display variable types on demand, and automatically flag operations which use incompatible types[citation needed], making the notation largely obsolete.
* 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.
* It may lead to inconsistency when code is modified. If a variable's type is changed, either the decoration on the name of the variable will be inconsistent with the new type, or the variable's name must be changed.
* It is inconsistent with code portability since the variable name is tied to the type. A particularly well known example is the standard WPARAM type, and the accompanying wParam formal parameter in many Windows system function declarations. It was originally a 16 bit type, but was changed to a 32 bit or 64 bit type in later versions of the operating system while retaining its original name (its true underlying type is UINT_PTR, that is, an unsigned integer large enough to hold a pointer).
* Most of the time, knowing the use of a variable implies knowing its type. Furthermore, if you don't know what a variable is used for, knowing its type won't help you.

The .NET Framework, Microsoft's new software development platform, generally does not use Hungarian notation except in the case of interface types. In .NET the convention is to place I before the name of interface types (for example, the IButtonControl interface in Windows Forms.) The .NET Framework Guidelines advise programmers that Hungarian notation should not be used, but does not specify whether to avoid Systems Hungarian, Apps Hungarian, or both.[2] In contrast, the standard libraries of the Java programming language do not prefix interface types.[3]

Länkkälla: http://en.wikipedia.org/wiki/Hungarian_notation

CatZMedlem sedan jan. 20022 440 inlägg
#3

Eftersom namn på mina metoder och variabler tenderar att bli ganska långa (för att vara beskrivande) i kombination med att en mouseover berättar vad den förväntade typkoden är så går det fetebort för min del.

Körde med det i vb-script för asp flitigt.

PeddaMedlem sedan juni 20006 032 inlägg
#4

Jag använder inte Hungarian notation. Har aldrig gjort det och kommer förmodligen aldrig att göra det heller.

TravoniMedlem sedan okt. 20041 556 inlägg
#5

Det härnder ju att man ändrar typer och då måste man ändra variabelns namn. Å det är ju jobbigt...

EclipseMedlem sedan juli 20003 825 inlägg
#6

Jag har skrivit med denna variant i massa år och tycker det är mycket praktiskt. För min del fungerar det så väl i kod som i dokumentation. Jag har själv aldrig haft anledning att se över denna hantering, men vem vet, det kanske kommer!?

Men jag tänker inte engagera mig och ta bort en sak som fungerar...! :-)

freguzMedlem sedan feb. 2005280 inlägg
#7

Aldrig ungersk notation numera, var väl 4-5 år sen på ASP och PHP tiden, t.o.m i databasen då också LOL

Dock är jag ingen fan av "var i = 1;" utan tycker det ska stå "int i = 1;" för det är bättre läsbarhet

GladhMedlem sedan maj 20012 812 inlägg
#8

Jag använder faktiskt båda. Hungarian för controler i UI:et. Typ txtFirstName, btnSend, men Pascal Casing för vanliga variabler. Och det gör jag lite för att jag enkelt i min codebehind skall se vad det är för typ av kontroll som jag opererar på när jag läser koden, och för att enkelt kunna separerar kontrollerna från variabler. Blir ju gärna lite tokigt om jag har en kontroll som heter firstName och sedan en sträng i min kod som heter firstName...

Vilken av de två har mest rätt till namnet: firstName??

- M

sgtpepperMedlem sedan apr. 20007 588 inlägg
#9

Det finns ingen som helst orsak att använda ungersk notation, särskilt inte då man använder sig av moderna utvecklingsmiljöer.

GladhMedlem sedan maj 20012 812 inlägg
#10

frequz skrev:

Dock är jag ingen fan av "var i = 1;" utan tycker det ska stå "int i = 1;" för det är bättre läsbarhet

int i = 1; är faktiskt inte mycket mer läsbar än var i = 1;. Eftersom ingen vet vad i egentligen är för variable. Är det åldern på någon, eller hur mycket pengar du har på ett konto, eller kanske det bara är ett index som skall räknas upp...

int index = 1; eller ännu bättre int customerListIndex = 1;

Hoppas johan blir stolt över mig nu ;)

- M

LedelMedlem sedan dec. 2004736 inlägg
#11

Gladh skrev:

Jag använder faktiskt båda. Hungarian för controler i UI:et. Typ txtFirstName, btnSend, men Pascal Casing för vanliga variabler. Och det gör jag lite för att jag enkelt i min codebehind skall se vad det är för typ av kontroll som jag opererar på när jag läser koden, och för att enkelt kunna separerar kontrollerna från variabler. Blir ju gärna lite tokigt om jag har en kontroll som heter firstName och sedan en sträng i min kod som heter firstName...

Vilken av de två har mest rätt till namnet: firstName??

- M

Håller med! txt, btn och liknande börjar alla mina UI-kontroller med. Men i "ren kod" kör jag utan.

johannormenMedlem sedan sep. 200888 inlägg
#12

Gladh skrev:

frequz skrev:

Dock är jag ingen fan av "var i = 1;" utan tycker det ska stå "int i = 1;" för det är bättre läsbarhet

int i = 1; är faktiskt inte mycket mer läsbar än var i = 1;. Eftersom ingen vet vad i egentligen är för variable. Är det åldern på någon, eller hur mycket pengar du har på ett konto, eller kanske det bara är ett index som skall räknas upp...

int index = 1; eller ännu bättre int customerListIndex = 1;

Hoppas johan blir stolt över mig nu ;)

- M

haha GLadh fjäskar :birp

Jag var först anti var <något> men tycker om det mer o mer... Viktiga är det som står efter var inte själva vad var är.

Ang btnSave o sånt så är jag inte förtjust i det. Själv skriver jag ut hela skiten... hehe... ButtonSave... för btnSave kan ju betyde vad som...

BestTattoNameSave :p

johannormenMedlem sedan sep. 200888 inlägg
#13

Eclipse skrev:

Jag har skrivit med denna variant i massa år och tycker det är mycket praktiskt. För min del fungerar det så väl i kod som i dokumentation. Jag har själv aldrig haft anledning att se över denna hantering, men vem vet, det kanske kommer!?

Men jag tänker inte engagera mig och ta bort en sak som fungerar...! :-)

Ok... Intressant...

Finns alltid deoderant för att dölja smutsen :bire

NickemannenMedlem sedan aug. 20003 575 inlägg
#14

johannormen skrev:

haha GLadh fjäskar :birp

Jag var först anti var <något> men tycker om det mer o mer... Viktiga är det som står efter var inte själva vad var är.

Ang btnSave o sånt så är jag inte förtjust i det. Själv skriver jag ut hela skiten... hehe... ButtonSave... för btnSave kan ju betyde vad som...

BestTattoNameSave :p

Personligen gillar jag nog mer SaveButton än ButtonSave. Och då blir mina kallar jag mina event

SaveButtonClicked(object sender, EventArgs e); det tycker jag blir snyggare än både
btnSave_Click(object sender, EventArs e);
eller
ButtonSave_Click(....);

Hmm har varit med och diskuterat ofta det här med hungarian i formulär? Varför vill vi ha btn, txt, chb, dtp?

Varför inte låta namnet heta FirstNameTextBox om det är så att man har saker som krockar?? Hur ofta har vi först en textbox som skall innehålla firstName och sedan en variabel i ui:t som skall innehålla samma sak?

Många brukar ha argument som att skriver jag txt så får jag upp alla mina textboxar snabbt?, okej men skriver jag f så får jag upp alla mina firstNameTextBox som jag är ute efter minst lika snabbt om inte snabbare.

PeddaMedlem sedan juni 20006 032 inlägg
#15

Kontroller:
TextBoxFirstName
ButtonSave

Variabler:
firstName

Metoder
GetAllPersons()

Det sättet använder jag, men skulle även kunna tänka mig att ha FirstNameTextBox som namn på en kontroll istället. Men jag tycker att det känns mer rätt så som jag gör nu och ser ingen nytta att ändra mig då.

NickemannenMedlem sedan aug. 20003 575 inlägg
#16

Pedda skrev:

Kontroller:
TextBoxFirstName
ButtonSave

Variabler:
firstName

Metoder
GetAllPersons()

Det sättet använder jag, men skulle även kunna tänka mig att ha FirstNameTextBox som namn på en kontroll istället. Men jag tycker att det känns mer rätt så som jag gör nu och ser ingen nytta att ändra mig då.

Tycker det verkar sunt, dock så tycker jag SaveButton låter bättre än ButtonSave när man säger det :).

PeddaMedlem sedan juni 20006 032 inlägg
#17

Håller med, SaveButton låter bättre när man säger det.
Men jag brukar inte ha högläsning av min kod så... ;)

johannormenMedlem sedan sep. 200888 inlägg
#18

Pedda skrev:

Kontroller:
TextBoxFirstName
ButtonSave

Variabler:
firstName

Metoder
GetAllPersons()

Det sättet använder jag, men skulle även kunna tänka mig att ha FirstNameTextBox som namn på en kontroll istället. Men jag tycker att det känns mer rätt så som jag gör nu och ser ingen nytta att ändra mig då.

Håller med Pedda :-)

Anledningen till ButtonSave är för att jag via Intellisense snabbt vill ha mina Knappar grupperade. En stor anledning är ex i sedan ASP .Net 2.0 när man slipper deklarera sian Buttons på sama sida.
För vem i hela världen orkar leta efter Knappar om man inte kan få tag i info om alla med en gång?

I en fin värld som oftast inte finns skall designers göra sidan och sen skall vi koda den. Kan säga att det är ottroligt skönt att bara trycka T eller B för att få upp alla textBoxar som finns eller alla Buttons som finns.

Man kan se det lite som en Klass...
Button.Save ;-)

CatZMedlem sedan jan. 20022 440 inlägg
#19

Nickemannen skrev:

Personligen gillar jag nog mer SaveButton än ButtonSave. Och då blir mina kallar jag mina event

SaveButtonClicked(object sender, EventArgs e); det tycker jag blir snyggare än både
btnSave_Click(object sender, EventArs e);
eller
ButtonSave_Click(....);

Hmm har varit med och diskuterat ofta det här med hungarian i formulär? Varför vill vi ha btn, txt, chb, dtp?

Varför inte låta namnet heta FirstNameTextBox om det är så att man har saker som krockar?? Hur ofta har vi först en textbox som skall innehålla firstName och sedan en variabel i ui:t som skall innehålla samma sak?

Många brukar ha argument som att skriver jag txt så får jag upp alla mina textboxar snabbt?, okej men skriver jag f så får jag upp alla mina firstNameTextBox som jag är ute efter minst lika snabbt om inte snabbare.

Jo men om du sorterar i bokstavsordning (vilket jag gör) så blir det mer logiskt. Använder du måhända regions? :P

NickemannenMedlem sedan aug. 20003 575 inlägg
#20

CatZ skrev:

Jo men om du sorterar i bokstavsordning (vilket jag gör) så blir det mer logiskt. Använder du måhända regions? :P

:) ne

137 ms totalt · 3 externa anrop · v20260731065814-full.2b84b982
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)