Om inget annat sägs eller andra teamöverenskommelser finns, följ Microsofts namngivning, dokumentation och guider. Harmonisera med .NET ramverket. För att backa upp det, och vara ännu mera precis, använd StyleCop som vägledning.
-
Använd engelska
Alla medlemmar, parametrar och variabler bör namnges med ord från engelska språket. -
Domänspråk är undantag till engelska
Använd ord, fraser och termer från företagets domän eller vad som är allmänt vedertaget i branschen. Finns det en entitet som heterKonto
som kommer från ett backofficesystem, behåll det. Döp det inte tillAccount
. Det underlättar när ytterligare en kontohanterare implementeras där namngivningen av objekt faktiskt ärAccount
. Om det finns en framtagen domänspråksdokumentation i företaget, följ den framför allt annat.Gemensamt domänspråk är viktigt i kedjor som:
beslutsfattare/intressent ↔ affärsanalytiker ↔ produktägare ↔ arkitekt ↔ projektledare ↔ scrummaster ↔ interaktionsdesigner ↔ copywriter ↔ redaktör ↔ kundtjänst ↔ ekonomichef ↔ kientutvecklare ↔ backendutvecklare ↔ api-utvecklare
.Det är oundvikligt att begrepp tas bort eller ändrar betydelse i delar av systemkedjan. Då är kommentarer i kod att rekommendera. Beskriv vad det hette tidigare och möjligen lite bakgrund, då blir det enkelt att söka/hitta och förstå koden.
-
Grammatiskt rätt
Välj namn som är lätta att läsa och grammatiskt korrekt. Föredra exempelvisHorizontalAlignment
framförAlignmentHorizontal
. -
Använd inte ord från programmeringsspråk
Undvik att använda nyckelord från språk i lösningen. Använd exempelvis inteInterface
som en variabel. -
Använd inte prefix för fält
Några exempel:- Använd inte
_
som prefix för privata fält. - Använd inte
g_
ellers_
för att skilja på statiska och icke statiska fält. - Använd inte typnamn (eller förkortning av det) som prefix, exempelvis
strAge
.
- Använd inte
-
Undvik förkortningar
Exempel: användOnButtonClick
framförOnBtnClick
. Undvik också variabler med enskilda tecken som i och q. Användindex
respektivequery
istället. Undantaget till regeln kan vara välkända förkortningar som är allmänt accepterade eller välkända i domänen.UI
framförUserInterface
är ett exempel. -
Ange inte typer i namn
Namnge medlemmar, parametrar eller variabler efter dess betydelse och inte efter vilken typ det är. Exempel:GetLength
är ett bättre namn änGetInt
. Använd inteEnum
,Class
ellerStruct
i namn. -
Upprepa inte klassnamn i medlemmar
❌ UNDVIK:
class Employee { Employee GetEmployee() {} DeleteEmployee() {} }
✅ GÖR SÅ HÄR:
class Employee { Employee Get() {} Delete() {} }
-
Klasser som singular
Namnge klasser som singular för att undvika förrvirring när man skapar kollektioner. Om du inte kan ta borts
från ett klassnamn kan du lägga till ord somModel
,Type
eller andra generella namn. Exempel:CategoriesModel
. Om namnet kommer från ett domänspråk/en integration får det bli en bedömning från fall till fall.❌ UNDVIK:
var categories = new List<Categories>();
✅ GÖR SÅ HÄR:
var categories = new List<Category>();
-
Verb i klassnamn
Använd inte verb i klassnamn.❌ UNDVIK:
public class CreateNewPerson { }
✅ GÖR SÅ HÄR:
public class Person { }
-
Enum
- Namnge enum som singular om det inte är frågan om bit-fält (Flag).
- Lägg inte till
Enum
ellerFlag
i namnet. - Upprepa inte emnumnamnet i element.
-
Namnge som i .NET Framework
Namnge medlemmar på liknande sätt som medlemmar i .NET Framework-klasser. Om du exempelvis definierar en klass som ska bete sig som en samling, lägg till medlemmar somAdd
,Remove
ochCount
framförAddItem
,Delete
ellerNumberOfItems
. -
Egenskapsnamn
- Namnge egenskaper med substantiv, substantivfraser eller ibland adjektiva fraser.
- Benämn booleska egenskaper med jakande fraser, exempelvis
CanSearch
istället förCantSearch
. - Använd prefix som
Is
,Has
,Can
ochAllows
för booleska egenskaper. Exempel:IsVisible
,HasChildren
ochCanExecute
.
-
Metodnamn
Namnge metoder med verb eller verb-objekt par. ExempelShow
respektiveShowDialog
. Ett bra namn bör ge en antydan om vad en medlem gör, och om möjligt, varför.Inkludera inte
And
i namnet på en metod. Det innebär att metoden gör mer än en sak och det bryter mot "single responsibility principle”.En generell konvention för metoder som returnerar
Task
ellerTask<Result>
är att namnge dem med suffixetAsync
alternativtTaskAsync
. -
Namnge namnrymder
Använd produktnamn, teknikbenämningar, lager, verb och funktioner i namnrymder. Överväg att använda företagsnamn då uppköp och fusioner händer.Undvik namn på typer i namnrymder, exempelvis en klass med namnet
Order
. Men ett substantiv i pluralform är vanligt, såsomCollections
ochHelpers
. -
Händelsenamn
Namnge händelser med verb eller verbfraser. Till exempel:Click
,Deleted
,Closing
,Minimizing
ochArriving
. Använd-ing
och-ed
för att uttrycka före och efter en händelse.Anta att du vill definiera händelser relaterade till radering av ett objekt. Undvik att definiera
Deleting
ochDeleted
somStartDelete
ochEndDelete
. Namnge istället dessa som:Deleting
: Händer straxt före objektet blir raderat.Delete
: Händer när objektet behöver raderas av händelsehanteraren.Deleted
: Händer när objektet redan är raderat.
Det är god praxis att ha
On
som prefix i metoder som handskas med händelser. Till exempel kan en metod som hanterarClosing
namnges somOnClosing
. -
Pascal- eller Camel format
Namnge typer enligt nedan.Språkelement Format Exempel StyleCop-regler Class, Struct Pascal AppDomain
Interface Pascal IBusinessService
SA1302: InterfaceNamesMustBeginWithI Enumeration type Pascal ErrorLevel
Enumeration values Pascal FatalError
Event Pascal Click
Private field Camel listItem
SA1306: FieldNamesMustBeginWithLowerCaseLetter
SA1310: FieldNamesMustNotContainUnderscore
SA1309: FieldNamesMustNotBeginWithUnderscore
SA1305: FieldNamesMustNotUseHungarianNotationProtected field Pascal MainPanel
SA1307: AccessibleFieldsMustBeginWithUpperCaseLetter Constant field Pascal MaximumItems
SA1303: ConstFieldNamesMustBeginWithUpperCaseLetter Constant Local variable Camel maximumItems
Read-only static field Pascal RedValue
SA1304: NonPrivateReadonlyFieldsMustBeginWithUpperCaseLetter Local Variable Camel listOfValues
SA1308: VariableNamesMustNotBePrefixed Method Pascal ToString
Namespace Pascal System.Drawing
Parameter Camel typeName
Type Parameter Pascal TView
Property Pascal BackColor
I ReSharper kan det vara definerat på detta sätt som standrad:
Referenser: