Чи добре зберігати коментарі помилок у коді?


15

Моя команда використовує чіткі регістри як контроль версій. Проект, над яким я працюю, не розпочався 7-8 років тому. Протягом усього періоду життя проекту у нас було декілька пакетів виправлень помилок виправлень тощо. Проблеми відстежуються за допомогою системи відстеження помилок, і більшість людей, які працюють над виправленнями помилок, дотримуються процедури додавання коментаря у START / Блок END із датою, автором, ідентифікатором помилки тощо

Я вважаю, що це зовсім не має значення, і змушувати код заплутаний і непростий у підтримці, і це те, що повинно бути частиною коментарів / ярликів при реєстрації тощо, де ми можемо зберігати додаткову інформацію про життєвий цикл робочого продукту.

Якої найкращої практики слід дотримуватися?

Деякі рецензенти кодексу наполягають на коментарях про помилку та виправленнях, щоб полегшити їхнє життя. На мій погляд, вони повинні переглянути файли, відобразивши їх у подання та отримати журнал змін гілки та переглянути його. Було б корисно, якщо я можу отримати кілька кращих практик щодо подання оновленого коду на рецензію.


3
Справжнє питання: ЧОМУ вони роблять це так. Це може бути дуже старою процедурою від контролю джерел.

@anderson - Я вважаю, що вони мають належне розуміння щодо використання прозорого шафа, коли він був представлений. Тож ця практика могла
йти

вважаєте, що з’ясувати?


Я не скажу, що це погана практика. У будь-якому випадку одним із вимірювань якості програмного забезпечення є відсоток коментарів через вихідний код.
Руді

Відповіді:


27

Проблема з додаванням помилки в якості коментаря до коду полягає в тому, що ви не отримаєте повну історію. Якщо я бачу прекрасно шматок коду з тегами «це виправлення бага - бла », моя перша реакція була б сказати : «Ну і що?». Код є, він працює. Єдине, що мені потрібно знати, щоб підтримувати код, - це коментар, який говорить мені, що він робить.

Кращою практикою було б додавання посилань на виправлення у журнали фіксації SCM. Таким чином, ви бачите, що таке помилка, де вона була введена та як її виправлено. Крім того, коли настає час для випуску, ви можете просто витягнути журнали SCM та додати крапку, в якій зазначається, що помилка була, і вона була виправлена. Якщо інша гілка або версія вводить ту саму помилку, виправити її легко, і повторно застосувати, якщо це дійсно те саме.

Сказавши все це, я також згоден з відповіддю Чарльза. Якщо причина фрагмента коду не очевидна, будь-ласка, повідомте технічному обслуговувачеві, що код є причиною, і до нього слід ставитися обережно.


Відмінна відповідь. Я додав ще кілька моментів до свого питання. Перевірте та оновіть свою відповідь. Дякую. BTW, Чи могли б ви допомогти мені з прозорими командами для отримання журналів фіксування з певної гілки?
сарат

@Sarath Боюсь, я ніколи раніше не використовував ClearCase. Не соромтеся користуватися суперусером, щоб запитати. Я впевнений, що багато людей знають, готові допомогти.
Дайстер

4
Хороші трекери помилок, такі як JIRA, можуть переглядати журнали фіксування SCM та витягувати інформацію про помилки. Подумайте лише, що ви щось зробили для помилки, і трекер помилок автоматично додає примітку до звіту про помилку, який здійснює X, посилається на помилку.

@Andersen - Дякуємо, що ми використовуємо JIRA. Але мені потрібно переконатися, чи правильно це використовується чи ні.
сарат

@ Thorbjørn Ах, у вас це легко. Мені довелося це робити вручну ще вдень із комбінацією CVS / Bugzilla (а пізніше SVN / Bugzilla). Додайте посилання на помилку до мого комітету та додайте посилання на комісію до bugzilla. Процес, схильний до помилок, і розробники, як правило, забували те чи інше. Але інформація неодноразово надходила.
Дайстер

23

Переважно погана практика. Я не скажу, що цього ніколи не слід робити. Іноді ви натрапляєте на щось на зразок помилки у зовнішньому API, над яким вам доводиться працювати. Якщо ви не знаєте про основну помилку, обробка може виглядати абсолютно мертвою. У такому випадку може бути корисно задокументувати помилку в коді, щоб співробітники чи ваша пізніше не намагалися «виправити» очевидно мертвий код.


3
Домовились. Додавайте такі коментарі, коли вони додають значної цінності. Хоча не робіть їх лише заради повороту ручки.
quick_now

Приємно, це підтримує ідею коментарів, які розповідають про те, чому "чому" є якийсь код. Дивіться програмісти.stackexchange.com
questions/1/…

