Best Practice

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 (жрет ппц)
  • ....

и куча других микросервисов сопровождающий проект в целом.

Report Page