Наличие одного объекта запроса в качестве параметра подписи метода, который составляет все обязательные параметры - PullRequest
4 голосов
/ 01 сентября 2010

Подпись метода является частью объявления метода.Это комбинация имени метода и списка параметров.

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

Скажем, например,

public void setMapReference(int xCoordinate, int yCoordinate)
{
  //method code
}

также можно записать как

public void setMapReference(Point point)
{
  //method code
}

class Point {
  int xCoordinate;
  int yCoordinate;
  boolean isValidPoint();
}

Но вызывающий может запутаться, поскольку он незнать о параметрах .. !!

Это хорошая практика ???

Ответы [ 3 ]

7 голосов
/ 01 сентября 2010

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

РЕДАКТИРОВАТЬ: обратите внимание, что я не позволил бы типу Point иметь поля доступа к пакету, как вы показали: я бы сделал их закрытыми полями со свойствами, как обычно. Я бы постарался сделать его неизменным, если это возможно.

0 голосов
/ 01 сентября 2010

Некоторые ответы на вопрос Создание больших неизменяемых объектов без использования конструкторов, имеющих длинные списки параметров , вероятно, также уместно и здесь (не имеет значения, имеете ли вы дело с методами или конструкторами, конструктор в конце концов, это просто особый метод).

0 голосов
/ 01 сентября 2010

Если есть только 2 параметра, оставьте это в покое.Параметр объекта может вызвать complex , возможно, вам даже понадобится защитная копия для параметра объекта.

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

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