2009-02-24 3 views
4

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

  • Передача данных объектов
    • объект А
    • Объект B
  • Диалоги
    • диалог
    • Dialog B

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

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

  • Page A
    • изображения
    • Ресурс 1
    • Диалог 1
  • Page B
    • изображения
    • ресурсов 2
    • Диалог 2

Это лучший способ сделать это? Кто-нибудь имеет хорошее правило, чтобы следовать?

ответ

8

Для Java пакеты являются единицей повторного использования.

Для Python модули (а также пакеты) являются единицами повторного использования.

Пакет должен быть автономным.

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

Если вы поместите вещи «сущностью» - моделью, представлениями, элементами управления, доступом к данным и т. Д. - тогда у вас есть модуль многократного использования, который можно использовать в других приложениях.

4

Подход «Побалуйте себя» кажется разумным и работает для меня, конечно же, для Java ... как часто вы хотите упаковать свой уровень доступа к данным, и эта отличная новая функция?

Я думал, что анализ "Package by feature, not layer" на javapractises.com был довольно прост в чтении и охватывал пару углов, о которых я не думал, как о том, как пакет по функциям работает в других областях, кроме программирования.

+0

Спасибо! Я нашел ссылку очень полезной! –

0

Вы должны сделать это так, как это делает другой код, использующий ваш язык/инструменты. Это не язык-агностический вопрос; некоторые языки/инструменты ожидают отношения между «файловой организацией» и «тем, что в этих файлах», и вы должны это уважать.

Смежные вопросы