Разделительный код - модульный - PullRequest
1 голос
/ 15 июля 2010

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

Ответы [ 2 ]

1 голос
/ 15 июля 2010

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

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

  • Эти структуры данных подвержены воздействиюдругие классы? Если другие классы напрямую связаны с данными, вероятно, лучше всего инкапсулировать данные в своем собственном классе, что упрощает разделение концептуальной и фактической моделей.

  • Могу ли я часто выполнять операции с данными? Возможно, будет хорошо хранить массив имен, но если вы начнете добавлять методы, такие как validateName и checkName, в класс упаковки,было бы неплохо реорганизовать и разместить эти методы в самом классе Name.

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

0 голосов
/ 15 июля 2010

Имеет смысл сделать это, как только вы повторяете код для работы со структурой данных.

Крис Б. замечательно относится к взаимосвязанным данным.См. Пример рефакторинга Extract Class .

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