Блокування API
Мистецтво ефективного побудови API - це стільки про управління очікуванням, скільки про структуру.
Коли я говорю API, я конкретно маю на увазі те, як називаються загальнодоступні / внутрішні класи / методи та який рівень їх доступу (тобто приватний / громадський / внутрішній).
Якщо ви переживаєте, що код може бути не повністю готовий до прайм-тайму, ви завжди можете опублікувати його як бета-версію.
Релізи:
Бета (тобто до 1,0)
- може містити кілька змін порушень API
- можуть не вистачати змін, сумісних із зворотним рівнем між версіями
- може бути відсутність лаку
Офіційний (1.0+)
- API заблоковано до наступного основного випуску
- будь-які внесені зміни повинні гарантувати зворотну сумісність
Незначний (колишній 1.1)
- містять виправлення помилок та / або реалізацію функцій
- може доповнювати, але не відбирати від визначеного API
Якщо ви вважаєте, що API потрібно загартувати, то випустіть його на деякий час як бета-версію. Це сигналізує про те, що він доступний для використання, але не повинен використовуватися для виготовлення та / або критичного для місії коду.
Багато людей ставляться до пронумерованих схем версій, як гогваш, але коли вони використовуються ефективно, їх можна використовувати, щоб забезпечити деяку мерехтіння приміщення, поки ви не отримаєте структуру.
Ваші припущення про те, як воно буде використовуватися, помилкові
Незалежно від того, наскільки добре щось розроблено, люди знайдуть спосіб зловживання або створення альтернативного використання.
Один із способів вирішити це - заблокувати якомога більшу частину реалізації за допомогою аксесуарів (тобто приватних / публічних / внутрішніх), але жодна кількість дизайну чи інженерії не дасть вам стільки розуміння, як випуск коду для користувачів.
Насправді не важливо, наскільки «ідеальним» ви вважаєте, що ваш код може стати, ваші користувачі докажуть, що це не так.
Я заперечую, що це головна причина, чому завжди краще використовувати наявну кодову базу, а не робити повне перезапис. У кращому випадку повне перезапис буде обрізати розмах, але існує велика ймовірність того, що нова база коду буде містити стільки (і, можливо, більше) помилок, як оригінальна база даних коду.
У вашому випадку ви загартовуєте битву з нуля, щоб ви могли також почати роботу.
Це здається, що у вас є покриття решти ваших баз. Документація API є життєво важливою, і тести будуть хорошими для забезпечення стабільності при внесенні змін у майбутньому.
Реалізація послідовної схеми ведення журналів буде важливою перед випуском коду для виробництва, оскільки вам знадобиться спосіб глобального включення / відключення / фільтрації журналів. BTW, в більшості випадків ведення журналу дійсно включає лише імпорт бібліотеки та зміну вихідних викликів з Debug.WriteLine () на щось на зразок Logging.Debug (), Logging.Info (), Logging.Error (). Сам реєстратор просто забезпечує стандартну реалізацію для конфігурації, фільтрації та більш широкого спектру схем виводу (колишні файли, консоль тощо).
Крім цього, я б хотів отримати код і використовувати його. Навіть якщо лише невелика кількість користувачів для початку.