Najlepsze praktyki dotyczące standardów kodowania C#
Nazwy klas
Używaj PascalCasing dla nazw klas i nazw metod.
public class MojaKlasa
{    
   public void ObliczCos()    
   {        
      //...    
   }    
   public void ObliczCosInnego()    
   {        
      //...    
   }
}
Nazwy zmiennych
Używaj camelCasing dla zmiennych lokalnych i argumentów metod.
public class User
{    
   public void AddUser(LogEvent logEvent)    
   {        
      int itemCount = logEvent.Items.Count;        
      // ...    
   }
}
Identyfikatory
Nie używaj notacji węgierskiej ani żadnej innej identyfikacji typu w identyfikatorach.
// Prawidłowe
int counter;
string name;
// Unikać 
int iCounter;
string strName;
Stałe
Nie używaj krzyczących kapitalików dla stałych lub zmiennych tylko do odczytu.
// Prawidłowe
public static const string ShippingType = "DropShip"; 
// Unikać
public static const string SHIPPINGTYPE = "DropShip";
Skróty
Unikaj używania skrótów .
Wyjątki: skróty powszechnie używane jako nazwy, takie jak Id, Xml, Ftp, Uri.
// Prawidłowe
UserGroup userGroup;
Assignment employeeAssignment; 
// Unikać
UserGroup usrGrp;
Assignment empAssignment; 
// Wyjątki
SupplierId supplierId;
XmlDocument xmlDocument;
FtpHelper ftpHelper;
UriPart uriPart;
Skrót Obudowa
Używaj PascalCasing dla skrótów 3 znakowych lub więcej (2 znaki wielkimi literami).
HtmlHelper htmlHelper;
FtpTransfer ftpTransfer;
UIControl uiControl;
Brak podkreśleń
Nie używaj podkreśleń w identyfikatorach.
Wyjątek: prywatne zmienne statyczne można poprzedzić podkreśleniem.
// Prawidłowe
public DateTime supplierAppointment;
public TimeSpan timeLeft; 
// Unikać
public DateTime supplier_Appointment;
public TimeSpan time_Left;
 
// Wyjątek
private DateTime _registrationDate;
Pisz nazwy
Używaj predefiniowanych nazw typów zamiast nazw typów systemowych , takich jak Int16, Single, UInt64 itp.
// Prawidłowe
string firstName;
int lastIndex;
bool isSaved; 
// Unikać
String firstName;
Int32 lastIndex;
Boolean isSaved;
Typy niejawne
Używaj niejawnego typu var dla deklaracji zmiennych lokalnych. 
Wyjątek: typy podstawowe (int, string, double itd.) używają predefiniowanych nazw.
// Prawidłowe
var stream = File.Create(path);
var customers = new Dictionary(); 
// Wyjątki
int index = 100;
string timeSheet;
bool isCompleted;
Nazwy klas
Używaj rzeczowników lub wyrażeń rzeczownikowych, aby nazwać klasę.
public class Supplier
{}
public class BusinessLocation
{}
public class DocumentCollection
{}
Interfejsy
Rób interfejsy prefiksowe z literą I . Nazwy interfejsów to rzeczowniki (frazy) lub przymiotniki.
public interface IShape
{}
public interface IShapeCollection
{}
public interface IGroupable
{}
Nazwy plików
Nazwij pliki źródłowe zgodnie z ich głównymi klasami. Wyjątek: nazwy plików z klasami częściowymi odzwierciedlają ich źródło lub przeznaczenie.
// Located in Supplier.cs
public partial class Supplier
{ 
 //...
}
Przestrzenie nazw
Organizuj przestrzenie nazw z jasno określoną strukturą.
// Examples
namespace Company.Product.Module.SubModule
namespace Product.Module.Component
namespace Product.Layer.Module.Group
Nawiasy klamrowe
Wykonaj pionowe wyrównanie nawiasów klamrowych.
class Program
{ 
   static void Main(string[] args) 
   { 
   }
}
Zmienne składowe
Deklaruj wszystkie zmienne składowe na początku klasy, a zmienne statyczne na samym szczycie.
public class Account
{    
   public static string BankName;    
   public static decimal Reserves;     
   public string Number {get; set;}    
   public DateTime DateOpened {get; set;}    
   public DateTime DateClosed {get; set;}    
   public decimal Balance {get; set;}     
   // Constructor    
   public Account()    
   {        
      // ...    
   }
}
Wyliczenia
Używaj nazw w liczbie pojedynczej dla wyliczeń. Wyjątek: wyliczenia pól bitowych.
// Prawidłowe
public enum Color
{     
   Red,    
   Green,    
   Blue,    
   Yellow,    
   Magenta,    
   Cyan
} 
// Wyjątek
[Flags]
public enum Dockings
{     
   None = 0,    
   Top = 1,     
   Right = 2,     
   Bottom = 4,    
   Left = 8
}
Typy wyliczeń
Nie określaj jawnie typu wyliczenia ani wartości wyliczeń (z wyjątkiem pól bitowych).
// nie prawidłowe
public enum Direction : long
{ 
   North = 1, 
   East = 2, 
   South = 3, 
   West = 4
} 
// Prawidłowe
public enum Direction
{    
   North,    
   East,    
   South,    
   West
}
Przyrostek wyliczenia
Nie dodawaj do nazw wyliczenia Enum.
//  nie prawidłowe
public enum CoinEnum
{    
   Penny,    
   Nickel,    
   Dime,    
   Quarter,    
   Dollar
} 
// Prawidłowe
public enum Coin
{    
   Penny,    
   Nickel,    
   Dime,    
   Quarter,    
   Dollar
}
	
