Как принять решение о создании классов в приложении ..? - PullRequest
1 голос
/ 08 февраля 2011

У меня здесь серьезная проблема.Когда нам нужен именно класс?

В частности, я подумал о разработке настольного приложения, которое сможет генерировать тест профилирования или модульный тест для любого количества методов, которые я укажу.У меня был простой список для хранения методов.Я не думал о том, чтобы иметь класс.Но теперь я подумал о создании класса для хранения всех классов и получения набора методов в классе.Если эта идея верна, мои последние 4 дня усилий сводятся на нет.Итак, задаю новый вопрос, могу ли я получить какую-то информацию.

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

Ответы [ 5 ]

3 голосов
/ 08 февраля 2011

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

В превосходном Мартине Фаулере рефакторинг блики вы найдете множество шаблонов для перемещения обязанностей, данных и функций между классами (очевидный Извлечение класса , конечно, но с мощной помощью Метод извлечения и, в вашем случае, Encapsulate Collection , возможно).

TDD - это хороший способ наметить дизайн очень рано. Обычно «легко проверить» приводит к «разъединению» и, следовательно, к разделению интересов.

Использование обоих этих подходов вместе (TDD + рефакторинг) может помочь вам в переходе от дизайна к другому: все должно пройти более гладко.

И еще одно замечательное указание: DIYDI (сделайте это самостоятельно, добавьте зависимости).

Кроме того: вы собираетесь здесь для генерации кода или анализа времени выполнения?

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

Во втором случае вы можете использовать Аспектно-ориентированное программирование и / или Отражение для проверки классов и выяснения, какие методы у них есть.

2 голосов
/ 08 февраля 2011

Пожалуйста, прочитайте этот текст Грэди Буча и др., Чтобы приступить к проектированию с возражением.

1 голос
/ 22 февраля 2011

В простом утверждении - если у вас есть какие-либо данные о том, какие операции должны быть выполнены, вам нужен класс. Хорошим примером для этого являются контейнеры данных, такие как linklist, vector, .... Это известно как объектно-ориентированное программирование и является первым шагом в разработке классов.

Следующим этапом является объектно-ориентированное (наследование, полиморфизм), для этого необходимо обладать опытом и изучением хорошо разработанных кодов.

1 голос
/ 08 февраля 2011

Проектирование может быть довольно сложным, и пока вы не приобретете некоторый опыт, вы будете делать неправильный выбор, поэтому пишите тесты, чтобы упростить рефакторинг вашего кода. Я бы порекомендовал прочитать, Code Complete. Однако, так как вы, вероятно, хотите начать прямо сейчас, и вы задаете вопрос непосредственно о OO и классах, я также рекомендую прочитать сообщение в блоге дяди Боба

http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod

Надеюсь, это поможет

0 голосов
/ 08 февраля 2011

Если ваше приложение не предназначено для повторного использования (что подразумевается под «настольным приложением»), вы сами решаете, насколько гранулированы ваши объекты.

Пока у вас все в порядке с (или не имея) дополнительных классов, нет никаких оснований для изменения этого.

Если вы ищете принципы ОО (объектно-ориентированного проектирования), есть много литературы и веб-ссылок.

...