Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Составьте список приложений, использующих Вашу базу.
Попросите, по возможности, коллег разрабатывающих эти приложения выдать Вам список объектов, которые они используют.
Обсудите с коллегами чтобы они вместо таблиц перешли на использование представлений (процедур).
Когда все обращения к базе будут реализованы посредством процедур/представлений/функций, Вам будет намного легче проводить рефакторинг.
В статье я лишь показал использование базовых методов рефакторинга.
На основании чего?
А что делать со всеми остальными малозаметными интеграциями, которые упадут через два месяца после выкатки вашего рефакторинга в продуктив?
если что то начинает ломаться, всегда дадут время это исправить
А вы думаете, контролирующие ведомства бывают только в госухе?
Просто это тяжелее и медленнее.
не думаю, я уверен что в госухе нет контролирующих ведомств.
Как я уже говорил ранее, начальству этот тяжелый, медленный, да и вообще любой рефакторинг не нужен (как правило), потому либо вы будете действовать себе на благо, либо копаться в говнокоде.
Не могу уловить вашу позицию. Вы с моими словами не согласны?
Понимаете ли в чем дело, если начальству рефакторинг не нужен, то единственное обоснование, которое вы сможете выдать для остановки системы в продуктиве — ваша же ошибка. За которую вам же и влетит.
без согласия заказчика
Таки вы хотите и на пеньке посидеть, и ватрушку вкусить. Мой опыт подсказывает, что не получится.
Делаете его вы сугубо для того, чтобы вам не копаться в говнокоде.
А мой опыт показывает, что если рефакторинг заказчику выгоден, то заказчик на него можно уговорить. А если невыгоден, то зачем его проводить?
Вот именно поэтому вы не можете взять и остановить ради своего рефакторинга продуктивную систему
Ну если вам удасться убедить заказчика, что он получит некий выигрышь в будущем, но за это ему придется заплатить уже сегодня, при чем система уже работает, то вам нужно не программистом, а продавцом работать
Ну как же не могу, могу, и даже приходилось делать.
А просто не надо делать рефакторинг, когда система «уже работает». Включите его в косты доработки (а лучше — в косты разработки) — и все. И не будет никакого «в будущем».
Ну то есть я правильно понял, вы можете, не объясняя причин (и не неся ответственности) остановить продуктивную систему (что обычно влечет за собой те или иные потери заказчика)?
Как мне включить его в уже оплаченную, разработанную (не мной) и запущенную систему?
В идеале да.
Всех уволить, а на их места хороших набрать?
просто не надо ее трогать.
И вам не кажется, что это безответственно по отношению к заказчику?
Да нет, достаточно самому уволиться.
Поддерживать то надо, или говнокод это «не так уж и плохо»?
Так как заказчик человек не сведующий, он должен быть мне благодарен за то, что я чищу его систему (обычно бесплатно), ценою десятка минут неработоспособности.
Таки уволился, только идеальной организации, разрабатывающей идеальное ПО с идеальными начальниками, которые убеждают заказчика в необходимости рефакторинга, все еще не нашел. Может посоветуете какую?
Если надо поддерживать — включаете в косты поддержки.
Нет, не должен быть. Вы не думали, что этот десяток минут неработоспособности может выйти ему дороже, чем весь выигрыш от вашей «чистки»?
Они (организации) ничем передо мной не провинились
На что заказчик спросит — а чего так дорого?
Я не рефакторю системы таким способом, если это может выйти заказчику боком.
Потому что ваша работа столько стоит
А откуда вы знаете, может, или нет?
На этих словах, думается, можно закончить наш милый диалог )
с другой стороны вы предлагаете ставить заказчику условия и продавать ему то, что ему не нужно )
Если о системе нет вообще никакой инфы, то вы ее не отрефакторите никакими методами.
Я не предлагаю продавать то, что не нужно
И да, я предлагаю ставить ему условия, потому что работать без условий — это рабство.
Ну можно же сначала собрать информацию. А если можно ее собрать, то зачем останавливать систему?
Если вы не знаете, кто к ней подключен (а иначе зачем ее останавливать) — это означает, что вы не знаете, какие последствия будут у останова.
Повторюсь, заказчику рефакторинг не нужен.
А вы точно с государством работали?
Можно и нужно, но бывают случае, когда информацию о рисках собрать получается (что довольно просто), а вот технические подробности, что с чем связано, никак не собрать.
Без малого пять лет.
И как же вы, зная, что отключение БД влечет за собой риск срыва критического отчета, все-таки отключите ее, чтобы узнать, какие системы с БД связаны?
И вы ставили условия государству?
Почему вы считаете, что я отключал БД под риском срыва критического отчета?
Я озвучивал условия выполнения задачи начальству, а те — заказчику. Не вижу в этом ничего странного.
Если не отключали — то как же вы выясните, какие системы с ней связаны?
Озвучивать условия выполнения начальству конечно можно, но эти условия должны либо согласоваться с бюджетом, выделенным на проект (да, он выделяется заранее, а не на основании ваших условий), либо компания с этим заказчиком не работает.
Как уже говорил ранее, сначала оцениваются риски, затем принимается решение о способе анализа зависимостей. Как уже говорил ранее, узнать о рисках намного проще, чем о технических подробностях.
Ну вот и прекрасный второй вариант.
Прекрасно, мы выяснили, что риск высокий. Дальше что делать?
Использовать другие методы нахождения зависимостей.
(собственно, с этого и надо было начинать)
Какие?
Опрос, тестирование, анализ структуры, анализ логов и т.д.
select * from syscomments where text like '%<object_to_change>%'
Рефакторинг схем баз данных