movasyl
@movasyl
semper tiro

Где предел шаблонизации и автоматизации?

Думаю я не единственный, кто через это проходил. Прошу поделитесь опытом.

Пол года назад, как я начал углубляться в мир WEB технологий и с тех пор нахожусь в поисках. Суть в том, что начав из простого HTML и CSS я стал замечать огромное количество лишних телодвижений, которые приходилось делать каждый раз. Это и копипаст ранее написанного кода и бесконечное дублирование одного и того же из минимальными различиями ну и наконец адская навигация между сотен строк разноцветных букв, а также несколько часовые затупиты из-за ошибки которую во всем этом хаосе попробуй найди.

Естественно, я начал искать пути автоматизации и упрощения этого процесса. Сначала SCSS, затем BEM подход, Gulp и какие-то примитивные плагины для разбивки ужасно бесконечной html простыни на какие-то модули. После этого шаблонизатор Pug, который перевернул мое представление о верстке с ног на голову. И уже мне стало мало возможности просто структурировать код и следовать принципам DRY, давай делать умные блоки ... Блин, думаю, както стремно все время писать бэм классы руками, а bem-tools как то не прет, давай выдумывать велосипед. А тут еще и pug mixin в которых отсутствует скоуп между дочерними и родительскими блоками, из-за чего вылезает 20 новых преград на пути, чтобы поймать Дзэн и уйти в Нирвану, а значит и здесь нужен велосипед. А потом велосипед для велосипедов... В конечном итоге мои умные блоки становятся настолько умными, что скоро начнут меня посылать и ходить ночевать к друзьям))). А если серьезно то я понимаю, что на пути к упрощению читаемости, поддержки и переиспользования некой единицы кода, все время сворачиваю в сторону создания универсальной сущности которая запрограммирует сама себья. Потом понимаю, что иду не туда, более того через день-два сам увже не могу разобраться как оно все работает (о какой поддержке может идти речь), все удаляю, создаю новую папку и снова все по кругу....
Как вовремя остановиться, как увидеть грань между здравым смыслом и маразмом? Возможно, также, есть какие методические рекомендации по этой тематике?

Буду благодарен за любые советы!
  • Вопрос задан
  • 1210 просмотров
Пригласить эксперта
Ответы на вопрос 7
werty1001
@werty1001
undefined
На мой взгляд нужно писать велосипеды, особенно на начальном этапе, да возможно сначала будет одно только непотребство, но в конечном итоге должно получится что-то стоящее и удобное, и да, все что может быть автоматизированно, должно быть автоматизированно.

PS Чтобы не писать руками бем классы я написал вот это, стало гораздо легче.
Ответ написан
sim3x
@sim3x
emmet - хватает и без шаблонов, и копипасты
Ответ написан
Комментировать
usdglander
@usdglander
Yipee-ki-yay
Не совсем про верстку, но актуально!
А вообще помните для себя одну важную вещь: лучшее - враг хорошего! Ставьте себя на место человека, который впервые увидит ваш код, поймёт ли он что к чему достаточно быстро чтобы поддержать его? Если нет, то дальнейшее усложнение не нужно.
Ответ написан
@R_void
YAGNI
Думаю, что даже в такой параше кода, как веб, этот принцип вполне применим. В любом случае нужно потратить некое кол-во человеко-часов на выполнение вёрстки.
Делать этот процесс слишком умным - себе дороже. Ведь очень умные программы должны предвидеть слишком много юзкейсов, поддерживать собственный код в читаемом состоянии и обновляться вслед за зоопарком нодовских, обезумевший зверушек, меняющих мажорные версии раз в неделю.
Ответ написан
Комментировать
dhat
@dhat
Это ты еще компоненты не пробовал. Ну еще все впереди))
Ответ написан
@arezvov
Серебряной пули нет. Хоть утверждение высказано не по теме вопроса, но вполне подходит в качестве ответа.

С одной стороны хаос, с другой оверинжиниринг.
Понять же в какой мере нужно применять "средста автоматизации", а затем "средства автоматизации средств автоматизации" и т.д. можно только в условиях конкретного проекта: подготовленность команды, сроки, продолжительность поддержки и т.д и т.п.
Важно понимать, что каждый новый инструмент увеличивает порог входа в проект и приводит к затратам на поддержку этих инструментов. Затраты эти должны чем-то быть оправданы.
Вспоминаются рассуждения Стива Макконнелла, о том, что когда мы "пишем код", наша первая задача - борьба с его сложностью, и то решение лучше, которое проще для понимания. Если инструмент делает проект проще в целом, то это хороший признак.
Однако, сложность может быть не единственным критерием, в каждом проекте условия индивидуальные.
Ответ написан
Комментировать
alexfilus
@alexfilus
Senior backend developer
Мне БЭМ как-то вообще не зашёл. Пользуюсь Emmet, SASS, Gulp, HTML includes.
Остальное, как по мне для крупных проектов с серьёзным фронтэндом. В силу специфики занимаюсь я магазинами и визитками, так что большая автоматизация тут и не нужна.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы