Зміст чистого коду та ключові моменти

Давним-давно я використав цей короткий зміст деяких ключових моментів, які зробив для вивчення книги «Чистий код». Сподіваюся, це допомагає іншим.

Приєднуйтесь до спільноти DZone та отримуйте досвід повного членства.

чистого

Давним-давно я використав цей короткий зміст деяких ключових моментів, які зробив для вивчення книги «Чистий код». Сподіваюся, це допомагає іншим. (Примітка: цей короткий зміст не виключає необхідності читати книгу.)

Що таке чистий код?

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

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

Ви повинні додати цінності бізнесу за допомогою свого коду.

Чистий код пропонує якість та розуміння, коли ми відкриваємо клас.

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

Значущі імена

Назви класів, змінних та методів повинні бути значущими і чітко вказувати, що робить метод або що таке атрибут.

Створіть вимовні імена для полегшення спілкування.

Уникайте скорочень та уникайте плутанини назв, що може призвести до помилкових висновків тих, хто читає код.

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

Функції

Метод повинен бути легким для читання та розуміння.

Метод повинен передати свій намір.

Методи повинні бути невеликими. Іншим правилом для малих методів є те, що вони повинні бути ще нижчими.

Вони повинні мати до 20 рядків. (Я думаю, вони повинні мати до 10 рядків.)

Методи повинні робити лише одне: вони повинні робити це правильно і просто робити це.

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

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

Треба уникати трьох, але якщо ви вважаєте, що їх слід використовувати, майте вагоме обґрунтування.

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

Методи повинні щось робити і щось повертати.

Коментарі

Однією з найпоширеніших причин для коментарів є те, що код поганий.

Якщо ви думаєте про те, щоб написати коментар, тоді код слід змінити.

Коментарі не зберігають поганий код.

Спробуйте пояснити, що викликає код.

Коментарі можуть бути корисними при розміщенні в певних місцях.

Створюйте імена методів та інформативні змінні замість того, щоб пояснювати код коментарями.

Коментарі можуть бути використані для вираження важливості певних пунктів коду.

Найкращий коментар - це той, який потрібно написати, оскільки ваш код уже пояснений.

Не пишіть коментарі із зайвою, марною або неправдивою інформацією.

Вони не повинні використовуватися для вказівки, хто змінив чи чому, оскільки це вже існує у версії.

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

Форматування

Форматування повинно вказувати на важливі речі, оскільки це розробник форми спілкування.

Брудний код важко прочитати.

Читаність коду набуде чинності при внесенні всіх змін.

Спробуйте написати клас із максимум 500 рядків. Менші класи легше зрозуміти.

Встановіть обмеження кількості символів на рядок коду.

Хороший ліміт символів для рядка - 120.

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

Використовуйте пробіли між операторами, параметрами та комами.

Об'єкти та структура даних

Дотримуйтесь закону Деметри, який говорить, що один М-метод об'єкта O може споживати послуги лише таких типів об'єктів:

  • Сам об’єкт, О.
  • М параметри.
  • Будь-який об’єкт, створений або створений за допомогою М.
  • Прямі компоненти O.

Зробіть хорошу абстракцію та інкапсуляцію.

Не робіть німі предмети.

Об'єкти приховують абстракцію даних і виставляють методи, що керують даними.

Структури даних відкривають ваші дані і не мають значущих методів.

Обробка помилок

Всі програмісти повинні ретельно планувати обробку помилок.

Коли трапляються неправильні речі, ми повинні змусити це робити правильні речі.

Ми повинні віддавати перевагу запуску винятку, ніж обробці його просто для приховування.

Створюйте повідомлення з інформацією про помилку.

Згадайте, що це не вдалося. Де була ця невдача? Якщо можливо, згадайте, чому це не вдалося.

Подивіться на окремі бізнес-правила щодо помилок та обробки помилок.

Уникайте повернення NULL у методах, бажано повернути порожній об'єкт.

