Як ми розробники, мислення має залишатися завжди відкритим і одночасно скептичним.
Відкриті, тому що ми не знаємо, коли розробник може нас здивувати, і скептично ставляться до власних ідей, тому що ми часто забуваємо, що в інженерії програмного забезпечення немає єдиного правильного способу реалізації рішення. Обґрунтування наших рішень може мати для нас сенс, а для інших - жодного. За кодовим запахом може стояти чудова ідея. Можливо, розробник не знайшов способу висловити це належним чином.
Через те, що ми (люди) жахливі у спілкуванні, не робіть помилкових припущень, будьте готові запитати у власника коду про код, який ви переглядаєте. Якщо він / вона не змогла кодувати цю ідею за стандартами компанії, то провідний розробник буде готовий керувати і ним.
Тут суб’єктивний підхід. Об'єктивний підхід, IMO, дуже добре пояснений у цьому питанні .
На додаток до вищезгаданого посилання, набір цілей, які потрібно досягти (ремонтопридатність, читабельність, портативність, висока згуртованість, нещільне з'єднання тощо) - не обов'язково Десять заповідей. Ви (команда) повинні мати можливість адаптувати ці цілі до тієї точки, коли баланс між якістю та продуктивністю робить роботу зручною та "придатною для розробників".
Я б запропонував використовувати інструменти аналізу статичного коду для вимірювання прогресу якості відповідно до цих цілей. Такі інструменти, як SonarQube, надають нам ворота якості та профілі якості, які можна налаштувати відповідно до наших пріоритетів. Він також надає нам інструмент відстеження проблем, де розробники можуть орієнтуватися на проблеми, пов’язані з запахом коду, помилками, сумнівними практиками тощо.
Такі інструменти можуть стати гарною відправною точкою, але, як я вже сказав, тримайте себе скептично. Ви можете знайти деякі правила в Sonar для вас безглуздими, тому не соромтесь їх ігнорувати або видаляти зі свого профілю якості.