Упражнение. Использование пробелов для упрощения чтения кода
Печать и веб-дизайнеры понимают, что размещение слишком много информации в небольшом пространстве перегружено зрителя. Поэтому они стратегически применяют пустое пространство или отрицательное пространство, чтобы разделить информацию и позволить читателю максимально эффективно воспринимать ключевую идею их работы.
Разработчики могут использовать аналогичную стратегию при написании кода в редакторе. Используя пустое пространство для передачи значения, разработчики могут сделать свой код более понятным.
Что такое пустое пространство?
Термин "пустое пространство" означает отдельные пробелы, создаваемые клавишей space bar, символы табуляции, создаваемые клавишей tab, и новые строки, создаваемые клавишей enter.
Компилятор C# игнорирует пустое пространство. Чтобы понять, как пробелы игнорируются, и как повысить ясность с помощью пробелов, выполните следующее упражнение.
Добавление кода для иллюстрации того, как пробелы игнорируются компилятором C#
Убедитесь, что в Visual Studio Code открыт пустой файл Program.cs.
При необходимости откройте Visual Studio Code и выполните следующие действия, чтобы подготовить файл Program.cs в редакторе:
В меню Файл выберите Открыть папку.
Используйте диалоговое окно "Открыть папку", чтобы перейти к ней, а затем открыть папку CsharpProjects .
В представлении обозревателя Visual Studio Code выберите Program.cs.
В меню выбора Visual Studio Code нажмите кнопку "Выбрать все", а затем нажмите клавишу DELETE.
Введите следующий код:
// Example 1: Console . WriteLine ( "Hello Example 1!" ) ; // Example 2: string firstWord="Hello";string lastWord="Example 2";Console.WriteLine(firstWord+" "+lastWord+"!");В меню "Файл Visual Studio Code" нажмите кнопку "Сохранить".
В представлении EXPLORER откройте терминал в папке TestProject, щелкните правой кнопкой мыши TestProject и выберите "Открыть в интегрированном терминале".
В командной строке терминала введите dotnet run и нажмите клавишу ВВОД.
Должен появиться следующий результат:
Hello Example 1! Hello Example 2!На минуту, чтобы рассмотреть этот результат, вы узнаете, как следует использовать пробелы в коде.
Два этих примера кода иллюстрируют две важные идеи:
- Пустое пространство не имеет значения для компилятора. Однако...
- Пустое пространство, если оно используется правильно, может улучшить возможность восприятия и понимания кода.
Скорее всего, вы напишете код один раз, но необходимо считывать код несколько раз. Поэтому следует сосредоточиться на удобочитаемости написанного кода. Со временем вы получите представление о том, когда и как использовать пробелы, такие как символ пробела, вкладки и новые строки.
Предварительные указания:
- Каждая полная команда (оператор) относится к отдельной строке.
- Если одна строка кода становится слишком длинной, ее можно разбить. Однако следует избегать произвольного разделения одного оператора на несколько строк без веских причин.
- Используйте пробел слева и справа от оператора присваивания.
Замените существующий код следующим кодом:
Random dice = new Random(); int roll1 = dice.Next(1, 7); int roll2 = dice.Next(1, 7); int roll3 = dice.Next(1, 7); int total = roll1 + roll2 + roll3; Console.WriteLine($"Dice roll: {roll1} + {roll2} + {roll3} = {total}"); if ((roll1 == roll2) || (roll2 == roll3) || (roll1 == roll3)) { if ((roll1 == roll2) && (roll2 == roll3)) { Console.WriteLine("You rolled triples! +6 bonus to total!"); total += 6; } else { Console.WriteLine("You rolled doubles! +2 bonus to total!"); total += 2; } }Обратите внимание, что этот код не включает много пробелов. Этот код будет использоваться для иллюстрации подхода к добавлению пробелов в приложения. Эффективное пробелы должны упростить понимание того, что делает ваш код.
Примечание.
Код использует
Randomкласс для разработки имитированной игры dice, где общее значение из трех роллей используется для оценки "выигрышной" оценки. Код назначает дополнительные баллы за скользящей двойной или тройной. Вам не нужно полностью понимать этот код, чтобы увидеть преимущества включения пробелов.На минуту рассмотрим, как использовать пробелы для улучшения удобочитаемости этого кода.
Этот код имеет две особенности, которые следует упомянуть:
- В этом примере кода нет вертикального пустого пространства. Иными словами, нет пустых строк, разделяющих строки кода. Весь код выполняется в виде одного плотно скомпонованного листинга.
- Блоки кода, определенные открывающими и закрывающими фигурными скобками
{ }, прижимаются друг к другу, что усложняет их визуальное определение.
Как правило, для улучшения удобочитаемости вы вводите пустую строку между двумя, тремя или четырьмя строками кода, которые выполняют аналогичные или связанные вещи.
Разделение кода на выражения с использованием вертикального пустого пространства является субъективным. Возможно, два разработчика не согласятся с тем, что наиболее читаемо, или когда добавить пробелы. Руководствуйтесь интуицией и здравым смыслом.
Чтобы добавить вертикальное пробелы, которые повышают удобочитаемость, обновите код следующим образом:
Random dice = new Random(); int roll1 = dice.Next(1, 7); int roll2 = dice.Next(1, 7); int roll3 = dice.Next(1, 7); int total = roll1 + roll2 + roll3; Console.WriteLine($"Dice roll: {roll1} + {roll2} + {roll3} = {total}"); if ((roll1 == roll2) || (roll2 == roll3) || (roll1 == roll3)) { if ((roll1 == roll2) && (roll2 == roll3)) { Console.WriteLine("You rolled triples! +6 bonus to total!"); total += 6; } else { Console.WriteLine("You rolled doubles! +2 bonus to total!"); total += 2; } }Первая строка пробела используется для разделения объявления переменной
diceиз строк кода, используемых для назначения значений переменным roll. Это разделение упрощает просмотр способаdiceиспользования в коде.Следующая строка пробелов отделяет объявление переменных roll от объявления
total. Группирование объявления трех переменных свертки полезно двумя способами. Во-первых, он создает группу строк кода, включающих связанные переменные. Во-вторых, имена переменных настолько похожи, и объявление соответствует тому же шаблону. Таким образом, группирование их вместе привлекает взгляд к сходствам и помогает выявить различия.Наконец, третья строка пробелов отделяет другую группу связанных операторов от вложенных
ifинструкций. Группа операторов, которая включает объявлениеtotalиConsole.WriteLine()метод связан с целью, а не внешним видом. Ваш код сосредоточен на общем значении, достигнутом тремя dice и независимо от того, включается ли свертка в два или три раза. Эти строки связаны, так как необходимо вычислитьtotalи сообщить результаты свертки пользователю.Некоторые разработчики могут утверждать, что следует добавить пустую строку между объявлением
totalиConsole.WriteLine(). Опять же, выбор пробелов до вашего лучшего решения. Вы должны решить, что более удобочитаемо для вас, и использовать этот стиль последовательно.Все, что у вас осталось, — это
ifинструкция. Вы можете изучить это сейчас.Сосредоточьтесь на строках кода под ключевым словом
if, измените код следующим образом:Random dice = new Random(); int roll1 = dice.Next(1, 7); int roll2 = dice.Next(1, 7); int roll3 = dice.Next(1, 7); int total = roll1 + roll2 + roll3; Console.WriteLine($"Dice roll: {roll1} + {roll2} + {roll3} = {total}"); if ((roll1 == roll2) || (roll2 == roll3) || (roll1 == roll3)) { if ((roll1 == roll2) && (roll2 == roll3)) { Console.WriteLine("You rolled triples! +6 bonus to total!"); total += 6; } else { Console.WriteLine("You rolled doubles! +2 bonus to total!"); total += 2; } }Обратите внимание, что вы переместили открывающие и закрывающие фигурные скобки в свою собственную линию, чтобы улучшить интервалы.
Символы
{и}создают блоки кода. Для многих конструкций C# требуются блоки кода. Эти символы должны размещаться на отдельной строке, чтобы их границы были четко видны и понятны.Кроме того, важно использовать клавишу
tab, чтобы выровнять символы блока кода под ключевым словом, к которому они относятся. Например, обратите внимание на строку кода, которая начинается с ключевого словаif. Под этой строкой находится символ{. Это выравнивание упрощает понимание того, что{оператор "принадлежит" операторуif. Кроме того, последняя}строка символов с операторомifтакже. Сочетание выравнивания и отступа позволяет легко понять, где начинается и заканчивается блок кода.Строки кода внутри этого блока кода отступают, указывая на то, что они принадлежат этому блоку кода.
Вы следуете аналогичному шаблону с внутренним
ifоператором иelseоператором, а также кодом внутри этих блоков кода.
Не все согласны с этим руководством по стилю для включения пробелов. Однако при написании кода следует использовать это руководство в качестве отправной точки. В будущем вы можете быть целеустремленным при принятии решения о отклонении от этого руководства.
Кратко
Ключевые моменты этого упражнения, которые следует запомнить:
- Вдумчиво используйте пустое пространство, чтобы повысить удобочитаемость кода.
- Используйте символы перевода строки, чтобы создать пустые строки для разделения выражений кода. Фраза содержит строки кода, которые похожи или работают вместе.
- Используйте символы перевода строки для разделения символов блока кода, чтобы они находились на отдельной строке кода.
- Используйте клавишу
tab, чтобы выровнять блок кода с ключевым словом, с которым он связан. - Используйте отступ для кода внутри блока кода, чтобы показать уровни подчинения.