Документирование побочных эффектов javascript-методов

Я пытаюсь улучшить документацию моего кода javascript и следую рекомендациям JSDoc https://jsdoc.app/.

Я не могу найти, как задокументировать намеренный побочный эффект. Например, следующий метод:

/**
  * @description
  *   Paints the object red.
  * @return
*/
Painter.paintItRed = function(someObj){
    someObj.color = "red";
};

Как вы документируете тот факт, что метод действует непосредственно на переданный объект? Другой пример:

/**
  * @description
  *   If the user has not setUp a config, show config Modal.
  * @return
*/
User.checkConfig = function(user){
    if(!user.config.valid){
       showConfigModal();
    }
};

Это надуманные примеры и вероятные "запахи кода", но это другая проблема. Я смотрю на некоторые лучшие практики о том, как документировать такое поведение (хорошо это или плохо). Что-то, возможно, лучше, чем //IMPORTANT!! This method is dangerous! //IMPORTANT!! This method is dangerous!

Ответы

Ответ 1

Нет стандартизированного способа сделать это. По крайней мере, не в JavaDoc, что, честно говоря, это то, что JSDoc имитирует. Кстати, есть проблема добавить его в JSDoc, который фактически ссылается на этот вопрос.

Если вы действительно хотите задокументировать это, вы можете добавить собственный тег, как вы можете для JavaDoc. Вы можете использовать это, например, для @affects тега @affects. Это можно использовать следующим образом.

/**
 * @description
 *   Paints the object red.
 * @param someObj
 *   The object to be painted.
 * @affects
 *   someObj.color
 */
Painter.paintItRed = function(someObj) {
    someObj.color = 'red';
};

Определить пользовательский тег в JSDoc несложно, также посмотрите этот связанный вопрос.