2013-06-25 3 views
1
Create: function (title, text, orientation, trigger, layout) { 
     $(this).attr 
    }, 

Параметр триггера должен принимать одно из двух конкретных слов: «навести» или «щелкнуть», и я не могу придумать, как облегчить реализация этой функции.Каков наилучший способ проверки параметров, полученных функцией

Я думаю о некоторых решениях:

  1. Я могу попытаться проверить параметр один раз уже внутри в функции и возвращает «console.info» сразу после того, прерывающие выполнение в случае, если неправильный параметр имеет был отправлено, сообщив разработчик своей ошибки

  2. я мог бы создать ENUM и предоставить его в качестве интерфейса для разработчика (который бы еще сделать разработчик должен прочитать его, чтобы использовать его правильно)

  3. Произошла ошибка при вводе этого сообщения, что я мог бы просто установить стандартные значения для параметров, поэтому они являются необязательными.

Я просто не знаю, какой из них лучше всего подходит в подобной ситуации. Могу ли я предположить, что разработчик, который хочет использовать код, ДОЛЖЕН прочитать код, чтобы найти лучший способ его реализовать или (как я полагаю), я должен быть связан с проверками, такими как те, которые я описал? И какой из них лучше?

+3

Предполагая, что вы намерены создать что-то общедоступное, он должен иметь опубликованный API, который определяет параметры и не должен требовать от разработчика чтения кода. –

+2

Вам интересно, как проверить значения для * одного * конкретного параметра или как обрабатывать так много параметров. Лично, если есть более трех параметров, и если они могут быть необязательными, я бы позволил функции принять объект вместо этого. Использование значений по умолчанию - хорошая ИМО. –

+0

@JamesMontagne Прошу прощения, если бы это звучало так, как будто я хотел его опубликовать. Это скорее концептуальный вопрос, чем реальная проблема, но я развиваюсь в компании, и я хочу использовать лучшие практики, так как другие разработчики будут использовать этот код. – v1n1akabozo

ответ

0

Сравнение прямо со строками является распространенной практикой в ​​javascript. ENUM-подобные структуры, хотя легко реализовать, как правило, не очень используется, потому что вы должны либо определить свой ENUM-вроде как глобалов или сделать что-то вроде:

application.enums.myObject.hover= 1; 
application.enums.myObject.click= 2; 

myObject= new application.constructors.MyObject(); 
myObject.create(title, text, orientation, application.enums.myObject.hover, layout) 

таким образом только приложение является глобальным, но набрав приложение .enums.myObject - боль.

Как обработать ошибку:

Вариант 1: бросить исключение:

Create: function (title, text, orientation, trigger, layout) { 
     if (trigger !== "hover" && trigger !== "click") { 
      throw "error: invalid parameter trigger"; 
     } 
    }, 

Это приведет к сбою сценария, если у вас есть пункт поймать где-нибудь. В некоторых случаях крушение партии лучше, чем не предоставление способа узнать, что не так. Если вы намерены поймать эти исключения (вместо того, чтобы позволить им просто свернуть сценарий), я рекомендовал сделать это правильно, создав классы для ваших ошибок и т. Д.

Вариант 2: возврат null.

Create: function (title, text, orientation, trigger, layout) { 
     if (trigger !== "hover" && trigger !== "click") { 
      return null; 
     } 
    }, 

Этот подход работает лучше, если вы собираетесь использовать возвращаемое значение функции. При отладке вы увидите ошибку «объект не имеет свойства с именем X» при попытке использовать возвращаемое значение (или ваше значение будет принудительно введено в строку «null», если вы используете его как таковое).

Вариант 3: Тихо игнорируйте ошибку и ничего не делайте. Либо ваш скрипт рушится сам по себе, либо ничего не сделает. Не рекомендуется

замечания:

1 - не использовать объект консоли в рабочем коде.Это не является частью стандарта, и IE не раскрывает его на веб-странице, если вы не открываете консоль разработчика.

2 - не начинайте имена своих функций с буквы верхнего регистра, если это не функция, которую следует вызывать с помощью кнопки ' new '(т. е. функция конструктора).

+0

Я согласен с обоими утверждениями, просто я не использую javascript и веб-разработку, поэтому я не знаю, должен ли я быть заинтересован в реализации. Любой, кто читает эту функцию после ее завершения, должен знать, как ее использовать, поэтому я не знаю, как далеко я должен пройти проверку и указать на ошибки ее использования. – v1n1akabozo

+0

@ v1n1akabozo ответить обновлено с методами для обработки ошибки. – Hoffmann

+0

Это был вид ответа, который я ждал, я его ценю. Выбрасывание исключения кажется намного лучше, чем использование console.info, чтобы вызвать ошибку, а также установить возвращаемое значение в значение null также довольно интуитивно. благодаря – v1n1akabozo