Oleg
Ну... Когда работал над тем, что мне не нравится, дома пилил то, что мне нравится. Сейчас проект, в котором всё по-моему. Но мне всё равно мало, и я дома снова пилю.
Так вот самую большую боль вызывает то когда ты пилил то что тебе нравилось, прям когда совсем был фанатом проекта
Oleg
И всё по твоему и тп
Anonymous
Так мне уже половина не нравится, что я напилил. =))
Anonymous
Переписать бы это. Да надо фичи релизить.
Oleg
Тоже бывает
Anonymous
Апнулся и увидел свои ошибки.
δμ Dmitry
Пиши сразу хорошо (:
Anonymous
Ничоси ты придумал. =) Так ты же развиваешься.
Oleg
Вообще по Роберту Мартину нужно сначала написать чтобы хоть как работало, а потом отрефакторить. Правда "чтобы работало" исключительно для небольших частей, не весь проект конечно.
Anonymous
Ничоси ты придумал. =) Так ты же развиваешься.
Я всегда по-максимому вкладываюсь. И пишу "сразухорошо". Но проходит полгода, и, когда смотрю на тот код, я понимаю, что не такой уж я и гений.
Oleg
Ещё весело бывает когда написал несколько тысяч строк кода, а потом нашел решение на уровне логики-формулы и переписал в 144 строчки и оно в целом делает тоже самое, чуть менее красиво, зато лаконично и работает.
δμ Dmitry
Вообще по Роберту Мартину нужно сначала написать чтобы хоть как работало, а потом отрефакторить. Правда "чтобы работало" исключительно для небольших частей, не весь проект конечно.
Ну обычно когда начинается бизнесс, то нет понимания как должно быть в итоге. Фичи и код наслаиваются хоаотично, часто в режиме "чтоб вчера работало". Ну а потом или бизнес хороший и инвестирует в пересоздание, или все сидят мучаются с легами
Anonymous
Да. У меня так и было где-то пару месяцев назад.
Oleg
Работает? Таска закрыта? Хорошо, нам сейчас вот эту задачу нужно срочно сделать, ну ты не беспокойся, потом отрефакторишь, главное сейчас же работает, верно?
Anonymous
Ага. Так и копится говнокод. =)))
Anonymous
Потом кто-то ещё приходит в проект и косо смотрит на авторов.
Oleg
Или ресурсов нет, хотя у компании лярд оборота и акции на ньюйорксой бирже, а админа выделить не могут и деплоится продакшн по FTP в 2017
Smooth Operator
расскажите как жить со своим говнокодом?)
Anonymous
Смотря где.
δμ Dmitry
Потом кто-то ещё приходит в проект и косо смотрит на авторов.
Да ладно, будем честными, большая часть таких проектов просто говнокод от неумения, а не лимиты времени.
Smooth Operator
он сук работает, а времени переписывать особо нету
δμ Dmitry
расскажите как жить со своим говнокодом?)
покрыть тестами на регрессию, изолировать куски, переделывать если нужно, не трогать если работает
Oleg
Вообще одна из причин почему родились микросервисы - не нужно переписывать - заморозил, если нужна новая функциональность - написал ещё 1 микросервис, хоть на хаскеле, обмен данными то по сети по апи
Anonymous
Да ладно, будем честными, большая часть таких проектов просто говнокод от неумения, а не лимиты времени.
Ну, на моей совести пока только один проект (все принятые решения и всё такое). Но там всё хорошо. Как раз потому, что нам дали месяц с лишним на рефакторинг. Ваще люблю их за это.
Oleg
Прокси-микросервисы, расширяющие апи, виртуализация докерами всякими со своим набором либ и всего такого
Oleg
Микросервисы легче поддерживать чем монолит на 100500 всего, потому что абстракции в итоге всё-равно однажды текут и начинается что-то в стиле поменял безобидный вывод данных, развалилось полприложения
Oleg
Баги, на которых построена функциональность, которые породили свои баги, на которых построена своя функциональносить и чтобы пофиксить баг нужно найти все зависимые места снизу вверх. А они могут разрастись как дерево.
Oleg
Anonymous
Страсти какие.
Oleg
На самом деле рефакторинг это в чем-то забавный такой ребус в стиле распутай это, пройди лабиринт и прочее такое, может быть очень и очень увлекательным занятием. Главное чтобы финал имел смысл ибо бывает что проще накинуть серверов, а поверх багов заглушку запилить и забыть.
Smooth Operator
ну смысла то нет, если все работает)
Oleg
Работать может по разному - например оное падает периодически, но стоящий сверху супервизор перезапускает это дело
Oleg
Или выжирает оперативку, требуя ребут ночной каждый день
Oleg
Или при большой загрузке падает, но в 99.9% времени такой нагрузки и потери в деньгих и репутации не большие
Oleg
Во фронтенде можно тоже уделать в щи интерфейс так что чтобы поменять местами на форме расположение 2х кнопок тебе требуется 4 дня работы
Oleg
Из жизни пример
Oleg
Ну и может быть более 100 тикетов на баги, но невозможно адекватно их фиксить потому что проект гребаный монолит на 100500 строк кода, причем число что я написал не то чтобы сильно больше чем в реальности их там, а доки в большей части кода нет, написано было 37 разными людьми в разное время, каждый писал по разному, дока иногда врет, а также поправка кода в одном месте может убить казалось бы вообще не связанный интерфейс в другом разделе, на другой вкладке, и, самое страшное, на вообще другой технологии. А 30 человек никто на это не даст.
Oleg
Осталось добавить что оное ещё на 2х крупных фреймворках одновременно и переплетено, в каждом месте по разному
Oleg
ExtJS?)))
Да, но очень древней версии 2, с самопильным серверным рендерингом, но частичным и частичной доводкой на фронте с частичным преобразованием некоторых данных, с расположением кода в нескольких файлах в каждом до тысячи строк кода, всё это ещё завернуто на систему прав доступа, которые могут не присылать часть данных, могут присылать другую часть, могут прятать не нужное из логики в JS, а могут через стили, причем могут быть добавлены классы на элементы, могут быть инлайн, а могут быть вставлены в изначальную страницу стили. И это только половина всего что там было.
Oleg
Самое страшное что я до сих пор помню это всё и расположение этих файлов 😄
Oleg
Зато там был настольный футбол, аквариум с редким видом черепахи внутри, а также 3 монитора и вкусный кофе
Smooth Operator
случайно не на А начинается компания?)
Oleg
Нет, но там тоже ExtJS, да
δμ Dmitry
Нет, но там тоже ExtJS, да
нужно создать организацию, помогающую людям, которые испытали опыт extjs и теперь у них посттравматический синдром
Oleg
На самом деле ExtJS очень крутая штука. К сожалению почти никто её не умеет готовить. Отсюда и проблемы
Oleg
Все проекты что я видел на ExtJS были написаны в стиле "да, да, гайды это круто, но мне скучно, а давайте вот так напишем!"
Oleg
Оттуда появляются штуки о чем я писал выше
Oleg
Хотя казалось бы - полноценный ООП, паттерны из коробки, четкое разделение представления, логики и хранения данных и ещё 100500 крутых плюшек. Но нет, нужно же сделать всё по своему, половину того что есть ещё и завелосипедить потому что лень же читать доку и всё такое в этом роде
Oleg
Не все просто знаю что в ExtJS можно верстать
Oleg
Темплейт поверх голого Ext.Component
Oleg
Хоть просто верстка, хоть данные забиндить
Oleg
Аля ангуляр 1
Oleg
То есть можно было писать в стиле ангуляра ещё до того как он появился
Oleg
Но почему-то все обычно лезут в высокоуровневые компоненты когда нужна не таблица и конечно же огребают проблемы, там ведь и правда 0 гибкости. Но оно и не предназначено для этого.
Oleg
Второй ангуляр же с его множеством плюшек тоже в чем-то является подмножеством ExtJS в плане функциональности, единственно что нет готовых компонентов. Но есть классы тайпскрипта, это да.
Oleg
Синглтоны только не завезли в тайпскрипт, даже в доке у них там нужно сильно извратится
Oleg
В эксте синглтон делается одним полем singleton: true, притом инстанс создается сразу. Также есть автоматически генерируемые геттеры-сеттеры с возможностью перехвата-редактирования установки значения и уведомления об изменениии и всё это из коробки и уже 100500 лет как
Oleg
Ладно, не буду превращать это чат в филиал форума по эксту 😄
Oleg
Но в целом могу сказать что чаще проблема в применении технологии, а не в самой технологии
Oleg
Ага
andrei
Ну так надо строгий какой-нибудь линтер, который будет током фигачить разработчика
Oleg
Увы, лишь примитивные вещи можно залинтить
Oleg
Архитектуру не залинтить
Oleg
Разве что на уровне языка
andrei
Elm)
Oleg
Но тогда все будут жаловаться на строгость языка и писать на хипстерском
Oleg
Потому что там есть няшный сахар и логотип у языка на сайте красивый
Oleg
Вообще после 2х лет рефакторинга одного из легаси проектов я начал любить жесткость и строгость стандартов. Потому что основные проблемы были в их не соблюдении. Лишь небольшая часть проблем была из-за невнимательности, неправильных решений и прочего такого.
Oleg
То есть в целом можно даже писать с кривой архитектурой и всем таким, но если просто соблюдать правила и переходить на новую архитектуру и новые правила итеративно, понемногу, но сразу всем проектом - всё будет хорошо
Anonymous
Эх, поскорее бы wasm пришел в мир, можно будет на питоне писать нормально, вместо жс.
Oleg
Пилили, пилили фичи, выделили месяц на апдейт всего, пересмотр архитектуры, правил, относительно полученного опыта использования старой, текущих потребностей и всего такого. И за месяц апнули всё на новое. А дальше полгода строго только в жестко заданных стандартах. Захотелось иначе, есть идеи как лучше? Записал, отложил, к следующей итерации - обсудил.