Класифікація людей в огляді суперечить більшості успішних систем, з якими я працював, можливо, всім. Але мета, яку я намагався досягти більше 20 років, - це менше помилок та підвищення продуктивності за годину. Якщо класифікація осіб - це мета, я гадаю, огляди можуть бути використані. Я ніколи не бачив ситуації, коли цього вимагали, як працівник чи як керівник.
Деякі об'єктивні дослідження (Фаган та ін.) Та велика кількість популярних мудростей свідчать про те, що взаємовідносини з одноранками полегшують перегляд коду, спрямований на зменшення помилок та підвищення продуктивності. Працюючі менеджери можуть брати участь як працівники, але не як керівники. Точки обговорення зазначаються, зміни, щоб задовольнити рецензентів, як правило, є хорошою справою, але не потрібні. Звідси відносини однолітків.
Будь-які автоматизовані інструменти, які можна прийняти без подальшого аналізу або судження, є гарними - вказівки на C, C ++, Java. Регулярне складання. Компілятори дійсно хороші в пошуку помилок компілятора. Документування відхилень в автоматизованих чеках звучить як тонке обвинувачення автоматизованих чеків. Директиви щодо коду (як це робить Java), які допускають відхилення, є досить небезпечними, IMHO. Прекрасно підходить для налагодження, щоб дозволити швидко отримати серце. Не так добре знайти в погано задокументованому, 50 000 блоку коду рядків без коментарів, за який ви стали відповідальними.
Деякі правила дурні, але їх легко виконувати; за замовчуванням для кожного оператора перемикання, навіть коли вони недоступні, наприклад. Тоді це лише прапорець, і вам не доведеться витрачати час і гроші на тестування зі значеннями, які нічого не відповідають. Якщо у вас є правила , у вас з’явиться дурість , вони нерозривно пов’язані між собою . Будь-яка користь правила повинна коштувати дурості, яку вона коштує, і це співвідношення слід перевіряти через рівні проміжки часу.
З іншого боку, "Це працює" - це не чеснота перед оглядом, чи захист у рецензії. Якщо розробка дотримувалася моделі водоспаду , ви хочете зробити огляд, коли кодування на 85% завершено, перш ніж були знайдені і відпрацьовані складні помилки, оскільки огляд - це більш дешевий спосіб їх пошуку. Оскільки реальне життя не є моделлю водоспадів, коли їх перегляд є дещо мистецтвом і становить соціальну норму. Люди, які насправді будуть читати ваш код і шукати в ньому проблеми, - це міцне золото. Управління, що підтримує це постійно, - це перлина вище ціни. Відгуки повинні бути як перевірки - рано і часто .
Я вважаю ці речі корисними:
1) Без війн стилів . Там, де відкриті фігурні фігурні дужки переходять, слід лише перевірити послідовність у заданому файлі. Усе те саме. Це добре тоді. Глибина відступу Ditto ** s та ** табл . Більшість організацій виявляють, що їм потрібен загальний стандарт для вкладки, який використовується як великий простір.
2) `Ірваний
looking
текст, який не відповідає
line up is hard to read
для змісту. "
BTW, K&R з відступом п'яти проміжків (ПЯТЬ), тому звернення до авторитету є марними. Просто будьте послідовними.
3) Перед переглядом слід вказувати рядкову, незмінну, загальнодоступну копію файлу, який потрібно переглянути, протягом 72 годин або більше.
4) Немає дизайну на льоту. Якщо є проблема чи проблема, відзначте її місцезнаходження та продовжуйте рухатися.
5) Тестування, яке проходить усі шляхи в середовищі розвитку, - дуже, дуже, дуже, хороша ідея. Тестування, яке вимагає масових зовнішніх даних, апаратних ресурсів, використання веб-сайту замовника, тощо, тощо, - це тестування, яке коштує цілий капітал і не буде ретельним.
6) Формат файлів, що не належать до ASCII , є прийнятним, якщо створення, показ, редагування тощо, інструменти існують або створюються на початку розвитку. Це мій особистий ухил, але в світі, де домінуюча ОС не може вийти з власного шляху з менш ніж 1 гігабайт оперативної пам’яті, я не можу зрозуміти, чому файлам менше, ніж, скажімо, 10 мегабайт має бути що-небудь крім ASCII або іншого формату, що підтримується комерційно. Існують стандарти для графіки, звуку, фільмів, виконуваних файлів та інструментів, які йдуть разом з ними. Немає виправдання для файлу, що містить двійкове представлення деякої кількості об'єктів.
Для обслуговування, рефакторингу або розробки випущеного коду одна група співробітників, яку я використовував для огляду однією іншою людиною, сидячи за дисплеєм і дивлячись на різні старі та нові , як шлюз для реєстрації філій. Мені це сподобалось, це було дешево, швидко, порівняно легко зробити. Покрокові інструкції для людей, які не читали код заздалегідь, можуть бути освітніми для всіх, але рідко покращують код розробника.
Якщо ви географічно розподілені, перегляд розрізнень на екрані під час розмови з кимось іншим, хто дивиться на це, було б відносно просто. Це стосується двох людей, які дивляться на зміни. Для більшої групи, яка прочитала відповідний код, кілька сайтів не набагато складніше, ніж всі в одній кімнаті. Кілька кімнат, пов'язаних між собою загальними екранами комп'ютерів і скриньками, дуже добре працюють, IMHO. Чим більше сайтів, тим більше потрібно керувати зустрічами. Менеджер як фасилітатор може заробити тут своє життя. Не забудьте продовжувати опитувати сайти, на яких ви не відвідуєте.
Одного разу в тій же організації було проведено автоматизоване тестування одиниць, яке було використано як тест регресії. Це було дійсно приємно. Звичайно ми потім змінили платформи і автоматичний тест залишився позаду. Огляд краще, як зазначає Agile Manifesto , відносини важливіші, ніж процес чи інструменти . Але після того, як ви отримаєте огляд, наступна найважливіша допомога у створенні хорошого програмного забезпечення - автоматизовані тести блоку / регресійні тести.
Якщо ви зможете базувати тести на вимогах , ну, як каже леді в "Коли Гаррі зустрів Саллі" , я буду мати те, що у неї є!
Усі огляди повинні мати парковку для збору вимог та проблем дизайну на рівні вище кодування. Як тільки щось визнано належним на парковці, обговорення слід зупинити на огляді.
Іноді я думаю, що огляд коду має бути схожим на схематичні огляди в дизайні апаратних засобів - цілком загальнодоступний, ретельний, навчальний посібник, кінець процесу, шлюз, після якого він будується та перевіряється. Але схематичні огляди важкі, оскільки міняти фізичні об'єкти дорого. Огляди архітектури, інтерфейсу та документації для програмного забезпечення, ймовірно, мають велику вагу. Код є більш текучим. Перегляд коду повинен бути легшою вагою.
Багато в чому я вважаю, що технологія - це стільки як культура, скільки очікування, як і певний інструмент. Подумайте про всі імпровізації " Швейцарської родини Робінсона " / Флінтстоуни / Макгівера, які радують серце та кидають виклик розуму. Ми хочемо, щоб наші речі працювали . До цього не існує єдиного шляху, більше, ніж був "інтелект", який міг би якось абстрагуватися та автоматизуватися програмами AI 1960-х років .