Відповідь на це проста.
Консистенція має першорядне значення.
але він поставляється із застереженням ...
Ви з колегами, ймовірно, нав'язливі через неправильну послідовність
Реалізації є одноразовими. Вони можуть бути повністю відремонтовані з різним ступенем легкості залежно від якості та всебічності тестового набору. Турбуючись про такі речі, як "Чи повинно це бути властивість?", "Чи не повинен тонкий код використовувати LINQ замість конструкції нижчого рівня?" має сумнівну цінність. Її важко пов'язати будь-які вимірювання зі значенням узгодженості на рівні реалізації. Набагато кращим питанням на цьому рівні є "Чи працює цей код так, як рекламується?". Послідовність виконання TL; DR - це те, де "маленькі розуми" отримують свій хобгоблін.
Чому тут послідовність не є такою важливою? Зазвичай у виконанні є невелика кількість учасників. Більшість методів написані і більше ніколи не торкаються. З решти коду кількість методів, які мають два учасники, майже напевно, більшість. Цей зразок продовжується безмежно . У цьому контексті послідовність просто не така важлива. Якщо термін придатності коду досить невеликий ( кілька років ), виграш від агресивної консистенції, ймовірно, не є фактором.
Це не означає, що ви повинні з глузду зійти з вашої реалізації. Скоріше сказати, що приємний, чистий, простий дизайн буде на порядок ціннішим для вашого гіпотетичного майбутнього обслуговуючого персоналу, ніж дурний спосіб консистенції пластин котла за методом. Це приводить нас до реальної точки ...
API не є одноразовими.
Це всі рівні коду API, веб-сервіси, SDK тощо. Вони повинні, ОБОВ'ЯЗКОВО бути послідовними. Збільшення продуктивності від цієї різноманітності консистенції величезне з кількох причин:
Інтеграційні тести:
Якщо ви будете зберігати послідовність свого API, ви можете створити набори тестів на інтеграцію. Вони дозволяють розробникам вільно поміняти інформацію про реалізацію та домогтися негайної перевірки. Хочете поміняти своє співпрацю на лайно на LINQ? Чи виконують інтеграційні тести? Це також забезпечує перевірку при підготовці до виробництва. Оскільки комп'ютери швидкі, один ноутбук може передбачити роботу тисячі тестерів, виконуючи повсякденні завдання. Це рівнозначно значно збільшувати кількість вашої організації.
Продуктивність
Якщо послідовності API сумісні, ви можете здогадуватися про те, як використовувати API, лише дотримуючись того, що ви дізналися про використання інших частин API. Це тому, що API забезпечує природний, послідовний "вигляд і відчуття". Це означає, що ваш клієнт витрачає менше часу на просіювання документації. На борту літака простіше і дешевше. Менш питань задається людям, які розробили API. Послідовність робить кожного переможцем
Чому в цьому сценарії важлива послідовність? Оскільки в API є прямо протилежна проблема реалізації. Кількість людей, які їх використовують, як правило, набагато більша, ніж кількість людей, що сприяють їх реалізації. Невеликі прибутки від невеликої консистенції примножуються, а витрати на підтримання цієї консистенції амортизуються.
Висновок
Консистенція дорога. На обличчі це знижує продуктивність. Це стримує розробників і ускладнює їхнє життя. Це обмежує способи вирішення проблеми, іноді змушуючи їх вирішувати неоптимально. Часто це відбувається з причин, яких вони не розуміють, є непродуманими або їм не довіряють (контракти, велика організаційна чи міжорганізаційна політика).
Реймонд Хеттінгер зробив кілька чудових моментів у своїй розмові про Pycon 2015 щодо використання керівництва зі стилю PEP8 для команд програмістів-пітонів. Він показав, що нав'язливість щодо стилістичної послідовності у фрагменті коду змусила рецензентів коду пропустити серйозні недоліки логіки та дизайну. Його гіпотезу можна узагальнити як легко знайти стилістичну невідповідність; визначити реальну якість фрагмента коду важко
Суть тут критична. Визначте, де важлива консистенція, і захищайте її агресивно. Там, де це не важливо, не витрачайте час. Якщо ви не можете надати об'єктивний спосіб виміряти величину узгодженості (у вищезазначених випадках "ефективна кількість кадрів", вартість як функція продуктивності), і ви не можете продемонструвати, що віддача є істотною, то ви, ймовірно, робите послугу для вашої організації.