Я думаю, ти на вірному шляху. Ні кидання, ловлення, ні документування всіх потенційно викидних винятків не має великого сенсу. Бувають випадки, коли жорсткість продукту вимагає більш високої ступеня використання винятків та документації (наприклад, певні критичні аспекти безпеки системи).
Стратегія бути більш захисною, використовуючи контрактні концепції для виявлення передумов (і післязастережних умов), особливо для тих, хто телефонує нижче за течією (наприклад, усе, що нагадує публічного або захищеного члена), часто буде більш ефективним та гнучким. Це стосується не лише реалізації, але й документації. Якщо розробники знають, що очікується, вони з більшою ймовірністю дотримуватимуться правил і менше шансів плутати або неправильно використовувати написаний вами код.
Деякі поширені речі, які повинні бути задокументовані, включають випадок нульових параметрів. Часто є наслідком їх використання, який призводить результат до чогось, чого зазвичай не очікували, але вони дозволені та використовуються з різних причин, іноді для гнучкості. Будучи споживачем члена, який має параметри, які дозволяють отримати нульові чи інші спеціальні, нераціональні значення (наприклад, від'ємний час або негативні величини), я очікую побачити їх визначеними та поясненими.
Для ненульових параметрів, як споживача загальнодоступного чи захищеного члена, я хочу знати, що нуль заборонено. Хочу знати, що таке допустимий діапазон значень у даному контексті. Я хочу знати наслідки використання значень, що знаходяться поза нормальним діапазоном, але в іншому випадку дійсні в іншому контексті виклику (наприклад, значення типу, як правило, є дійсним для будь-якої операції, але не тут - як булевий параметр, який не не чекаю, що помилка є дійсним значенням.
Що стосується платформи чи інакше добре відомих інтерфейсів, я не думаю, що вам доведеться йти до крайностей, щоб документувати це. Однак, оскільки у вас є можливість розробника змінювати реалізацію від будь-яких інструкцій на платформі, зазначаючи, як випливає, що вказівки можуть бути корисними.
Характерний для ідентифікаційних, часто реалізацій цього інтерфейсу пропонує альтернативний метод, який є кращим перед явним способом утилізації. У цих випадках виділіть бажаний метод та зауважте, що явна утилізація не є бажаною.