Обложка канала

.NET Разработчик

Опытный разработчик не так давно зашёл в .Net и поставил цель получить сертификат Microsoft. Свой ежедневный прогресс он описывает на канале .Net Разработчик. Заметки об изученном материале, советы по повышению производительности и поддержке мотивации, ин

.NET Разработчик

4 года назад
Открыть в
День 1468. #ВредныеСоветы 11 Способов Усложнить Себе Жизнь в C#. Начало Программировать тяжело. Большинство из нас работает в командах, создавая ПО, с которым будут работать другие люди. Поэтому важно, чтобы мы старались облегчить жизнь нашей команды. Вот 11 примеров, как НЕ надо делать в C#. 1. Злоупотребление циклами Цикл for существует во многих языках. Вы видели его миллион раз:
for(int i = 0; i < 10; i++) { }

Делать так нормально, но некоторые слишком творчески подходят к написанию циклов. Для начала рассмотрим структуру цикла for:
for (выражение «до»;
 условие;
 выражение «после» каждой итерации)
{}
3 выражения в круглых скобках задают условия выполнения цикла. Но это просто операторы, как и любые другие. А значит вы можете написать там всё, что захотите. Начнём с создания бесконечного цикла, оставив каждое из трех выражений пустым:
// вместо:
while (true) {}
// можно написать:
for (; ;) {}
Хотя это не слишком полезно. Можно опустить третье выражение и добавить приращение в условное выражение:
for(int i = 0; ++i < 100;) {}

Можно использовать строки. Удалим буквы из строки по одной:
for (string name = "Brendan"; 
  name.Length > 0;
  name = name.Substring(1))
{
  Console.WriteLine(name);
}

Чтобы совсем оторваться, создадим несколько переменных и будем использовать их в цикле! Можно использовать кортежи:
for (
 var (number, name) = (1, "Brendan");
 number < 7; 
 name += number.ToString(), number += 1)
{
    Console.WriteLine(name);
}

2. Построение и деконструкция кортежа в конструкторе Кстати, о кортежах. Вы можете конструировать и деконструировать кортежи в одной и той же строке. Удивим команду, поместив весь конструктор в одну строку:
public Person(string prefix, string first, string middle, string last, string suffix, string nickname, DateTime birthday, string favoriteColor)
{
  (Prefix, First, Middle, Last, Suffix, Nickname, Birthday, FavoriteColor) = (prefix, first, middle, last, nickname, suffix, birthday, favoriteColor);
}

Деконструкцию можно использовать в некоторых избранных местах, но, если вы начнёте писать так постоянно, коллегам будет намного труднее понять, что происходит. Деконструкция происходит в порядке указания аргументов, поэтому очень легко запутаться, особенно если параметры были изменены или удалены. Заметили? Тут есть ошибка. Да, nickname и suffix перепутаны местами. И тут не будет ошибки компилятора, так как они одного типа. Продолжение следует… Источник: https://brendoneus.com/post/Ways-Of-Making-CSharp-Harder/