Как назвать метод, который устанавливает некоторые значения в классе?


Часто я ловлю себя настройку различных полей в классе, а затем передает, что в классе какой-то метод.

customerEntity.setName("Foo");
customerEntity.setAge(45);
customerEntity.setAddress(address);

em.merge(customerEntity);

Или

requestPayload.setCustomerId(2343);
requestPayload.setCustomerPreference("green");
//lots more
sendRequest(requestPayload)

Не нравится так много данных-население захламление, я бы переместить в отдельный метод..

public void doSomeOperation(Customer customer)
    {
          em.merge(prepareCustomerEntity(customer));
    }

private Customer prepareCustomerEntity(Customer customer)
   { customer.setName("Foo");
    customer.setAge(45);
    customer.setAddress(address);
    return customer;
   }

Что бы быть хорошим именем для такого метода ? Может, что-то вроде prepareXXX() или populateXXX()? Назвав его как prepareXXX() звучит как Void метод.. populateXXX() звучит лучше? Или я должен просто назвать его как setCustomerValues(). Но setxxx не() название звучит как типичная классе сеттер, что это не так.



284
0
задан 2 сентября 2011 в 07:09 Источник Поделиться
Комментарии
4 ответа

Я согласен, вы не должны использовать setxxx не (), поскольку это звучит как классический сеттер. Я бы сказал, пойти с, что вы думаете звучит хорошо и хорошо передает смысл. prepareXXX() звук хороший для меня. Если это значения по умолчанию установке, вы могли бы использовать что-то вдоль populateWithDefaultValues().

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

2
ответ дан 2 сентября 2011 в 09:09 Источник Поделиться

Если вы не можете быть более конкретным, то я бы пошел с заполнения, готовить просто не передать какой-либо смысл для меня. Init или инициализация является более конкретным, и может быть использовано, если это то, что вы делаете, и я предпочел бы, чтобы populateWithDefaultValues, который больше.

Кроме того, меня лично смущает, если метод изменяет параметр и возвращает его. Я понимаю удобство быть в состоянии сделать что-то вроде них.слияния(prepareCustomerEntity(заказчик)), но я думаю, что это bastardises метод проектирования.

2
ответ дан 4 сентября 2011 в 11:09 Источник Поделиться

Я большой поклонник метода init() и initX() для тех методов, которые должны быть вызваны только получает объект в рабочее состояние.

1
ответ дан 4 сентября 2011 в 01:09 Источник Поделиться

Глядя на то, что вы вообще здесь делаете, предполагая, что ваш клиент не готов перед вызовом метода, почему бы просто не создать его там и вызвать метод createCustomer

1
ответ дан 5 сентября 2011 в 07:09 Источник Поделиться