Введение в C#: Упрощаем код, с помощью кратких записей

Мы изучили самые базовые типа данных и конструкции языка си шарп и можно переходить к сути вопроса — изучению ООП. Однако я хочу остановиться еще на одном моменте — сокращениях в коде, которые не только сделают Ваш код меньше, но и заметно увеличат его читаемость.

Если Вы смотрели примеры из прошлой части, Вы могли заметить, что все каждая новая переменная была объявлена в новой строчке, что занимает много места. Язык C# позволяет объявлять несколько переменных одного типа через запятую.

int var1 = 1, var2 = 2, var3 = 3;
string str1 = "Str1", str2 = "Str2";
Class c1 = new Class(), c2 = new Class();

Вторым возможным путем сокращения Вашего кода может стать использование кратких записей для простых операций над переменной (сложения, вычитания, умножения и т.п.)

int number = 0;
number += 5; //тоже самое что number = number + 5; 
number /= 5; //тоже самое что number = number / 5; 

Таким образом общий шаблон краткой записи выглядит как «переменная операция= значение»

Если мы говорим об операции сложения или вычитания, а в качестве значения мы используем еденицу, то возможны дополнительный варианты сокращения:

number++; //Прибавление 1 к number. Способ 1
number--; //Вычитаем 1 из number. Способ 1
++number; //Прибавление 1 к number. Способ 2
--number; //Вычитаем 1 из number. Способ 2

Между способом 1 и 2 существует различие, которое можно наглядно продемонстрировать на примере:

int a = 5, b = a++, c = ++a;

В результате работы данной программы в b мы получим значение 5, в то время как в c значение 6. Связанно это с тем, что ++ вначале переменной — сначала увеличивает значение переменной, а потом возвращает ее результат. ++ в конце переменной — сначала возвращает значение переменной, а потом увеличивает его на единицу.

Еще один способ сократить пару символов в Вашем коде — это возможно не ставить фигурные скобки { } после объявления циклов, условий и других конструкций. В данном случае к объявленному действию отнесется первая идущая следом команда.

int a = 0, b = 0;
if(a > 0) {
  a++;
  ++a;
}
if(b > 0)
  b++;
  ++b; //данная строчка выполнится, так как после if нет фигурных скобок
//a = 0
//b = 1

Примечание: Не смотря на прозрачность данной конструкции, я советую всегда использовать фигурные скобки. Так как это избавит разработчиков от дополнительного действия (проставить скобки), если они захотят добавить код в такой блок.

Для тех, кто уже уверенно владеет типами данных и «на лету» может объявлять нужные переменные, могу посоветовать использовать универсальную конструкцию var. Данное ключевое слово автоматически заменится компилятором на тип, который будет определен после знака равенства. Данный способ имеет ограничение — на одно ключевое слово var должна создаваться только одна переменная.

int a = 0;
var b = 0;
string c = "Test";
var d = "Test";
bool e = true, f = false;
var g = true, h = false; //ошибка так как возможно создать только одну переменную за раз
VaryLongClassName x = new VaryLongClassName ();
var y = new VaryLongClassName ();

Забегая вперед, хочется рассказать о краткой возможности заполнить массив данными. Приведенные в примере массивы будут абсолютно одинаковы.

int[] arr1 = new int[3];
arr[0] = 0;
arr[1] = 1;
arr[2] = 2;

int[] arr2 = new int[] { 0, 1, 2 };

Теперь представим ситуацию что нам нужно выполнить какое-либо действие, если число x равно 0, 10, 33, 199, -1. Можно написать данную проверку в лоб:

if(x == 0 || x == 10 || x == 33 || x == 199 || x == -1)  {
   //...
}

Однако если воспользоваться краткой записью создания массива, а так же зная то, что в C# присутствует функция проверки вхождения значения в массив можно получить следующее:

if(new int[] { 0, 10, 33, 199, -1 }.Contains(x))  {
   //...
}

Работать такой вариант будет медленнее, однако он легче читаем и его гораздо проще редактировать.

Одно из моих самых любимих сокращений — краткая запись условия if else. Условие можно заменить двумя символами ? и :.

int a = 0, b = 1;
if(b > 0) {
   a = 2;
} else {
   a = 3;
}
int d = 1, c = d > 0 ? 2 : 3;

Данный пример наглядно демонстрирует насколько короче становится код с использование краткой формы условия if else. Как можно заметить из примера: сначала мы записываем наше условие, потом ставим знак вопроса, далее пишем возвращаемое значение если условие истинно (true), а далее через двоеточие возвращаемое значение если условие ложно (false).

Запись опубликована в рубрике C#, Учебное пособие C# с метками , , , , , , , . Добавьте в закладки постоянную ссылку.