Теперь, когда мы уже научились писать простые программы, можно немного поговорить о том, как их писать.
Код программы следует оформлять определенным образом, чтобы он был достаточно понятным и простым в поддержке. Специальные наборы правил — стандарты — описывают различные аспекты написания кода. Конкретно в C# самым распространенным стандартом является стандарт от Microsoft.
В любом языке программирования существуют утилиты — так называемые линтеры. Они проверяют код на соответствие стандартам, и могут сами поправить небольшие отклонения от стандарта. Для C# линтер является частью Visual Studio. Либо есть отдельная программа dotnet format
Взгляните на пример:
Console.WriteLine(8/2+5 - -3 / 2);
dotnet format будет «ругаться» на нарушение сразу в нескольких местах:
Program.cs(1,27): error WHITESPACE: Fix whitespace formatting. Insert ' ' Program.cs(1,28): error WHITESPACE: Fix whitespace formatting. Insert ' ' Program.cs(1,29): error WHITESPACE: Fix whitespace formatting. Insert ' ' Program.cs(1,30): error WHITESPACE: Fix whitespace formatting. Insert ' '
Program.cs – это имя файла в котором линтер нашел нарушение. Числа в скобка означают номер строки и символа в котором было обнаружено нарушение правил. WHITESPACE – правило, которое было нарушено. Это правило требует наличия пробелов между операторами и операндами. Оно не влияет на результат, но помогает писать код понятнее и проще для восприятия. Код с учетом этого правила выглядит так:
Console.WriteLine(8 / 2 + 5 - -3 / 2);
Теперь линтер ругаться не будет, но код все равно сложен для восприятия из-за отсутствия скобок. Лучше сделать так:
Console.WriteLine((8 / 2) + 5 - (-3 / 2));
Результат тот же самый, но понятен порядок выполнения. Какой мы делаем вывод? Линтер это хорошо, но он не отменяет самостоятельного анализа и упрощения чтения кода.
Сейчас сайт не будет проверять ваш код линтером, но в ваших будущих практиках на Хекслете и в реальной разработке линтер будет работать и сообщать вам о нарушениях.
Выведите на экран результат следующего вычисления: «разность между суммой пяти и двух и произведением трёх и семи». Сравните получившийся результат с решением учителя с точки зрения оформления кода.
Если вы зашли в тупик, то самое время задать вопрос в «Обсуждениях». Как правильно задать вопрос:
Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.
Это нормально 🙆, в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи.
В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.
Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в «Обсуждениях». Идеально, если вы сформулируете непонятные моменты в виде вопросов. Обычно нам нужно несколько дней для внесения правок.
Кстати, вы тоже можете участвовать в улучшении курсов: внизу есть ссылка на исходный код уроков, который можно править прямо из браузера.
Ваше упражнение проверяется по этим тестам
1#load "/src/Init.csx"
2#load "/src/RedirectOutput.csx"
3#load "Exercise.csx"
4
5;
6using PowerAssert;
7
8var output = capturedConsoleOutput.ToString().Trim();
9Console.SetOut(originalStdOut);
10Console.Write(capturedConsoleOutput);
11
12PAssert.IsTrue(() => output == "-14");
13
Решение учителя откроется через: