З цікавого - трохи довелося зануритися в код C++ одного опенсорсу. І там таки побачив наступну річ:
Код читається легко та приємно (і це С++), видно що хлопці старалися, проблем з цим немає. А от змінювати код досить важко, і ось чому.
Висока зв'язність коду.
Клас, який мені треба було правити, може працювати в двох основних режимах А/B, а один з режимів має ще й підрежим B1/B2. І все це реалізовано на
if конструкціях, які максимально зав'язані на стан класу. В результаті, для того що щось змінити, ти міняєш сам клас, що впливає на інший функціонал (ще й в не дуже очевидних місцях). В результаті маємо баги та витрачаємо купу часу. Цей антипаттерн називається God Object
Як з цим боротися:
Діліть код на окремі, маленькі, максимально незалежні модулі, кожен з яких виконує одну і лише одну задачу.
Наприклад нам треба відобразити перелік користувачів на сторінці. Все це можна зробити прямо в одному компоненті. Але тоді ми будемо ту саму проблему що я описав вище.
Замість цього ми розіб'ємо її на:
- Код що відповідає за завантаження
- Код що зберігає дані
- Код що відображає результат (який теж буде розділений на успішний та не успішний результат)
Всі ці модулі не знають нічого про один одного, а тому їх можна умовно безпечно міняти, головне не порушувати інтерфейс взаємодії (що модуль приймає і що віддає).
Я б зробив би про це відео, але з часом тотальних ахтунг тому питайте прямо тут, якщо потрібно.
Всіх обійняв, побіг стригтися під 4,
Ваш зампомиш