Уникайте передавання NULL методам; це може генерувати NullPointerExceptions.

Межа

У сторонніх кодах, щоб уникнути передачі об’єктів, API сподіваються на те, щоб зберегти речі в одному класі.

Виконує тести на сторонніх розробниках API.

Вивчіть документацію та протестуйте третій API, перш ніж почати її використовувати.

Добре перевірте функції, якими ви будете користуватися.

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

Створення тестів на функціональність API.

Одиничні тести

Переконайтесь, що кожен фрагмент коду робить те, що ви очікуєте.

Дотримуйтесь закону TDD:

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

Зберігайте тест в чистоті.

Тести повинні зазнавати змін так само, як і код.

Чим брудніший код, тим складнішим буде тестування.

Використовуйте правило F.I.R.S.T для тестування:

  • Тест є швидко-біг.
  • Тести є незалежний інших.
  • Тест є повторюваний в різних середовищах.
  • Тест є самоперевірка.
  • Тест є тімелі.

Тест настільки ж важливий, як і виробничий код.

Заняття

За замовчуванням класи Java повинні починатися зі змінних:

  • Статичний і постійно публічний.
  • Статичні та змінні приватні.
  • Екземпляри та змінні приватні особи.
  • Незабаром після цього з’являються функції.

Назва класу повинна відображати вашу відповідальність.

Клас повинен нести лише одну відповідальність.

Знати чисельність класу ідеально, або ми не повинні вимірювати її відповідальність.

Спробуйте дати короткий опис класу.

Методи повинні бути:

  • Маленький.
  • . і навіть нижче.
  • Вони повинні нести лише одну відповідальність.

Системи

Важливо визнати та розділити обов'язки системи.

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

Важливо подбати про ін’єкції залежностей і дозволити лише об’єктам дбати про логічний бізнес.

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

Щоб дійти до того, що TDD необхідний, вам потрібен рефакторинг та чистий код.

Ми повинні будувати логіку, засновану на POJO, шляхом тестування та еволюціонувати від простого до взаємозв’язку різних необхідних аспектів.

Поява

Ось правила, наведені Кентом Беком для створення хорошого дизайну:

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

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

Збіг

Паралельність - це аспект, який може бути присутнім у кодах.

Роз'єднання дозволяє поліпшити врожайність і структуру заявки.

Паралельність може покращити час відгуку та ефективність програми.

Вам слід врахувати наступні ідеї щодо збігу:

  • Це вводить певне перевантаження.
  • Він може бути складним в експлуатації.
  • Помилки, спричинені нею, можуть бути важко відтворити.
  • Зазвичай це вимагає змін конструкції.

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

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

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

Хороший спосіб тестування - це вставити коди для тестування в середину реалізованого коду.

Послідовне вдосконалення

Працювати лише з кодом недостатньо, щоб мати хороший код.

Професіоналів, які піклуються лише про код, який працює, не можна вважати професіоналом.

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

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

Тоді рішення вирішується на підтримці максимально чистого коду і якомога простіше, не даючи йому ніколи починати гнити.

JUnit

Охоплюйте тести кожного (не кожного методу, а кожного рядка коду).

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

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

Рефакторинг

Перш ніж робити будь-який вид рефакторингу, важливо добре провести тести покриття.

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

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

Java

  • Уникайте довгих списків імпорту, використовуючи *.
  • Не успадковуйте константи. Замість цього використовуйте константи перелічень.

Імена

  • Доберіть описові імена.
  • Доберіть імена на відповідному рівні абстракції.
  • Використовуйте стандартну номенклатуру, де це можливо.
  • Використовуйте довгі імена для довгих областей.
  • Уникайте кодування.
  • Імена повинні описувати побічні ефекти.

Висновок

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

Професіоналізм та майстерність випливають із цінностей та дисципліни у списках того, що слід, а що не слід робити під час створення коду.