Параметры в методе - PullRequest
0 голосов
/ 12 июля 2011

У меня есть метод, в котором есть более 7 параметров, тип всех параметров разные.Ну, мой вопрос в порядке, или я должен заменить все параметры одним классом (который будет связывать все параметры как переменную экземпляра).

Ответы [ 4 ]

2 голосов
/ 12 июля 2011

Что ж, есть места, где я бы посчитал, что все в порядке - но их мало и далеко.Я бы, в общем, рассмотрел бы использование «класса параметров» вместо этого.

Обратите внимание, что это не должен быть подход «все или ничего» - было бы более разумно инкапсулировать, скажем, 4 параметра вместе?Позволит ли это использовать новый класс в других методах?

Другой вопрос, который следует рассмотреть, заключается в том, что метод может делать слишком много - функциональность метода определенно чувствуется как единая связная единица?

2 голосов
/ 12 июля 2011

Ну, у меня вопрос в порядке, или я должен заменить все параметры одним классом

7 - это слишком много.Заменить на класс.С моей настраиваемой темой VS и настройками шрифтов Intellisense не помещался бы на экране, когда есть метод с таким большим количеством параметров :-) Я считаю его более читабельным и более легким для понимания при работе с классами.

Конечноэто только мои 2 цента, и это субъективно.Я видел людей, пишущих методы со многими параметрами.

0 голосов
/ 12 июля 2011

Я в чем-то согласен со всеми приведенными ответами. Однако было бы неплохо разбить метод на более мелкие части, как предлагает Джон. Обычно, когда у вас такая ситуация, это означает, что метод делает слишком много. Обычно методы должны иметь максимум 1 или 2 параметра. Хотя вы могли бы добиться того же, заменив все свои параметры параметром класса, вы могли бы просто скрыть большую проблему. Есть ли шанс, что вы сможете опубликовать метод или описать, что он делает?

Как правило, если вы не можете уместить весь метод, включая объявление на 1 экране, он слишком велик. Программисты обычно рекомендуют ломать методы, чтобы сделать их многократно используемыми. Но также имеет смысл разбить их на части, чтобы улучшить читаемость.

0 голосов
/ 12 июля 2011

Thare - это API-интерфейсы Microsoft с еще большим количеством параметров;В любом случае, я согласен с @Darin, класс может быть хорошим решением, ясным и эффективным, который может избежать передачи параметров в правильном порядке ... например, если вы измените порядок для oen без использования рефакторинга, вы попадаете в беспорядок..
Также подумайте, можно ли использовать этот класс в других частях программы ...

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