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
}