Производительность использования многих параметров в конструкторе - PullRequest
1 голос
/ 17 февраля 2012

Кто-нибудь знает, как влияет производительность на использование многих параметров в конструкторе (10+) по сравнению с сеттерами?

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

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

Я прошу о производительности, потому что это приложение для Android, которое можно запускать на старых устройствах без JIT.

Также было бы неплохо, если бы мы знали оптимальное решение.

Ответы [ 3 ]

3 голосов
/ 17 февраля 2012

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

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

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

0 голосов
/ 17 февраля 2012

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

0 голосов
/ 17 февраля 2012

Вы можете инкапсулировать все параметры в один объект и передать его в качестве параметра своему конструктору.

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