Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.05.2013, 12:41
Аватар для megaupload
Профессор
Отправить личное сообщение для megaupload Посмотреть профиль Найти все сообщения от megaupload
 
Регистрация: 18.01.2013
Сообщений: 1,098

Пасоны, как правильно парсить параметры?
Пасоны как правильно и общепринято парсить параметры и как для этого оформляется jsdoc?


у меня логика такая, параметры парсятся слева направо,
первая функция что попадет это геттер, вторая функция что попадет это сеттер, если попадет массив то это массив строк aliases.

При чем ни один параметр не обязателен. Как тут быть?

1) как правильно общепринято парсить параметры?
2) как для этого оформить jsdoc чтобы гугл не ругался
Ответить с цитированием
  #2 (permalink)  
Старый 03.05.2013, 12:57
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

А зачем тебе парсить их? пишеш докогенератор? уже есть готовые, например jsdoc3.

Чтобы гугл не ругался, нужно использовать их синтаксис jsdoc, он прекрасно описан у них. В твоем примере синтаксис не валиден гугловскому.

ЗЫ: к шторму можно подключить Closure Linter для валидации jsdoc в гугловском стиле, может помогать.
ЗЫЗЫ: возможно я не понял твой вопрос
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 03.05.2013 в 13:04.
Ответить с цитированием
  #3 (permalink)  
Старый 03.05.2013, 14:14
Аватар для megaupload
Профессор
Отправить личное сообщение для megaupload Посмотреть профиль Найти все сообщения от megaupload
 
Регистрация: 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 в 14:18.
Ответить с цитированием
  #4 (permalink)  
Старый 05.05.2013, 09:18
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Т.к. JS не имеет нормальных перегрузок, то такие интерфейсы описываются довольно кривовато:

/**
 *
 * @param {...Function|Array.<string>} args - неведомая хрень, которая принимает не ограниченное количество опциональных параметров
 */
function ProxyCap (args) {
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 05.05.2013 в 09:20.
Ответить с цитированием
  #5 (permalink)  
Старый 05.05.2013, 10:56
Аватар для megaupload
Профессор
Отправить личное сообщение для megaupload Посмотреть профиль Найти все сообщения от megaupload
 
Регистрация: 18.01.2013
Сообщений: 1,098

kobezzza,
и гугл это схавает?
Ответить с цитированием
  #6 (permalink)  
Старый 05.05.2013, 11:11
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Сообщение от megaupload Посмотреть сообщение
kobezzza,
и гугл это схавает?
Да, но маловероятно, что сможет провести дополнительный оптимизации или инлайнинг для такой функции.
__________________
kobezzza
code monkey
Ответить с цитированием
  #7 (permalink)  
Старый 05.05.2013, 11:55
Аватар для megaupload
Профессор
Отправить личное сообщение для megaupload Посмотреть профиль Найти все сообщения от megaupload
 
Регистрация: 18.01.2013
Сообщений: 1,098

да мне главное от варнингов избавится если честно. стоп, а если просто доку убрать О_О ну в смысле вторую звездочку вначале и оставить доку только для себя.
Ответить с цитированием
  #8 (permalink)  
Старый 05.05.2013, 11:57
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Сообщение от megaupload Посмотреть сообщение
да мне главное от варнингов избавится если честно. стоп, а если просто доку убрать О_О ну в смысле вторую звездочку вначале и оставить доку только для себя.
То варнингов не будет.
__________________
kobezzza
code monkey
Ответить с цитированием
  #9 (permalink)  
Старый 05.05.2013, 12:43
Аватар для megaupload
Профессор
Отправить личное сообщение для megaupload Посмотреть профиль Найти все сообщения от megaupload
 
Регистрация: 18.01.2013
Сообщений: 1,098

kobezzza,
а кстати ты юниттестируешь то что гуглом откомпилено? или если он предупреждений не выдает то и тестировать не надо? и как вообще можно протестировать такой код?
Ответить с цитированием
  #10 (permalink)  
Старый 05.05.2013, 12:57
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Сообщение от megaupload Посмотреть сообщение
kobezzza,
а кстати ты юниттестируешь то что гуглом откомпилено? или если он предупреждений не выдает то и тестировать не надо? и как вообще можно протестировать такой код?
Только то, что жмётся в AdvancedMode, т.к. он там может наломать дров.
Тестирую также как и простой код, ну разве что к отладчику можно сорс мап подключать (хотя я ленюсь это делать). Если код хорошо покрыт юнит тестами, то обычно сразу ясно что и где отвалилось.

Для тестов я в основном юзаю qUnit.
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 05.05.2013 в 13:00.
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
filter(this,this) как правильно сделать? Smip jQuery 5 23.02.2013 03:07
Как правильно прописать параметры? uExpo Общие вопросы Javascript 3 16.07.2011 18:07
Как правильно очистить maxlength в input? Маэстро Events/DOM/Window 10 22.06.2011 18:14
как передовать и парсить значение переменной по URL? FATALITY Общие вопросы Javascript 10 25.03.2010 19:32
Как правильно оформить Send() Алекс97 AJAX и COMET 20 30.10.2008 19:19