Я робив це кілька разів: код, який, на перший погляд, повністю не піддається логіці ("для чого тут цей код *?"), Але насправді існує з дуже вагомої причини, тому ви хочете, щоб люди ретельно ступали навколо це. Потім, додавши застережливий коментар, що пояснює, чому саме цей код може полегшити життя кожного. Тоді, якщо хтось може придумати кращий спосіб вирішити початкову проблему, то все, що їм належить, я кажу - вони знають, чому був створений код "мозкової картини" і що він повинен зробити, тому набагато простіше реалізувати альтернативу рішення.
CVn

9

Погана практика. Коментарі застаріють і захаращують код. Інформація все ще доступна в історії версій системи SCC, якщо це необхідно.


3

Звучить як погана практика. Що робити, якщо ваша організація вирішить перейти на іншу систему відстеження помилок? Не прив'язуйте виріб занадто щільно до інструментів, якими ви користуєтесь. Замість того, щоб посилатися на конкретні ідентифікатори помилок, а причини, чому код виглядає так, незрозумілі, мотивуйте своє дизайнерське рішення коментарями до коду.


Це помилкова дихотомія. Чому ви не можете мати коментарі до дизайну ("саме тому ми зробили xy z"), коли це необхідно, і згадати ідентифікатори помилок у повідомленнях фіксації?
Метью Флашен

Де сказано, що ви не можете? Я мав на увазі ідентифікатори помилок у коді, а не повідомлення VCS.
фейд

Вибачте, я неправильно зрозумів. Я думав, ти говориш, що не корисно розміщувати ідентифікатори помилок кудись.
Метью Флашен

Немає проблем, це просто означає, що моя відповідь була недостатньо зрозумілою. :)
fejd

2

Моєю першою реакцією було б не повторювати себе, тому вийміть її з коду та в журнали SCM. У нас тут було подібне обговорення щодо коментаря до редагування функцій, імен авторів та дат створення файлів та функцій. Раніше (до використання SCM) вся ця інформація зберігалася у файлах, щоб можна було відновити еволюцію файлу.

Близько половини розробників хоче, щоб ця інформація була здатна мати всю інформацію в одному місці (це викликає їх пошук змін в СКМ). Інша половина розробників починає не шукати підказки того, що змінилося в коефіцієнті, але з SCM, щоб вони не потребували інформації в коді. Ми ще не повинні прийняти рішення, що робити з цими коментарями. Це дуже залежить від того, як люди працюють, а деякі люди дуже вперті в тому, щоб залишити свої відомі методи. Те саме, що коментувати блок коду та залишити їх у коді назавжди.


Я здогадуюсь, що коментований код повинен перевірятися СКМ і відмовлятись навіть вчинятися ... Це додає безладу до коду лише заради отримання 5 хвилин пошуку в історії СКМ, якщо якийсь гіпотетичний день у майбутньому вам потрібен. назад.
Жульєн Ронкалья

Домовились, але спробуйте втілити це в sourcesafe: D У нашій команді проекту ми працювали з оглядами, тому наразі ці блоки рецензент відмовляє.
refro

О, SourceSafe ... вибачте за вас та вашу команду.
Жульєн Ронкалья

Не будь, краще, ніж нічого. На даний момент вся нова розробка займається програмою Subversion, тому щомісяця я маю менше спільного з джерелом безпеки.
refro

1

Просто для додання того, що Dyaster et al. сказали, хоча JIRA має дуже хороші здібності відображати зміни, пов'язані з виправленнями помилок, найкраще найкраще місце для документування виправлення - у тестовому випадку. Якщо код не зрозумілий без коментаря із зазначенням того, яку помилку виправлено, це "запах коду". Однак, якщо у вас немає часу на очищення запаху, коментар повинен посилатися на тестовий випадок, де має бути набагато очевидніше, чому код робить те, що робить. Якщо у вас немає часу написати тестовий випадок з поясненням виправлення помилки, помилка ще не була виправлена, її просто відклали.


1

Я погодився б із додаванням ідентифікаторів виправлень у повідомленнях фіксування, а не в самому коді. Дуже корисні трекери помилок, які автоматично скребковують повідомлення для помилок.

Крім того, ви можете використовувати команду blame / annotate / хвалу для вашої системи контролю версій, щоб допомогти замінити ці коментарі. Потім, коли ви запускаєте щось на кшталт:

vcs blame file.ext

ви можете побачити корисну інформацію, як правило, включаючи, хто змінив кожен рядок, коли вони змінили його, та ідентифікатор фіксації. З ідентифікатора фіксації ви можете отримати повне повідомлення, яке має включати ідентифікатор помилки.

Хороші системи VCS дозволять вам ігнорувати пробіли під час підрахунку того, хто змінив лінію.

Я не знаю, що Clear Case має для цієї функції.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.