- Переименуйте всё, что называется неправильно. Это можно делать двойным нажатием комбинации клавиш Ctrl+R (работает для
VS
иRider
). - Исправьте форматирование кода. Частично с этим поможет комбинация клавиш: Ctrl+K, Ctrl+D для
VS
, Ctrl+Alt+L дляRider
, Ctrl+Alt+Enter дляRider
, использующий схему клавишVS
. - Повторяющиеся части кода вынесите во вспомогательные методы. Это можно сделать, выделив несколько строк кода и нажав: Ctrl+R, Ctrl+M для
VS
, Ctrl+Alt+M дляRider
.
Следует стирать неактуальные комментарии
//Неправильно
int GetOne()
{
//TODO Напишите здесь return 1
return 1;
}
// Правильно
int GetOne()
{
return 1;
}
- Проверить, что нет скобок после
return
return (a + b + c); <- неправильно
return a + b + c; <- правильно
- Нет пустых строк после объявления метода и после return
// Неправильно
int GetOne()
{
return 1;
}
// Правильно
int GetOne()
{
return 1;
}
- При записи длинной цепочки вызовов методов следует писать каждый вызов в новой строке
// Неправильно
return lines.Where(...)
.Select(...)...
// Правильно
return lines
.Where(...)
.Select(...)
...
- Проверить использование var, вместо явного объявления типа (где возможно)
string s = "abc"; <- неправильно
var s = "abc"; <- правильно
- Проверить, что все названия переменных на английском языке
// Неправильно
var procent = 0.05;
string[] stroki;
// Правильно
var percent = 0.05;
string[] lines;
- Названия переменных должны быть осмысленными. Чем больше область видимости, тем развернутее должно быть название
// Неправильно
var p = 0.05;
// Правильно
var percent = 0.05;
- В названиях не должно присутствовать
of
,the
,a
// Неправильно
ColorOfCar
theSun
aStar
// Правильно
CarColor
sun
star
- Булевы переменные должны быть в виде вопросов, на которые можно однозначно ответить да или нет. Не использовать название
flag
// Неправильно
var flag = false;
// Правильно
var isSorted = true;
- Название переменных должны быть написаны в виде
lowerCamelCase
// Неправильно
var percent_per_month = 0.05;
var PercentPerMonth = 0.05;
// Правильно
var percentPerMonth = 0.05;
- В названии коллекций должно быть с множественным числом
// Неправильно
Apple[] Apple
// Правильно
Apple[] Apples
- Не следует писать тип коллекции в названии. Исключение лишь если в коде присутствует коллекция другого типа с теми же данными
// Неправильно
Orange[] ArrayOfOranges
List<Apple> AppleList
// Правильно
Orange[] Oranges
List<Apple> Apples
- Следует обрамлять арифметические, логические операторы, оператор присваивания пробелами
// Неправильно
if (a>b)
c=0;
// Правильно
if (a > b)
c = 0;
- Следует всегда явно указывать модификатор доступа.
// Неправильно
class Vector
// Правильно
public class Vector
-
Соблюдайте порядок элементов внутри класса. Сначала поля и свойства, потом конструктор, затем публичные методы, в конце приватные методы.
-
Между методами всегда должна оставаться пустая строка
// Неправильно
public static void DoSomething()
{
...
}
public static void DoSomethingElse()
{
...
}
// Правильно
public static void DoSomething()
{
...
}
public static void DoSomethingElse()
{
...
}
- Для записи однострочных свойств используется синтаксис
=>
// Неправильно
public int Length
{
get {return bytes.Length;}
}
// Правильно
public int Length => bytes.Length;
- Тело if всегда в новой строке. Тело цикла всегда в новой строке.
// Неправильно
if (a > b) return 0;
// Правильно
if (a > b)
return 0;
- Не стоит писать else, если выше везде происходит выход из тела if
// Неправильно
if (a > b)
{
return 10;
}
else
{
…
return 20;
}
// Правильно
if (a > b)
{
return 10;
}
…
return 20;
- Если в теле if больше одной строки, то следует использовать скобки
// Неправильно
if (a > b)
if (a < c)
return 0;
// Правильно
if (a > b)
{
if (a < c)
return 0;
}
- Все, что возможно, то желательно выделять в методы. Не писать один и тот же код два раза
// Неправильно
var lenAB = Math.Sqrt((ax-bx)*(ax-bx) + (ay-by)*(ay-by));
var lenBC = Math.Sqrt((bx-cx)*(bx-cx) + (by-cy)*(by-cy));
// Правильно
double GetLength(
double ax,
double ay,
double bx,
double by)
{
return Math.Sqrt((ax-bx)*(ax-bx) + (ay-by)*(ay-by));
}
var lenAB = GetLength(ax, ay, bx, by);
var lenBC = GetLength(bx, by, cx, cy);
- Не сравнивать
bool
с константой с помощью==
// Неправильно
if (success == true)
…
if (success == false)
// Правильно
if (success)
…
if (!success)
- Названия методов должны быть в
UpperCamelCase
// Неправильно
public static double get_length()
public static double getLength()
// Правильно
public static double GetLength()
- Название метода должно начинаться с глагола
// Неправильно
public static double Length()
// Правильно
public static double GetLength()
- После
for, if, ...
нужно ставить пробел
// Неправильно
if(a > b)
return 0;
// Правильно
if (a > b)
return 0;
- Нужно правильно переносить тернарный оператор
// Неправильно
return needAutocomplete ?
Сommand.AutoComplete : Command.Ignore;
// Правильно
return needAutocomplete
? Сommand.AutoComplete
: Command.Ignore;
- Нужно переносить выражения так, чтобы новая строка начиналась с оператора
// Неправильно
if (longExpression &&
anotherExpression)
// Правильно
if (longExpression
&& anotherExpression)