Skip to main content

.NET (C#)

Casing Rules

ElementConventionExample
ClassesPascalCaseOrderService, UserRepository
InterfacesPascalCase with I prefixIPaymentProcessor, IUserRepository
EnumsPascalCasePaymentMethod, OrderStatus
Enum membersPascalCasePaymentMethod.CreditCard
MethodsPascalCaseGetUserById, ProcessPayment
PropertiesPascalCaseFirstName, IsActive
Private fieldscamelCase with _ prefix_userRepository, _logger
Local variablescamelCaseuserCount, isValid
ParameterscamelCaseuserId, orderRequest
ConstantsPascalCaseMaxRetryCount, DefaultTimeout
NamespacesPascalCase.Dot.SeparatedAcmeco.Retail.Orders.Services

File Naming

One primary type per file. File name matches the type name.

# Good:
OrderService.cs
IUserRepository.cs
PaymentMethod.cs # enum

# Tests:
OrderServiceTests.cs
UserRepositoryIntegrationTests.cs

Namespace Structure

Namespaces mirror the folder structure:

{Company}.{Org}.{Solution}.{Layer}

Acmeco.Retail.Orders.Services
Acmeco.Retail.Orders.Repositories
Acmeco.Retail.Orders.Models