You are on page 1of 4

C# naming conventions

-Претставува правила и стандарди за именување на код.

Придобивки:
-Конзистентност на тимот
-Конзистентност со .NET framework
-Полесно се чита и разбира кодот
-Code review се фокусира само на функционалноста, не на синтаксата

Типови
-PascalCase
Секој збор започнува со голема буква

-camelCase
Првиот збор со мала буква, останатите со голема

Identifier Casing Example


Namespace PascalCase namespace System.Security { ... }
Class PascalCase public class Account
{
Property public int Salary { get; }
}
Constructor PascalCase public Account()
{
// ...
}

Method PascalCase public decimal CalculateOdds() { }


Constants PascalCase public const Min = 0;
Enum PascalCase public enum Sport
{
Football,
...
}
Interface I + PascalCase public interface IEnumerable { ... }

Parameter camelCase public decimal CalculateOdds(decimal probability);


Local variables camelCase string firstName;
int lastIndex;
Private Field _camelCase private string _name;
1. Индентација (tab = 4 празни места)
2. Поставување на загради {}

public class ClientActivity


{
public void ClearStatistics()
{
// Correct
int counter;
string name;

// Avoid
int iCounter;
string StrName;
}
}

2. Променливите секогаш мора да имаат значајни имиња

//Correct
var seattleCustomers = from customer in customers
where customer.City == "Seattle"
select customer.Name;

//Avoid
var c = from customer in customers
where customer.City == "Seattle"
select customer.Name;

//avoid
a = b * c;

//correct
_weeklyPay = hoursWorked * hourlyPayRate;

3. Private properties започнвуаат со underscore _

// Correct
public TimeSpan timeLeft;
private DateTime _registrationDate;

4. Класите треба да се целосни зборови(именки) и да бидат во еднина


5. Најгоре се ставаат properties, од кои предност имаат static

public class BusinessLocation


{
}
public class Account
{
public static string BankName;
public static decimal Reserves;
public string Number { get; set; }
}
5. Интерфејсите треба да почуваат со I

public interface IShapeCollection


{
}

6. Boolean променливи и методи треба да почнвуаат со ‘Is’, ‘Any’, ‘Have’

public static bool IsNullOrEmpty(string value)


{
return (value == null || value.Length == 0);
}

7. Try catch блокови и логирање

try
{
//
}
catch (Exception ex)
{
//GENERIC
Logger.WriteErrorToLog(ex.ToString());

//"log";
Logger.LogIntoBetO2File(ex.ToString());

//text file
Logger.LogIntoBetO2File(ex.ToString(), "InsertOddsForEvent");
}

*(Се користи ex.ToString() за да се логира целиот error stack)

8. При If/Else проверки , да се избегнува хоризонтален код

-Доколку има многу проверки, по секој statement да се стави нов ред

-Да нема хоризионтален скрол кодот

9. Да се избегнува var ,туку да се користат дефинирани типови за променливи.


Пример за добар код:

namespace Management
{
public class Person
{
private static decimal _weeklyPay;

public string FirstName { get; set; }


public string LastName { get; set; }

public Person(string firstName, string lastName)


{
FirstName = firstName;
LastName = lastName;
}

public void CalculateWeeklyPay(decimal hoursWorked, decimal hourlyPayRate)


{
//correct
_weeklyPay = hoursWorked * hourlyPayRate;
}
}
}

Ref:

https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/capitalization-conventions

https://github.com/ktaranov/naming-
convention/blob/master/C%23%20Coding%20Standards%20and%20Naming%20Conventions.md

You might also like