Хэши против нескольких параметров? - PullRequest
6 голосов
/ 28 августа 2009

В Ruby очень часто встречаются методы, которые получают хэш параметров вместо простой передачи параметров в метод.

Мой вопрос - когда вы используете параметры для своего метода и когда вы используете хеш параметров?

Правильно ли говорить, что рекомендуется использовать хэш параметра, если метод имеет более одного или двух параметров?

Ответы [ 5 ]

4 голосов
/ 28 августа 2009

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

1 голос
/ 29 августа 2009

если у вас более 2 аргументов. Вы должны начать думать об использовании хэша. Это хорошая практика, четко объясненная в чистом коде текст ссылки

1 голос
/ 28 августа 2009

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

0 голосов
/ 28 августа 2009

С другой стороны, это относится не только к Ruby, но и ко всем языкам:

В API, которые находятся в потоке, иногда полезно объявить некоторые или все параметры функции как один объект параметров (в Ruby это могут быть хэши, структуры C и т. Д.), Чтобы поддерживать API стабильность в случае изменения набора принятых аргументов в будущих версиях. Однако очевидным недостатком является то, что читаемость резко снижается, и я бы никогда не использовал этот «шаблон», если бы мне действительно не пришлось это делать.

0 голосов
/ 28 августа 2009

Один очевидный случай использования - когда вы переопределяете метод в дочернем классе, вы должны использовать хеш-параметры для параметров родительского метода, когда вы его вызываете.

...