Як писати чистий код Уроки, отримані від “Чистого кодексу” - Роберт С.

Є дві речі - програмування та хороше програмування. Програмування - це те, чим ми всі займалися. Зараз саме час зробити хороше програмування. Ми всі знаємо, що навіть поганий код працює. Але потрібні час і ресурси, щоб зробити програму доброю. Більше того, інші розробники знущаються над вами, коли вони намагаються з’ясувати, що все відбувається у вашому коді. Але ніколи не пізно піклуватися про свої програми.

уроки

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

Зараз ви читаєте цей блог з двох причин. По-перше, ви програміст. По-друге, ви хочете бути кращим програмістом. Добре. Нам потрібні кращі програмісти.

Характеристики чистого коду:

  1. Він повинен бути елегантним - Чистий код повинен бути приємним для читання. Читаючи його, ви повинні посміхнутися так, як добре продумана музична шкатулка або продуманий автомобіль.
  2. Чистий код орієнтований - кожна функція, кожен клас, кожен модуль виявляє єдинодушне ставлення, яке залишається повністю невідволіканим та незабрудненим оточуючими деталями.
  3. Про чистий код подбали. Хтось знайшов час, щоб зберегти це просто і впорядковано. Вони приділили належну увагу деталям. Вони дбали.

4. Запускає всі тести

5. Не містить копіювання

6. Мінімізуйте кількість сутностей, таких як класи, методи, функції тощо.

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

Напр. D; // час, що минув у днях.

Ми повинні вибрати назву, яка вказує, що вимірюється, і одиницю виміру.

Кращою назвою буде: - int elapsedTime. (Незважаючи на те, що в книзі сказано elapsedTimeInDays, я все одно віддаю перевагу першому. Припустимо, що минулий час змінено на мілісекунди. Тоді нам доведеться довго змінювати int і elapsedTimeInMillis замість elapsedTimeInDays. І скільки часу ми будемо продовжувати змінювати обидва тип даних та ім'я.)

Назви класів - Класи та об’єкти повинні мати імена іменників або іменників, таких як Клієнт, Вікісторінка, Обліковий запис та Адресний парсер. Уникайте слів, таких як менеджер, процесор, дані чи інформація в назві класу. Назва класу не повинна бути дієсловом.

Назви методів -Методи повинні мати назви дієслів або дієслів, таких як postPayment, deletePage або save. Аксесоари, мутатори та предикати повинні бути названі за їх значенням і префіксом get, set.

Коли конструктори перевантажені, використовуйте статичні фабричні методи з іменами, що описують аргументи. Наприклад,

Складна точка опори = Комплекс.ФромРеальнийЧисло (23.0); як правило, кращий за Complex fulcrumPoint = new Complex (23.0);

Виберіть одне слово для концепції -Виберіть одне слово для одного абстрактного поняття і дотримуйтесь його. Наприклад, заплутано мати вибірку, отримання та отримання як еквівалентні методи різних класів. Як ви пам’ятаєте, яка назва методу поєднується з яким класом? Так само заплутано мати контролер, менеджер і драйвер в одній базі коду. У чому полягає суттєва різниця між DeviceManager та контролером протоколів?

Перше правило функцій полягає в тому, що вони повинні бути малими. Друге правило функцій полягає в тому, що вони повинні бути меншими за це. Це означає, що блоки, що містяться в операторах if, else, у той час як оператори тощо, повинні складати один рядок. Можливо, ця лінія повинна бути викликом функції. Це не тільки робить функцію, що обгороджує, невеликою, але й додає документальне значення, оскільки функція, що викликається в блоці, може мати приємне описове ім’я.