(припускаючи виробничий код)
Я схильний піти трохи далі. Я писав про те, щоб зробити програми "бездоганними", але я не завжди кваліфікую це: я пишу багато коду, з яким інші люди не побачать і не працюватимуть (принаймні, таке очікування, коли воно написане). Яя ідіот, від якого я намагаюся захищатись у цій справі. Це добре, коли ваша програма виявляє проблеми для вас, і проблема настільки спрощена, що цілком очевидно, що є помилка та її походження. Правда, деталі реалізації очевидні, коли ви пишете програму (якщо ви її не реалізуєте передчасно), але вони повинні бути абстрагованими та захищеними від помилок для клієнтів (навіть коли локалізація модуля існує). Причина в тому, що програми стають дуже складними. Іноді можна відокремити проблеми, але не весь час. Якщо ви тримаєте ваші компоненти дуже суворі, прості, добре укладені та бездоганними, вони, як правило, добре масштабуються, і більшість дефектів виявляються ще до їх доставки. Це простіше повторно використовувати, і ви маєте більше впевненості та простіший час повторного використання програм. ті складні програми, які ви пишете, лише стають складнішими (навіть вам) через деякий час, відібравшись від програми. Коли ви прочитаєте його через 6 місяців, це може зайняти абсурдну кількість часу, щоб зрозуміти та налагодити помилку у порівнянні з версією, що підтверджує ідіот. Якщо компонент вносить переломну зміну, в іншому випадку він може довго не виявлятися, інакше. Програми складні; ти не можеш уникнути цієї реальності, але ти можеш зробити це ідіотським доказом, що полегшить твоє життя, коли щось піде не так або коли його потрібно повторно використовувати чи змінити. Тому підхід, що підтверджує ідіотизм, означає, що ваше програмне забезпечення може бути зрозумілим, використаним або підтримуваним вашими юніорами або людьми, які є новішими в команді (а не лише хтось такий хороший / досвідчений, як ви). Заміна - це окрема проблема: якщо люди люблять працювати з вашими програмами, ви робите гарну роботу - не робіть не переживайте про заміну. Звичайно, я міг би придумати сценарії, коли нерозбірливі програми могли врятувати вашу роботу, але написання хорошої програми, яку можуть використовувати та підтримують інші, явно менше зло (подивіться на відгуки інших). Якщо я зловживаю, як пишу щось, що не є ідіотським доказом, я намагаюся це виправити.
Крім сценарію, коли вам потрібна певна документація для себе, щоб продовжити проект після 6 місяців паузи, тут, між розробником та компанією з програмного забезпечення, очевидно, існує чіткий конфлікт інтересів.
Ви дійсно не маєте уявлення про те, про що думали в той час, коли ви переглядали спокійні реалізації. Коли ви справді досвідчені, то проблема простіша, оскільки ви можете більше покладатися на усталені методології чи підходи, якими ви користуєтесь. Це, однак, також передбачає, що ці методології є інваріантними. Незважаючи на те, що документація може бути слабкою, ви все одно повинні бути захисними у своїх реалізаціях (наприклад, ви знаєте краще, ніж передавати NULL в цьому сценарії - перевірити цю умову).
Отже, як програміст, чи справді ви повинні написати чудову документацію та легко читаючий код для всіх; або ви повинні писати код і документацію таким чином, щоб це робило роботу, і ви самі це можете зрозуміти, але інша людина може мати проблеми з її розумінням?
Я рекомендую ідіотівський підхід, який ще чіткіший і стійкіший до помилок, ніж підхід із фактором шини. Напишіть свої програми та документацію так, щоб їх легко зрозумів хтось із зовнішніх проектів - це теж добре для вас. Це зробить вашу цінність для вашої компанії та команди, вони не захочуть замінити вас.