C# програмістам-початківцям: 5 корисних порад, які зроблять Ваш код чистішим


Дізнайтесь більше про нові кар'єрні можливості в EchoUA. Цікаві проекти, ринкова оплата, гарний колектив. Надсилайте резюме та приєднуйтеся до нас.

Розповідає Мош Хамедані, автор курсів з C# і AngularJS на udemy


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

Багато студентів мого базового курсу із С# надсилають мені свій код, і, коли у мене є можливість, я його переглядаю і даю корисні поради для поліпшення їх навичок програмування. При цьому я помітив помилки, що часто зустрічаються. У цій статті я проллю світло на подібні моменти і розповім, як зробити Ваш код чистішим і спростити життя людям, які його підтримуватимуть.

Перевіряйте вхідні дані в першу чергу

Зверніть увагу на цей відрізок коду:

public void Draw (Shape shape){ if (shape != null) { Console.WriteLine ("Drawing " + shape.ToString()); Console.WriteLine ("---"); } else {
throw new ArgumentNullException ("shape"); }}

Зараз треба прочитати весь код до кінця, щоб дійти до рядка, де викидається виняток, якщо аргумент функції рівний null. Але куди краще було б перевіряти вхідні дані в першу чергу. Це полегшує розуміння того, як цей метод повинен використовуватися для людей, які читатимуть цей код після Вас. Тому давайте змінимо порядок операторів порівняння:

public void Draw (Shape shape){ if (shape == null) { throw new ArgumentNullException ("shape"); } else { Console.WriteLine ("Drawing " + shape.ToString()); Console.WriteLine ("---"); }}

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

Оператор else потрібний далеко не завжди

Продовжуючи з кодом із попереднього прикладу, якщо аргумент shape дорівнюватиме null, буде викинуто виняток, і тоді залишок методу точно не виконається. Тому немає жодного сенсу в додаванні else, який, крім того, додає відступів до більшої частини коду. Такий код виглядає чистіше:

public void Draw (Shape shape){ if (shape == null) { throw new ArgumentNullException ("shape"); } Console.WriteLine ("Drawing " + shape.ToString()); Console.WriteLine ("---");}

Зверніть увагу на те, що код після оператора if не має додаткових відступів.

Фігурні дужки?

Цей пункт є повністю суб’єктивним. Одні розробники люблять фігурні дужки, інші ні. Я особисто пройшов через різні стадії. Тут немає однозначної думки про те, як чинити правильно. Ви повинні самі для себе вирішувати, ставити фігурні дужки або опустити їх. Давайте приберемо фігурні дужки в нашому прикладі, і подивимося як це виглядає:

public void Draw (Shape shape){ if (shape == null) throw new ArgumentNullException ("shape"); Console.WriteLine ("Drawing " + shape.ToString()); Console.WriteLine ("---");}

Мені здається, тепер код став чистішим. А що Ви думаєте з цього приводу?

Звертайте увагу на назви ідентифікаторів

Назви ідентифікаторів у Вашому коді важливі так само, як і те, як Ви назвете своїх дітей. Я не серйозно. Ніхто не захоче читати чужий код з подібними назвами:

  • od: Що означає od? Черговий день? Оператор доставки? Опція доступу?
  • Button1_Click (): Що за Button1? І чим вона відрізняється від Button2?
  • thisAs: А це що взагалі таке?!

Використайте назви, які без спотворень передаватимуть Ваші ідеї в коді.

Уникайте непотрібних змінних

У 80-х роках ХХ століття книги з програмування вчили нас оголошувати змінну з будь-якого приводу. Подивіться на цей відрізок коду, який читає два числа з консолі й виводить максимальне з них:

var firstInput = Console.ReadLine ();var firstNumber = Convert.ToInt32 (firstInput);var secondInput = Console.Readline ();var secondNumber = Convert.ToInt32 (secondInput);var max =  (firstNumber > secondNumber) ? firstNumber: secondNumber;
Console.WriteLine (max);

У мене буквально очі на лоб вилізли, коли я оголошував усі ці змінні! У чому основна мета цього коду? Правильно – знайти максимум двох чисел. Тому firstInput і secondInput, які є рядками з ліченим введенням користувача, не є корисними або потрібними в цьому коді. Все, що нам потрібно – два числа. Часовий рядок, який ми отримуємо з консолі в процесі, не є важливим. Тому ці дві змінні ніяк не покращують цей код в плані читабельності, а тільки додають зайвого шуму. Ми можемо рахувати введення з консолі і перетворити його в число одним рядком коду:

var firstNumber = Convert.ToInt32 (Console.ReadLine());var secondNumber = Convert.ToInt32 (Console.Readline());var max =  (firstNumber > secondNumber) ? firstNumber: secondNumber;
Console.WriteLine (max);

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


Якщо поради в цій статті видалися Вам занадто тривіальними, зверніть увагу на статтю з 10 корисними особливостями мови C#.

Також радимо Вам ознайомитися зі списком із 20 інших програмістів, які дають корисні поради з програмування на C#.

Джерело: programmingwithmosh.com

Київ, Харків, Одеса, Дніпро, Запоріжжя, Кривий Ріг, Вінниця, Херсон, Черкаси, Житомир, Хмельницький, Чернівці, Рівне, Івано-Франківськ, Кременчук, Тернопіль, Луцьк, Ужгород, Кам'янець-Подільський, Стрий - за статистикою саме з цих міст програмісти найбільше переїжджають працювати до Львова. А Ви розглядаєте relocate?


Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *