Упражнение. Удаление блоков кода из операторов if
Разработчики программного обеспечения любят его, когда они могут писать код, который экономит нажатия клавиш и визуальное пространство, не жертвуя удобочитаемостью. Следует применять фразу "меньше — это больше" в процессе разработки, когда это делает код более читаемым и понятным.
Если блок кода содержит только одну строку, вероятно, вам не нужно определять формальный блок кода с помощью фигурных скобок. Хотя технически вам даже не нужно разделять код на несколько строк, объединение операторов в одной строке может сделать код сложным для чтения.
Удаление фигурных скобок, как описано выше, является стилистическим изменением, которое не должно влиять на функциональность вашего кода. Однако необходимо предпринять шаги, чтобы убедиться, что изменения не негативно влияют на то, как можно читать код. Вы можете оценить влияние удаления фигурных скобок и пробелов, а затем вернуться к исходному коду, если вы обнаружите, что изменения сделали код менее читаемым.
Создание примера инструкции if, использующего блок кода
Убедитесь, что в Visual Studio Code открыт пустой файл Program.cs.
При необходимости откройте Visual Studio Code и выполните следующие действия, чтобы подготовить файл Program.cs в редакторе:
В меню Файл выберите Открыть папку.
Используйте диалоговое окно "Открыть папку", чтобы перейти к ней, а затем открыть папку CsharpProjects .
На панели обозревателя Visual Studio Code выберите Program.cs.
В меню Selection в Visual Studio Code выберите Выбрать все, затем нажмите клавишу Delete.
Введите следующий код в редактор Visual Studio Code:
bool flag = true; if (flag) { Console.WriteLine(flag); }Сохраните файл кода и используйте Visual Studio Code для запуска кода.
Введите
dotnet runиз командной строки терминала, чтобы запустить код.Убедитесь, что отображаются следующие выходные данные:
TrueКод представляет хорошую отправную точку, но у вас есть блок кода, включающий одну строку кода. В этом случае необходимо определить блок кода?
Удаление фигурных скобок
При выполнении условия, что flag равно true, приведенный выше код выполняет блок кода. Так как этот блок кода содержит одну строку кода, вы можете удалить фигурные скобки.
Обновите код в редакторе Visual Studio Code следующим образом:
bool flag = true; if (flag) Console.WriteLine(flag);Замечание
Удаление фигурных скобок не изменяет тот факт, что
Console.WriteLine(flag);является блоком программного кода для оператораif.Сохраните файл кода и используйте Visual Studio Code для запуска кода.
Обратите внимание, что выходные данные такие же, как раньше.
Вы по-прежнему увидите следующие выходные данные:
TrueОднако стало на две строки кода меньше. Наиболее важно то, что, даже если ниже строки кода
ifсделан отступ, ваш код остаётся легко читаемым.
Проверка удобочитаемости однострочных форм, если операторы
На этом шаге вы рассмотрите ситуацию, когда удобочитаемость кода может быть снижена.
Поскольку выражение if и вызов метода Console.WriteLine() короткие, может возникнуть соблазн объединить их в одну строку. В конце концов синтаксис C# для инструкции if позволяет объединить операторы таким образом.
Обновите код в редакторе Visual Studio Code следующим образом:
bool flag = true; if (flag) Console.WriteLine(flag);Сохраните файл кода и используйте Visual Studio Code для запуска кода.
Обратите внимание, что выходные данные по-прежнему одинаковы.
Минуту, чтобы рассмотреть возможность удобочитаемости кода.
Представьте себе предыдущие два примера кода, вложенные в более крупный раздел кода. Объединение операторов кода (например, на шаге 4) может усложнить чтение.
При реализации инструкции
if, включающей блок кода с одним оператором, корпорация Майкрософт рекомендует учитывать следующие соглашения:- Никогда не используйте однострочный формат (например, if (flag) Console.WriteLine(flag);
- Использование фигурных скобок всегда принимается и требуется, если любой блок инструкции if/else if/.../else в составной инструкции использует фигурные скобки или если один текст инструкции охватывает несколько строк.
- Фигурные скобки могут быть опущены только в том случае, если текст каждого блока, связанного с оператором if/else if/.../else, помещается в одну строку.
Чтобы проверить влияние удобочитаемости для более крупных конструкций if-elseif-else, обновите код следующим образом:
string name = "steve"; if (name == "bob") Console.WriteLine("Found Bob"); else if (name == "steve") Console.WriteLine("Found Steve"); else Console.WriteLine("Found Chuck");Сохраните файл кода и используйте Visual Studio Code для запуска кода.
При запуске кода он должен вывести следующие выходные данные:
Found SteveКод выполняется, но эти строки кода являются плотными и трудными для чтения. Может потребоваться переформатировать код, чтобы включить разрыв строки после операторов
if,else ifиelse.Сравните код, который вы только что выполнили со следующим кодом:
string name = "steve"; if (name == "bob") Console.WriteLine("Found Bob"); else if (name == "steve") Console.WriteLine("Found Steve"); else Console.WriteLine("Found Chuck");Обратите внимание, сколько проще прочитать второй пример кода.
Обзор
Ниже приведены некоторые важные моменты, которые следует помнить о if блоках кода инструкции и удобочитаемости.
- Если вы заметили, что у вас есть только одна строка кода, указанная в кодовых блоках конструкции
if-elseif-else, можно удалить фигурные скобки блока кода и лишние пробелы. Корпорация Майкрософт рекомендует последовательно использовать фигурные скобки для всех блоковif-elseif-elseкода инструкции (присутствует или удалено последовательно). - Удаляйте фигурные скобки блока кода только если это делает код более читаемым. Всегда приемлемо использовать фигурные скобки.
- Удалите символ перевода строки только в том случае, если это делает код более читаемым. Корпорация Майкрософт предлагает, что код будет более читаемым, если каждая инструкция помещается в собственную строку кода.