Вправа . Використовуйте пробіли, щоб полегшити читання коду

Завершено

Розробники друку та веб-розробників розуміють, що розміщення забагато інформації в невеликому просторі приголомшує глядача. Таким чином, вони стратегічно використовують пробіл або від'ємний простір, щоб розбити інформацію, щоб максимально збільшити здатність глядача споживати основне повідомлення про свою роботу.

Розробники можуть використовувати подібну стратегію під час написання коду в редакторі. Використовуючи білий простір для передачі сенсу, розробники можуть збільшити ясність намірів свого коду.

Що таке пробіли?

Термін "whitespace" – це окремі пробіли, створені символом space bar, вкладки, вироблені ключем tab , і нові лінії, створені ключем enter .

Компілятор C# ігнорує пробіли. Щоб зрозуміти, як пропускається пробіл і як максимально збільшити ясність за допомогою пробілу, виконайте наведені нижче дії.

Додавання коду для ілюстрації ігнорування пробілів компілятором C#

  1. Переконайтеся, що в коді Visual Studio відкрито пустий файл Program.cs.

    За потреби відкрийте Visual Studio Code і виконайте наведені нижче дії, щоб підготувати файл Program.cs в редакторі.

    1. У меню Файл виберіть Відкрити папку.

    2. Перейдіть до діалогового вікна Відкрити папку, а потім відкрийте папку CsharpProjects .

    3. У поданні Visual Studio Code EXPLORER виберіть Program.cs.

    4. У меню Вибір коду Visual Studio виберіть виділити все, а потім натисніть клавішу Delete.

  2. Введіть такий код:

    // Example 1:
    Console
    .
    WriteLine
    (
    "Hello Example 1!"
    )
    ;
    
    // Example 2:
    string firstWord="Hello";string lastWord="Example 2";Console.WriteLine(firstWord+" "+lastWord+"!");
    
  3. У меню Файл код Visual Studio Code виберіть Зберегти.

  4. У поданні EXPLORER, щоб відкрити термінал у розташуванні папки TestProject, клацніть правою кнопкою миші елемент TestProject, а потім виберіть відкрити в інтегрованому терміналі.

  5. У командному рядку термінала введіть dotnet run і натисніть клавішу Enter.

    Ви побачите такий результат:

    Hello Example 1!
    Hello Example 2!
    
  6. Поміркуйте над цим результатом, щоб дізнатися, як слід використовувати пробіли в коді.

    Ці два приклади коду ілюструють дві життєво важливі ідеї:

    • Whitespace не має значення для компілятора. Однак...
    • Whitespace, коли він використовується належним чином, може збільшити вашу здатність читати та осягнути код.

    Імовірно, ви напишете код один раз, але його потрібно прочитати кілька разів. Тому слід зосередитися на зручності читання коду, який ви пишете. З часом ви дізнаєтеся, коли та як використовувати пробіли, наприклад символ пробілу, вкладки та нові лінії.

    Рання рекомендація:

    • Кожна повна команда ( інструкція) належить до окремого рядка.
    • Якщо один рядок коду стає довгим, його можна розбити. Однак слід уникати довільного розділення однієї інструкції на кілька рядків, доки у вас не буде вагомих причин для цього.
    • Використовуйте пробіл ліворуч і праворуч від оператора призначення.
  7. Замініть наявний код на такий код:

    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 клас, щоб допомогти розробити імітацію гри в кістки, де загальне значення з трьох рулонів використовується для оцінки "виграшного" балу. Код нагороджує додаткові бали за прокат подвійних або потрійних балів. Вам не потрібно повністю розуміти цей код, щоб побачити переваги включення пробілів.

  8. Зачекайте хвилинку, щоб подумати, як би ви могли використовувати пробіли, щоб полегшити читання цього коду.

    Є дві функції цього коду, які можна взяти до відома:

    • У цьому прикладі коду немає вертикального пробілу. Іншими словами, немає пустих рядків, які розділяють рядки коду. Все працює разом в одному щільному коді входження.
    • Блоки коду, як визначено символами відкривання та закриття фігурних фігурних дужок { } , стискаються разом, що ускладнює візуальне розрізнення їхніх меж.

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

    Вираз коду з використанням вертикального пробілу є суб'єктивним. Можливо, два розробники не погодяться з тим, що найбільш доступне для читання, або коли додавати пробіли. Використайте своє найкраще судження.

  9. Щоб додати вертикальний простір для читання, оновіть код таким чином:

    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() метод, пов'язана за призначенням, а не за зовнішнім виглядом. Ваш код орієнтований на загальне значення, досягнуте трьома кістками, і на тому, чи містить рулон подвійні або потрійні значення. Ці рядки пов'язані між собою, оскільки потрібно обчислити total та повідомити про результати розгортання користувачу.

    Деякі розробники можуть стверджувати, що ви повинні додати порожній рядок між оголошенням totalConsole.WriteLine()і . Знову ж таки, вибір пробілів до вашого найкращого судження. Ви повинні вирішити, який для вас більш доступний для читання, і використовувати цей стиль послідовно.

    Усе, що залишилося, – це інструкція if . Ви можете перевірити, що зараз.

  10. Фокусуючи увагу на рядках коду під 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;
        }
    }
    
  11. Зверніть увагу, що ви перемістили відкривні та закривні фігурні дужки на власну лінію, щоб покращити інтервал.

    Символи { та } символи створюють блоки коду. Для багатьох конструкцій C# потрібні блоки коду. Ці символи слід розташувати в окремому рядку, щоб їх межі були чітко видимі та доступні для читання.

    Крім того, важливо використовувати клавішу tab , щоб вирівняти символи блока коду під ключовим словом, до якої вони належать. Наприклад, зверніть увагу на рядок коду, який починається з ключового слова if. Під цим рядком розташовано { символ. Це вирівнювання дає змогу { легко зрозуміти, що інструкція "належить" до if нього. Крім того, останній } символ також вирівнюється з інструкцією if . Поєднання вирівнювання та відступів дає змогу легко зрозуміти, де починається та закінчується блок коду.

    Відступ рядків коду в цьому блоці коду вказує на те, що вони "належать" до цього блоку коду.

    Ви дотримуєтеся подібного шаблону з внутрішнім if оператором і else оператором, а також кодом усередині цих блоків коду.

Не всі згодні з цим стилем інструкції з включення пробілів. Однак під час написання коду радимо використовувати ці вказівки як відправну точку. У майбутньому ви можете бути цілеспрямованими під час прийняття рішення про відхилення від цього керівництва.

Повторити введення

Основні виноси з цієї вправи:

  • Використовуйте whitespace розумно, щоб полегшити читання коду.
  • Використовуйте канали рядків, щоб створювати пусті рядки для розділення фраз коду. Фраза містить схожі рядки коду або працюють разом.
  • Використовуйте канали рядків, щоб розділяти символи блоків коду так, щоб вони були в окремому рядку коду.
  • Скористайтеся клавішею tab , щоб вирівняти блок коду з ключовим словом, з яким вони пов'язані.
  • Знизити рівень коду всередині блоку коду для відображення права власності.