Много ли полей данных - это плохо? - PullRequest
3 голосов
/ 22 июля 2011

В Java плохо иметь ~ 50 полей данных в классе из 1000 строк?

Редактировать: Спасибо за отзыв.Это действительно открыло мне глаза, и я постараюсь делегировать функциональность большему количеству классов, а не иметь один класс для всего.:)

Ответы [ 7 ]

8 голосов
/ 22 июля 2011

Вопрос очень расплывчатый. Ответ может быть как да, так и нет. Да, это плохо, если вы можете аккуратно разбить функциональность на несколько классов. Нет, это не плохо, если класс хорошо сфокусирован, и единственная причина, по которой вы получили 50 полей, состоит в том, что вам НУЖНО их все там.

У меня есть, например, класс из 900 строк с 70 полями, но это потому, что класс реализует немного искусственного интеллекта, а параметры, которые использует алгоритм AI, - это множество поведений и пороговых значений, которые необходимо определить там, чтобы что дочерние классы настраивают их. В моем случае, я бы сказал, что это неплохая архитектура, и мои 14 лет разработки программного обеспечения, похоже, согласны: -).

Конечно, если бы класс прошел более 1000 строк, я мог бы разбить его еще на 2: ИИ движения и ИИ атаки, но сейчас, в контексте моего проекта, действительно имеет смысл объединить его, потому что ИИ движения И атаки AI никогда не применяются независимо: они работают вместе, они должны быть в одном классе. Если бы мне когда-либо пришлось сделать объект, который ТОЛЬКО нуждается в движении ИИ, то я бы во что бы то ни стало разбил бы его на 2.

4 голосов
/ 22 июля 2011

из Code Complete:

Критически относитесь к классам, которые содержат более семи членов данных: было обнаружено, что число "7 ± 2" является числом отдельных элементов, которые может запомнить человек.во время выполнения других задач (Миллер, 1956).Если класс содержит более семи членов данных, подумайте, нужно ли разбивать этот класс на несколько более мелких классов (Riel 1996).Вы можете ошибиться больше в верхнем конце 7 ± 2, если члены данных являются примитивными типами данных, такими как целые числа и строки, больше в нижнем конце 7 ± 2, если члены данных являются сложными объектами.

3 голосов
/ 22 июля 2011

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

У Джеффа есть хорошая статья о них, все мы должны прочитать ее.

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

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

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

1 голос
/ 22 июля 2011

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

1 голос
/ 22 июля 2011

рассказ;да.Длинная история;это очень субъективно.Класс с 1000 строками кажется чрезмерным.Все ли эти поля действительно связаны?Класс должен быть сфокусирован (проявлять высокую сплоченность).Попробуйте разбить свои поля на более мелкие, более сфокусированные классы.

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

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

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