maxcom, hizel
Раз уж есть форум по разработке движка сайта, то не грех им воспользоваться :). Тем более, что чтобы не было «лебедь рак и щука», процесс обсуждения должен занимать минимум 60% времени, затраченного на девелопмент в команде.
Дабы внести ясность в структуру исходников (а также чтобы уменьшить трудозатраты на отвергаемый код), предлагаю обсудить названия существующих и будущих пакетов.
Существующие пакеты в ru.org.linux:
auth - всё, что относится к аутентификации пользователя: регистрация, логин, сброс/воостановление пароля, ввод каптчи.
Нахождение здесь IPBlockDao и IPBlockInfo IMO спорно, потому что это уже расширенная информация о пользователе, доступная модераторам.
boxlet - основные классы для бокслетов - блоков инормации на главной.
comment - классы, предназначенные для обслуживания комментов.
gallery - отдельные классы, предназначенные для работы с галереей. опять же - IMO спорно, потому что это всего лишь как бы расширение возможностей пакета topic. Может, лучше topic.gallery?
group - классы для обслуживания групп секций.
poll - обслуживание голосований. topic.poll?
search - обслуживание поисковых запросов.
section - секции движка. Очень много захардкоденного, сам объект Section как бы размазан частично в захардкоденном виде и частично в базе данных в виде таблицы. Наверное, потом обсудим, как разрулить это (моё мнение: объекты Section должны полностью находиться в БД и должны содержать все необходимые признаки. Например, дополнительное поле is_gallery и т.д.).
storage - пакет-помощник для галереи и для аватарок пользователей. util.storage?
topic - обслуживание тем сообщений.
user - профиль пользователя, игнор-лист, избранные темы, уведомления, темы и комментарии пользователя.
user.LostPasswordController => auth.LostPasswordController?
util - вспомогательный код.
пакеты site и spring в результате рефакторинга должны исчезнуть.
Далее предлагаемые изменения. Создать пакеты:
config - в него перенести site.config/* и site.Config
util.cache - перенести сюда site.MemCachedSettings и spring.commons.*
Перенести классы в существующие пакеты:
spring.boxlets - два варианта: или перенести всё в boxlet, или раскидать по пакетам, к которым относятся бокслеты.
site.tags.BoxListTag -> boxlet.BoxListTag;
site.DateFormats => util.DateFormats;
site.DefaultProfile => user.DefaultProfile
также предлагаю добавить пакет ru.org.linux.admin, в котором будет содержаться код, отвечающий за обслуживание административных (модераторских) функций. То есть, полностью изолировать общий код и код, отвечающий за действия с повышенными привилегиями, Например:
admin.ipmanage - получение информации об IP-адресе пользователя, бан по IP. Сюда же перенести auth.IPBlockDao и auth.IPBlockInfo
admin.user - например, код, ответственный за удаление аватарки пользователя ScoreUpdater и т.д.