Так, я розумію ваше розчарування дурним правилом. Я читав багато програм з марними коментарями на кшталт
x = x + 1; // add 1 to x
І я кажу собі: Отже, що означає знак плюс !! Нічого, дякую, що сказали, я цього не знав.
Але це сказав, що клієнт оплачує рахунок. Тому ви даєте їм те, що вони хочуть. Якби я працював у автосалоні, і замовник сказав, що хоче пікап, я б не сперечався з ним про те, чи справді йому потрібен пікап, і перевірити його на те, що він очікує в ньому затягнути. Я б продав йому пікап.
Гаразд, бувають випадки, коли те, що клієнти кажуть, що він хоче і що йому справді потрібно, настільки далеко, що я намагаюся обговорити з ним справу, можливо, переконую його погодитися на щось більш раціональне. Іноді це працює, іноді - ні. Зрештою, якщо я не можу передумати, я даю йому те, що він хоче. Якщо він повернеться пізніше і каже: О, це справді не задовольнило моїх ділових вимог, тоді ми можемо доручити йому більше робити те, що ми сказали йому зробити в перший раз. Скільки ви можете домовитись із замовником, залежить від того, наскільки вони довіряють вашій експертизі, наскільки їхній контракт з вами відповідає організації, і, чесно кажучи, від того, наскільки вони є головою биків.
Це був би дуже рідкісний випадок, коли, припускаючи, що це залежало від мене, я втратив би контракт, тому що вважав, що вимоги є непродуманими.
Майте на увазі, що люди, з якими веде переговори ваша компанія, можуть бути, а можуть і не бути тими, хто винайшов це правило на 25%. Це може бути правило, накладене на них від вище.
Я бачу п'ять можливих відповідей:
Один. Переконайте свого начальника або того, хто веде переговори з клієнтом, щоб сперечатися з цього приводу. Шанси цього нічого не принесуть, але ви можете спробувати.
Два. Відмовтеся це робити. Це, ймовірно, звільнить вас, або якщо компанія погодиться з вами, призведе до втрати контракту. Це здається малопродуктивним.
Три. Пишіть марні коментарі, щоб заповнити простір, такі коментарі, які просто повторюють те, що є в коді, і що будь-який програміст, здатний змінити код, може побачити за 2 секунди. Я бачив безліч подібних коментарів. Роки тому я працював у компанії, де від нас вимагали ставити блоки коментарів перед кожною функцією, яка перераховувала параметри, наприклад:
/*
GetFoo function
Parameters:
name: String, contains name
num: int, the number
add_date: date, the date added
Returns:
foo code: int
*/
int GetFoo(String name, int num, Date add_date)
Заперечення про те, що такі коментарі є тягарем за технічне обслуговування, оскільки ви повинні постійно їх оновлювати, не є дійсним. Немає необхідності постійно їх оновлювати, оскільки жоден серйозний програміст ніколи не перегляне їх. Якщо у вас є якісь запитання з цього приводу, не забудьте уточнити всім членам команди, що марні, зайві коментарі слід ігнорувати. Якщо ви хочете знати, якими є параметри функції або що робить рядок коду, прочитайте код, не дивіться на марні коментарі.
Четверо. Якщо ви збираєтесь додавати зайві нікчемні коментарі, можливо, варто витратити час, щоб написати програму для їх генерації. Щось із інвестицій наперед, але може врятувати купу введення тексту.
Ще коли я почав займатися цим бізнесом, компанія, над якою я працювала, використовувала програму, яку рекламували як "Пишемо вашу документацію! Повна документація для кожної програми!" Система вимагала, щоб ми дали всім змінним по суті безглузді імена, а потім створили таблицю, яка містить значущу назву кожної змінної, тому в основному те, що робила "автоматична документація", замінило безглузде ім'я, яке змусило нас використовувати значущим ім'ям. Так, наприклад, - це працювало з COBOL - у вашій програмі був би рядок
MOVE IA010 TO WS124
і вони будуть генерувати рядок "документації", який сказав
COPY CUSTOMER NAME IN INPUT RECORD TO CUSTOMER-NAME IN WORKING STORAGE
У всякому разі, можна було б точно написати програму для генерування однаково нікчемної документації досить легко. Прочитайте подібний рядок
a=b+c
і генерувати коментар
// add b to c and save result in a
І т.д.
П’ять. Зробіть найкраще з дурного правила. Спробуйте написати корисні та змістовні коментарі. Гей, це може бути гарною вправою.
О, до речі, можу додати, що ви завжди можете грати в метрику.
Пригадую, одного разу роботодавець сказав, що збирається почати вимірювати продуктивність програмістів за кількістю рядків коду, які ми виробляємо на тиждень. Коли нам сказали про це на зустрічі, я сказав: Чудово! Я можу легко збільшити свою оцінку. Більше не писати
x=x+4;
Натомість я напишу:
x=x+1;
x=x+1;
x=x+1;
x=x+1;
Петлі? Забудьте про це, я копіюю і вставляю код десять разів. І т.д.
Тому тут, якщо вони збираються рахувати рядки коментарів, зробіть кожний рядок і продовжуйте ідею в наступному рядку. Якщо в коментарях є зміна того, що йдеться, не оновлюйте існуючий коментар. Поставте дату, потім скопіюйте весь текст і напишіть "Оновлено" та нову дату. Якщо клієнт сумнівається, скажіть їм, що ви вважали за потрібне підтримувати історію. І т.д.