Пасоны, как правильно парсить параметры?
Пасоны как правильно и общепринято парсить параметры и как для этого оформляется jsdoc?
![]() у меня логика такая, параметры парсятся слева направо, первая функция что попадет это геттер, вторая функция что попадет это сеттер, если попадет массив то это массив строк aliases. При чем ни один параметр не обязателен. Как тут быть? 1) как правильно общепринято парсить параметры? 2) как для этого оформить jsdoc чтобы гугл не ругался |
А зачем тебе парсить их? пишеш докогенератор? уже есть готовые, например jsdoc3.
Чтобы гугл не ругался, нужно использовать их синтаксис jsdoc, он прекрасно описан у них. В твоем примере синтаксис не валиден гугловскому. ЗЫ: к шторму можно подключить Closure Linter для валидации jsdoc в гугловском стиле, может помогать. ЗЫЗЫ: возможно я не понял твой вопрос :) |
Цитата:
/** * TODO сделать описание * * @param {Function|String[]} [getter] * @param {Function|String[]} [setter] * @param {Function|String[]} [aliases] * * @constructor */ function ProxyCap (getter, setter, aliases) { this.getter = null; this.setter = null; this.aliases = null; // парсим параметры for (var i = 0; i < arguments.length; i++) { var arg = arguments[i]; if (arg instanceof Function) { this[this.getter ? 'setter' : 'getter'] = arg; } else if (arg instanceof Array) { this.aliases = arg; } } } Цитата:
new ProxyCap(); new ProxyCap(function getter(){}, ['aliases']); new ProxyCap(['aliases'], function getter(){}); new ProxyCap(['aliases'], function getter(){}, function setter(){}); new ProxyCap(function getter(){}, ['aliases'], function setter(){}); new ProxyCap(function getter(){}, function setter(){}, ['aliases']); все и работает, пнятна)? это по аналогии с css свойствами где разное количество разных параметров |
Т.к. JS не имеет нормальных перегрузок, то такие интерфейсы описываются довольно кривовато:
/** * * @param {...Function|Array.<string>} args - неведомая хрень, которая принимает не ограниченное количество опциональных параметров */ function ProxyCap (args) { |
kobezzza,
и гугл это схавает? |
Цитата:
|
да мне главное от варнингов избавится если честно. стоп, а если просто доку убрать О_О ну в смысле вторую звездочку вначале и оставить доку только для себя.
|
Цитата:
|
kobezzza,
а кстати ты юниттестируешь то что гуглом откомпилено? или если он предупреждений не выдает то и тестировать не надо? и как вообще можно протестировать такой код? |
Цитата:
Тестирую также как и простой код, ну разве что к отладчику можно сорс мап подключать (хотя я ленюсь это делать). Если код хорошо покрыт юнит тестами, то обычно сразу ясно что и где отвалилось. Для тестов я в основном юзаю qUnit. |
Часовой пояс GMT +3, время: 13:54. |