---
title: "Hungarian notation?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/174290-hungarian-notation"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "johannormen"
published: "2008-09-23T14:35:51.000Z"
updated: "2008-10-15T13:11:27.000Z"
replies: 64
views: 3265
page: 1
pages: 4
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/174290-hungarian-notation"
---

# Hungarian notation?

_Sida 1 av 4._

## #1 — johannormen, 2008-09-23T14:35Z

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

Permalänk: https://www.webforum.nu/p/174290

## #2 — Nickemannen, 2008-09-23T14:54Z

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>

Permalänk: https://www.webforum.nu/p/2143523

## #3 — CatZ, 2008-09-23T15:16Z

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.

Permalänk: https://www.webforum.nu/p/2143525

## #4 — Pedda, 2008-09-23T16:59Z

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

Permalänk: https://www.webforum.nu/p/2143549

## #5 — Travoni, 2008-09-23T17:06Z

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

Permalänk: https://www.webforum.nu/p/2143552

## #6 — Eclipse, 2008-09-23T17:09Z

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...! :-)

Permalänk: https://www.webforum.nu/p/2143554

## #7 — freguz, 2008-09-23T17:16Z

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

Permalänk: https://www.webforum.nu/p/2143557

## #8 — Gladh, 2008-09-23T18:06Z

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

Permalänk: https://www.webforum.nu/p/2143574

## #9 — sgtpepper, 2008-09-23T18:09Z

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

Permalänk: https://www.webforum.nu/p/2143577

## #10 — Gladh, 2008-09-23T18:09Z

> **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

Permalänk: https://www.webforum.nu/p/2143578

## #11 — Ledel, 2008-09-23T18:24Z

> **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.

Permalänk: https://www.webforum.nu/p/2143584

## #12 — johannormen, 2008-09-23T19:08Z

> **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

Permalänk: https://www.webforum.nu/p/2143591

## #13 — johannormen, 2008-09-23T19:10Z

> **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

Permalänk: https://www.webforum.nu/p/2143593

## #14 — Nickemannen, 2008-09-23T20:18Z

> **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.

Permalänk: https://www.webforum.nu/p/2143623

## #15 — Pedda, 2008-09-23T20:29Z

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å.

Permalänk: https://www.webforum.nu/p/2143626

## #16 — Nickemannen, 2008-09-23T20:55Z

> **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 :).

Permalänk: https://www.webforum.nu/p/2143642

## #17 — Pedda, 2008-09-23T21:00Z

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å... ;)

Permalänk: https://www.webforum.nu/p/2143644

## #18 — johannormen, 2008-09-23T21:01Z

> **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 ;-)

Permalänk: https://www.webforum.nu/p/2143645

## #19 — CatZ, 2008-09-23T22:21Z

> **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

Permalänk: https://www.webforum.nu/p/2143659

## #20 — Nickemannen, 2008-09-24T06:47Z

> **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

Permalänk: https://www.webforum.nu/p/2143677

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/174290-hungarian-notation  
Nästa sida: https://www.webforum.nu/amne/dotnet/174290-hungarian-notation/page2.md
