Підсумок
Як пише ЖакБ, не всі згодні з "Чистим кодексом" Роберта К. Мартіна.
Проекти з відкритим кодом, які ви виявили, що "порушують" принципи, які ви очікували, швидше за все, мають інші принципи.
Моя перспектива
Мені здається, я наглядаю за кількома кодовими базами, які дуже дотримуються принципів Роберта К. Мартіна. Однак я не дуже стверджую, що вони мають рацію , можу лише сказати, що вони добре працюють на нас - і що "нас" насправді є комбінацією принаймні
- сфера та архітектура нашої продукції,
- цільовий ринок / очікування споживачів,
- як довго зберігається продукція,
- методику розвитку, яку ми використовуємо,
- організаційну структуру нашої компанії та
- звички, думки та досвід роботи наших розробників.
В основному, це зводиться до: кожна команда (будь то компанія, відділ або проект з відкритим кодом) є унікальною. У них будуть різні пріоритети та різні точки зору, і, звичайно, вони будуть робити різні компроміси. Ці компроміси та стиль коду, до яких вони призводять, значною мірою є предметом смаку і не можуть бути доведені "неправильними" чи "правильними". Команди можуть сказати лише "ми робимо це, тому що це працює для нас" або "ми повинні це змінити, тому що це не працює для нас".
Зважаючи на це, я вважаю, що для успішного підтримання великих кодових баз протягом багатьох років кожна команда повинна погодитись набір конвенційних кодів, які, на їхню думку, підходять для вищезазначених аспектів. Це може означати прийняття практики Робертом К. Мартіном, іншим автором, або винайдення їх власних; це може означати їх формальне записування або документування "на прикладі". Але вони повинні існувати.
Приклад
Розглянемо практику "розщеплення коду від довгого методу на кілька приватних методів".
Роберт C. Мартін говорить , що цей стиль дозволяє для обмеження вмісту кожного методу на один рівень абстракції - як спрощений приклад, відкритий метод, ймовірно , складається тільки з дзвінків приватних методів , таких як verifyInput(...)
, loadDataFromHardDisk(...)
, transformDataToJson(...)
і , нарешті sendJsonToClient(...)
, і ці методи будуть мати деталі реалізації.
- Деяким це подобається, тому що читачі можуть отримати короткий огляд кроків на високому рівні та можуть вибрати, які деталі вони хочуть прочитати.
- Деяким людям це не подобається, тому що, коли ви хочете дізнатися всі деталі, вам доведеться стрибати в класі, щоб слідкувати за потоком виконання (саме це, напевно, звертається до JacquesB, коли він пише про додавання складності).
Урок такий: всі вони мають рацію, оскільки мають право на думку.