Після серйозних проблем з якістю в останній рік моя компанія нещодавно представила огляди коду. Процес перегляду коду був швидко введений, без настанов чи будь-якого виду контрольного списку.
Ще один розробник і я вирішили переглянути всі зміни, внесені до систем, перш ніж їх об'єднати в магістраль.
Нас також обрали "Технічним керівником". Це означає, що ми несемо відповідальність за якість коду, але у нас немає повноважень впроваджувати зміни в процесі, перепризначати розробників або стримувати проекти.
Технічно ми можемо заперечити злиття, повернувши його до розвитку. Насправді це майже завжди закінчується тим, що наш начальник вимагає його доставити вчасно.
Наш менеджер - MBA, який в основному займається створенням розкладу майбутніх проектів. Поки він намагається, він майже не має уявлення, що робить наше програмне забезпечення з бізнес-точки зору, і намагається зрозуміти навіть найпростіші вимоги клієнтів без пояснень розробника.
В даний час розробка проводиться у відділах розвитку в SVN, після того, як розробник вважає, що він готовий, він передає квиток у нашій системі продажу квитків нашому менеджеру. Потім менеджер призначає це нам.
Огляди коду призвели до певної напруженості в нашій команді. Особливо деякі старші члени ставлять під сумнів зміни (тобто "Ми завжди робили це так" або "Чому метод повинен мати розумне ім'я, я знаю, що це робить?").
Після перших кількох тижнів моя колега почала відпускати речі ковзати, щоб не викликати проблем з колегами (вона сама мені сказала, що після повідомлення про помилку клієнт подав, що вона знає про помилку, але побоюється, що розробник був би злий на неї за те, що це вказав).
Мені, з іншого боку, зараз відомо, що я є дупою для вказування на проблеми із скоєним кодом.
Я не думаю, що мої стандарти занадто високі.
Мій контрольний список на даний момент:
- Код складеться.
- Існує принаймні один спосіб роботи коду.
- Код буде працювати в більшості звичайних випадків.
- Код буде працювати з більшістю кращих справ.
- Код видасть розумне виключення, якщо вставлені дані недійсні.
Але я повністю приймаю відповідальність за те, як я даю відгуки. Я вже даю поважні пункти, пояснюючи, чому щось потрібно змінити, іноді навіть просто запитую, чому щось було реалізовано певним чином. Коли я думаю, що це погано, я зазначу, що я б розвинув це іншим способом.
Чого мені бракує, це вміння знайти щось, щоб вказати як «добре». Я читав, що слід спробувати сендвіч поганих новин добрими новинами.
Але мені важко знайти те, що добре. "Гей, цього разу ви насправді зробили все, що ви зробили" - це більше поблажливо, ніж приємно чи корисно.
Приклад коду Огляд
Гей Джо,
У мене є запитання щодо ваших змін у класі "Бібліотека \ ACME \ ExtractOrderMail".
Я не розумів, чому ви позначили "TempFilesToDelete" статичним? На даний момент другий дзвінок на "GetMails" буде кидати виняток, оскільки ви додаєте до нього Файли, але ніколи не видаляєте їх після видалення. Я знаю, що функція просто викликається один раз на запуск, але в майбутньому це може змінитися. Чи можете ви просто зробити його змінною екземпляра, тоді ми могли б мати кілька об'єктів паралельно.
... (Деякі інші моменти, які не працюють)
Незначні бали:
- Чому "GetErrorMailBody" приймає виняток як параметр? Я щось пропустив? Ви не викидаєте винятку, ви просто передаєте його разом і дзвоните "ToString". Чому так?
- SaveAndSend Не є хорошою назвою методу. Цей метод надсилає повідомлення про помилки, якщо обробка пошти пішла не так. Чи можете ви перейменувати його на "SendErrorMail" чи щось подібне?
- Будь ласка, не коментуйте старий код, видаліть його прямо. У нас це все ще є в підривній роботі.