Для мене це частка стійкості (як у цементованому бетоні, глині, запеченій у духовці, встановленому в камені, написаному перманентним чорнилом). Чим нестабільніший ваш код, оскільки чим вище ймовірність того, що вам потрібно буде його змінити в майбутньому, тим легше податливим він повинен бути, як мокра глина, щоб залишатися продуктивними. Я також підкреслюю податливість, а не читабельність. Для мене важливіша легкість зміни коду, ніж простота його читання. Код можна легко прочитати, а кошмар змінити, і яке використання має можливість читати та легко розуміти деталі впровадження, якщо вони кошмар, який потрібно змінити? Якщо це не лише академічні вправи, як правило, справа в тому, щоб легко зрозуміти код у виробничій кодовій базі, полягає у намірі легше змінити його за потребою. Якщо важко змінити, то багато переваг читабельності виходить у вікно. Читання є загалом корисним лише в контексті податливості, а податливість корисна лише в умовах нестабільності.
Звичайно, навіть найскладніший у підтримці коду, який можна уявити, незалежно від того, наскільки легко чи важко його читати, не створює проблем, якщо ніколи немає причин його змінювати, лише використовувати його. І можна досягти такої якості, особливо для системного коду низького рівня, коли продуктивність часто має найбільше значення. У мене є код C, який я досі регулярно використовую, що не змінювався з кінця 80-х. З цього часу не потрібно було змінюватися. Код нечіткий, написаний у розпусні дні, і я ледве його розумію. Але це все ще застосовується сьогодні, і мені не потрібно розуміти його реалізацію, щоб отримати багато користі від цього.
Ретельне написання тестів - один із способів підвищення стабільності. Інша - розв'язка. Якщо ваш код не залежить ні від чого іншого, то єдиною причиною його зміни є те, якщо він сам по собі потребує змін. Іноді незначна кількість дублювання коду може послужити механізмом роз'єднання для різкого поліпшення стабільності таким чином, що робить його гідним компромісом, якщо в обмін ви отримаєте код, який тепер повністю не залежить від будь-якого іншого. Тепер цей код невразливий до змін у зовнішньому світі. Тим часом код, який залежить від 10 різних зовнішніх бібліотек, має 10 разів причину його зміни в майбутньому.
Ще одна корисна річ на практиці - це відокремити вашу бібліотеку від нестабільних частин кодової бази, можливо, навіть побудувати її окремо, як це можна зробити для сторонніх бібліотек (які також призначені для простого використання, а не зміни, принаймні, не вашої команда). Якраз такий тип організації може завадити людям підробляти її.
Інший - мінімалізм. Чим менше ваш код намагається зробити, тим більше шансів, що він може робити те, що робить добре. Монолітні конструкції майже постійно нестабільні, оскільки чим більше функціональних можливостей до них додається, тим неповнішими вони здаються.
Стабільність повинна бути вашою основною метою, коли ви прагнете написати код, який неминуче буде важко змінити, як паралелізований код SIMD, який був мікронастроен на смерть. Ви протидієте труднощам збереження коду, максимізуючи ймовірність того, що вам не доведеться змінювати код, і тому не доведеться підтримувати його в майбутньому. Це зводить витрати на обслуговування до нуля, незалежно від того, наскільки складно підтримувати код.