Как должны быть организованы файлы исходного кода? По функции или типу? - PullRequest
4 голосов
/ 25 февраля 2009

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

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

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

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

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

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

Ответы [ 3 ]

8 голосов
/ 25 февраля 2009

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

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

Упаковка должна быть отдельной вещью.

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

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

4 голосов
/ 25 февраля 2009

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

Я подумал, что анализ «Пакет за функцией, а не слой» на javapractises.com был довольно прост для чтения и охватил несколько аспектов, о которых я не думал, например, как работает пакет за функцией и в других областях, кроме программирования.

0 голосов
/ 25 февраля 2009

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

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