Я шукаю ефективний спосіб, який також не може образитись, щоб представити поняття ООП діючим членам команди? Мої товариші по команді не є новими мовами OO. Ми давно займаємось C ++ / C #, тому сама технологія знайома.
Однак я оглядаюсь і без великих вкладень зусиль (здебільшого у вигляді оглядів коду), здається, що ми виробляємо це код C, який трапляється всередині класів. Майже не застосовується єдиний принцип відповідальності, абстрагування або спроби мінімізувати зв'язок, лише декілька. Я бачив класи, які не мають конструктора, але отримують memset до 0, кожного разу, коли вони створюються.
Але щоразу, коли я виховую ООП, всі завжди кивають і роблять так, ніби вони точно знають, про що я говорю. Знання понять добре, але, здається, нам (дещо більше, ніж іншим) дуже важко застосовувати їх, коли справа стосується виконання фактичної роботи.
Огляди коду були дуже корисними, але проблема з оглядом коду полягає в тому, що вони виникають лише після факту, тому деяким, здається, ми закінчуємо переписування (це в основному рефакторинг, але все ще займає багато часу) код, який щойно написаний. Також огляди коду дають відгуки лише окремому інженеру, а не всій команді.
Я граю з ідеєю зробити презентацію (або серію) і намагаюся знову створити OOP разом з деякими прикладами існуючого коду, який міг бути написаний краще і міг бути відновлений. Я міг би використовувати кілька справді старих проектів, які вже нікому не належать, тому принаймні ця частина не повинна бути чутливою проблемою. Однак чи буде це спрацьовувати? Як я вже говорив, більшість людей давно робили C ++, тому я здогадуюсь, що а) вони сидять там, думаючи, чому я кажу їм речі, які вони вже знають, або б) вони насправді можуть сприймати це як образу, тому що я кажучи їм, що вони не знають, як робити роботу, яку робили роками, якщо не десятиліттями.
Чи існує інший підхід, який би охопив широку аудиторію, ніж перегляд коду, але в той же час не буде відчувати покарання?
Я не свіжа дитина з коледжу, яка має утопічні ідеали ідеально розробленого коду, і цього не чекаю від когось. Причина, про яку я це пишу, полягає в тому, що я щойно робив огляд людини, яка насправді мала пристойний дизайн високого рівня на папері. Однак якщо ви класуєте малюнки: A -> B -> C -> D, в коді B, C і D всі реалізують майже один і той же публічний інтерфейс, а B / C має одну функцію вкладиша, так що вищий клас A робить абсолютно вся робота (аж до управління пам'яттю, розбору рядків, переговорів про налаштування ...) насамперед у 4-х методах mongo і, за всіма намірами та цілями, викликає майже безпосередньо в D.
Оновлення: Я технічний керівник (6 місяців на цій ролі) і маю повну підтримку менеджера групи. Ми працюємо над дуже зрілим продуктом, і витрати на обслуговування, безумовно, дають про себе знати.