Да, просто замени весь шаблон на этот:
|

03.05.2013, 11:41
|
 |
Профессор
|
|
Регистрация: 18.01.2013
Сообщений: 1,098
|
|
|
Пасоны, как правильно парсить параметры?
Пасоны как правильно и общепринято парсить параметры и как для этого оформляется jsdoc?
у меня логика такая, параметры парсятся слева направо,
первая функция что попадет это геттер, вторая функция что попадет это сеттер, если попадет массив то это массив строк aliases.
При чем ни один параметр не обязателен. Как тут быть?
1) как правильно общепринято парсить параметры?
2) как для этого оформить jsdoc чтобы гугл не ругался
|
|

03.05.2013, 11:57
|
 |
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
А зачем тебе парсить их? пишеш докогенератор? уже есть готовые, например jsdoc3.
Чтобы гугл не ругался, нужно использовать их синтаксис jsdoc, он прекрасно описан у них. В твоем примере синтаксис не валиден гугловскому.
ЗЫ: к шторму можно подключить Closure Linter для валидации jsdoc в гугловском стиле, может помогать.
ЗЫЗЫ: возможно я не понял твой вопрос 
Последний раз редактировалось kobezzza, 03.05.2013 в 12:04.
|
|

03.05.2013, 13:14
|
 |
Профессор
|
|
Регистрация: 18.01.2013
Сообщений: 1,098
|
|
|
Сообщение от kobezzza
|
|
ЗЫЗЫ: возможно я не понял твой вопрос
|
да нет О_О, наоборот О_О я охренел аж, круто, а можешь написать 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;
}
}
}
|
Сообщение от kobezzza
|
|
пишеш докогенератор?
|
нет, у меня конструктор который имеет динамический интерфейс..
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 свойствами где разное количество разных параметров
Последний раз редактировалось megaupload, 03.05.2013 в 13:18.
|
|

05.05.2013, 08:18
|
 |
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Т.к. JS не имеет нормальных перегрузок, то такие интерфейсы описываются довольно кривовато:
/**
*
* @param {...Function|Array.<string>} args - неведомая хрень, которая принимает не ограниченное количество опциональных параметров
*/
function ProxyCap (args) {
Последний раз редактировалось kobezzza, 05.05.2013 в 08:20.
|
|

05.05.2013, 09:56
|
 |
Профессор
|
|
Регистрация: 18.01.2013
Сообщений: 1,098
|
|
|
kobezzza,
и гугл это схавает?
|
|

05.05.2013, 10:11
|
 |
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Сообщение от megaupload
|
kobezzza,
и гугл это схавает?
|
Да, но маловероятно, что сможет провести дополнительный оптимизации или инлайнинг для такой функции.
|
|

05.05.2013, 10:55
|
 |
Профессор
|
|
Регистрация: 18.01.2013
Сообщений: 1,098
|
|
|
да мне главное от варнингов избавится если честно. стоп, а если просто доку убрать О_О ну в смысле вторую звездочку вначале и оставить доку только для себя.
|
|

05.05.2013, 10:57
|
 |
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Сообщение от megaupload
|
|
да мне главное от варнингов избавится если честно. стоп, а если просто доку убрать О_О ну в смысле вторую звездочку вначале и оставить доку только для себя.
|
То варнингов не будет.
|
|

05.05.2013, 11:43
|
 |
Профессор
|
|
Регистрация: 18.01.2013
Сообщений: 1,098
|
|
|
kobezzza,
а кстати ты юниттестируешь то что гуглом откомпилено? или если он предупреждений не выдает то и тестировать не надо? и как вообще можно протестировать такой код?
|
|

05.05.2013, 11:57
|
 |
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Сообщение от megaupload
|
kobezzza,
а кстати ты юниттестируешь то что гуглом откомпилено? или если он предупреждений не выдает то и тестировать не надо? и как вообще можно протестировать такой код?
|
Только то, что жмётся в AdvancedMode, т.к. он там может наломать дров.
Тестирую также как и простой код, ну разве что к отладчику можно сорс мап подключать (хотя я ленюсь это делать). Если код хорошо покрыт юнит тестами, то обычно сразу ясно что и где отвалилось.
Для тестов я в основном юзаю qUnit.
Последний раз редактировалось kobezzza, 05.05.2013 в 12:00.
|
|
|
|