Як документувати експериментальні чи неповні API, такі як @deprecated?


12

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

Що пропонують люди? Експериментальне, неповне, щось інше?

Якщо я будую документацію javadoc для цього API, який все ще знаходиться в потоці, чи слід використовувати тег @deprecated чи є краща умова? Для мене @deprecated означає, що цей API старий і доступний новіший бажаний механізм. У моїй ситуації альтернативи немає, але деякі методи в API не закінчені, і тому їх не слід використовувати. На даний момент я не можу зробити їх приватними, але я хотів би викласти чіткі застереження в документах.


Тег "Нестабільний" також буде корисним. Сенс був би чимось різним. "Це повинно працювати нормально, але ми можемо внести деякі зміни в майбутньому".
— Борджаб

Відповіді:


8

Відповідний термін - це, швидше за все, інкубатор , цей термін використовують Google і Apache:

  • google-web-toolkit-інкубатор

    Офіційний інкубатор віджетів та бібліотек для веб-інструментів Google ...

  • Інкубатор Apache

    ... ворота для проектів з відкритим кодом, які мають намір стати повноцінними проектами Apache Software Foundation ...

Якщо ви більш детально подивіться на проекти, про які йдеться вище, ви можете помітити, що "експериментальні" API (наприклад, у GWT) мають тенденцію мати "виділені" назви пакетів, наприклад com.google.gwt.gen2. Це уникає забруднення майбутнього "доопрацьованого" API, призначеного для постійного суспільного споживання, тому що,

"Публічні API, як алмази, є назавжди. У вас є один шанс виправити це так, давайте все можливе ..." (Джошуа Блох, Як створити хороший API і чому це має значення )


2
Я схилявся до "Експериментального" після перегляду таких API, як developer.chrome.com/extensions/experimental.html
— Майкл Леві

10

Я б використовував @deprecatedіз суто практичних причин.

Хоча @deprecatedне передає точного значення, яке б вам хотілося, воно має вагому перевагу: компілятор Java має вбудовану підтримку. Компіляція з -deprecationпрапором дає змогу знайти усі місця, де ви перекрили застарілий метод, допомагаючи вашим користувачам дуже швидко знайти підозрілий код. Ви можете скористатися @deprecatedтегом Javadoc, щоб пояснити, що насправді відбувається для кожного, хто хотів прочитати вашу документацію. Тут ви можете сказати користувачеві, що API експериментальний, його слід використовувати на власний ризик тощо.


1
+1. Відмінний момент. Вбудована підтримка є важливою для таких частин API і спонукає користувачів переглянути документацію, щоб зрозуміти, чому ці частини позначаються як амортизовані.
— Арсеній Муренко

2
Я схилявся до чогось на кшталт "* @deprecated Це експериментальний API і, ймовірно, зміниться" як мінімум, щоб отримати IDE та документи, щоб виділити метод, а потім мати коротке пояснення.
— Майкл Леві

Просто пам’ятайте, що застарілий призведе до появи багатьох попереджень. Це може бути не так погано, як здається. Попередившись про експериментальні можливості, може бути гаразд.
— Борджаб

3

Я ніколи не бачив нічого подібного в інших API, оскільки експериментальні або неповні функції не мають нічого спільного в публічному API.

Оскільки у вас немає вибору, просто поставте чітко видиме попередження про те, що частина API може змінюватися.


Добре. Наприклад, у нас є: junit.org/apidocs/org/junit/experimental/package-summary.html До речі, використання пакету було надзвичайною ідеєю. Після того, як API нестабільний, вам потрібно змінити пакет, щоб ви порушили всі залежності. Анотація на Java була б набагато кращою
— Borjab
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.