советы по уменьшению количества параметров, передаваемых в функцию - PullRequest
1 голос
/ 27 января 2011

HI

Я работаю над проектом AS3, изначально написанным кем-то другим. Я переписываю одну из функций в классе. Эта функция создает простой объект значения, но функция принимает 16 параметров, что является беспорядком.

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

Спасибо

Стивен

Ответы [ 3 ]

1 голос
/ 27 января 2011

Я бы пошел на следующее:

  1. Проверьте, можно ли сэкономить некоторые параметры (не используются, дубликаты, могут быть получены другим способом), с 16 параметрами, я не удивлюсь, если некоторые из них будут избыточными.
  2. Проверьте, не связаны ли некоторые параметры логически друг с другом. Возможно, стоит создать объект, содержащий их все. Если тот же набор параметров распространяется и на другие функции, то у вас есть победитель.
  3. Проверьте дизайн класса, возможно, некоторые из них должны быть членами класса.
1 голос
/ 27 января 2011

Я бы выбрал цепочку http://en.wikipedia.org/wiki/Method_chaining, для передачи анонимного объекта с установленными переменными, например:

someFunction({id:1, pizzas:"1", types:["triple cheese"], location:"sun"});

Или, как кто-то упомянул, объекты значения http://en.wikipedia.org/wiki/Value_object, в зависимости откак вам нравится ваш код:).

1 голос
/ 27 января 2011

Или, если есть очевидная связь между параметрами, создайте класс.Создайте экземпляр класса, заполните значения, затем передайте объект.

Вместо

myfunc(p1, p2, p3, p4, p5, ..., p16);

вы получите

c1 = new c1();
c1.p1 = val
c1.p2 = val
...
c1.p16 = val

, затем вызовете

myfunc(c1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...