Best Practice
duverse... или как я структурирую код?
Не так давно я принял решение использовать VueJS в качестве фронт-энд фреймворка для UserHUD (уже даже непривычно это старое название писать). Но опытом работы с этим фреймворком я не обладал. Соответственно и структурировать его я не умел. А это один из важнейших навыков, когда речь заходит о толстеньком проекте на пару тысяч файлов и миллионов строк.
Решил поделиться своим подходом в достижении наилучшего пути реализации тех или иных задач.
Простой алгоритм
Шаг 1: Пишем от балды
Сперва все начиналось очень осторожно - ткнул там, написал тут, подключил это, прочитал то... Но по итогу всегда рабочий функционал. Вкладка с документацией не закрывается.
Приходит момент когда функционал расширился, и код разбросан по проекту беспорядочно и затрудняет дальнейшую поддержку того же кода и реализацию нового.
Обратился к документации и подчеркнул полезный функционал, который позволит оптимизировать количество файлов, или же их качество (сделать их более понятными).
Шаг 2: Чистка
Поняв примерное количество файлов которое меня будет ждать в будущем, я принял решение каталогизировать файлы вместе с самими модулями сайта. Т.е. компонент содержащий кнопки "Добавить в друзья", "Удалить", "Заблокировать" и т. д. находится в модуле network
, тогда как компонент editor
в модуле community
.
Проект оброс неприемлемым количеством нечитабельных файлов, где логика трижды обросла логикой и отрастила плотную бороду.
Дзен - не достигнут. Код - говно.
Шаг 3: Шаг 2
Было принято решение сложить все JS-файлы в одну папку и каталогизировать их там. При этом написан синтаксические помощники для подключения компонентов и модулей самого VueJS для шаблонизатора Django. Удалены все лишние файлы. Удалены все "сложные" модули. Также проект оброс годным количеством базовых компонентов или mixin'ов, кому как понятнее, избавился от глобального мусора в оперативной памяти браузера и стал легче на пару десятков килобайт. И это при том, что функционал, гибкость и чистота кода возросли.
Итог
Ни много ни мало, результат на удивление хорош. Любой модуль комфортно читать с 3-4 файлов, писать также просто, грязь исчезла, осталась начинка. Думаю Шаг №2 каждый будет повторять разное количество раз, прежде чем получит желаемый результат.
Ну а программисты которым лишь бы работало - идите нахуй! Я стремлюсь к идеалу не потому что я аухенный кодер, а потому что я свихнусь поддерживать говнокод такого монструозного масштаба один. По-этому любой недостающий комментарий или лишний тугой кусок кода - выльется в несколько дней или даже недель переработки.
fuckT
Для работы проекта на домашнем компе - выделил виртуалку сначала с 8гб ОЗУ, затем стало худо и увеличил до 10гб. На сегодняшний момент - винда тулится в 4гб из 16гб, а виртуалка на 12гб ОЗУ + 16ГБ SWAP on SSD грузит 80% памяти. Конечно часть это IDE + Chrome в самой же виртуалке + оболочка, просто так комфортнее. И все же львиную долю откусывает сам проект состоящий из кучи всякого типа:
- PostgreSQL
- WebSocket Server
- CDN Server
- Main Server
- ElasticSearch (жрет ппц)
- ....
и куча других микросервисов сопровождающий проект в целом.