metaclass: (дзедline)
[personal profile] metaclass
Есть небольшая опердень, в которой несколько сотен различных объектов - таблицы, вьюшки, хранимые процедуры, запросы, гуишные окна, справочники и прочая дб-центрик хрень. Часть из этих вещей по историческим причинам устарела.
Я вот думаю, сделать автоматический анализатор графа зависимостей между между всем этим, чтобы создать список, "чего нахрен удалить" или по старинке, руками и только то, что нужно на текущий момент.
А то очень уж близко к зоопарку с яками изготовление анализатора зависимостей, хоть он и займет день-два в разработке.

Date: 2013-03-15 06:42 am (UTC)
From: [identity profile] falcrum.livejournal.com
Э-э, «гуишные окна» - «дб-центрик»?

Date: 2013-03-15 06:46 am (UTC)
From: [identity profile] metaclass.livejournal.com
Да. Содержимое этих окон на 99% генерируется из содержимого БД.

Date: 2013-03-15 06:55 am (UTC)
From: [identity profile] falcrum.livejournal.com
А. Я что-то подумал про "БД-зависимое"... :)

Date: 2013-03-15 06:58 am (UTC)
From: [identity profile] metaclass.livejournal.com
Так оно зависимое.

Date: 2013-03-15 07:02 am (UTC)
From: [identity profile] falcrum.livejournal.com
Н-ну... в принципе - да, может быть. Если какая логика навешана...

Date: 2013-03-15 08:44 am (UTC)
From: [identity profile] nivanych.livejournal.com
99%, это что-то много.
Посчитайте внимательно.
Должно быть 83%.

Date: 2013-03-15 12:36 pm (UTC)
From: [identity profile] ext_1684112 (from livejournal.com)
Но только в РБ! В РФ будут все 146%.

Date: 2013-03-15 08:05 am (UTC)
From: [identity profile] 7ocb.livejournal.com
Я вот тут недавно столкнулся с проектом, на котором я работал пару лет назад, потом его отдали американским корейце-индусам (корцедусами их, что-ли, называть). И через пару лет я снова оказался на этом проекте. Американские товарищи очень любят писать и копипасту. Но удалять код и убирать за собой не любят совершенно.

Поэтому проект чуть более чем наполовину (!!!!) состоял из кода, который не используется. Но в силу специфики проекта и корцедусов, код который не используется, все еще остается вызываемым. Например в ветках if'ов, которые никогда не выполнятся и т.п.

Таким образом полностью автоматическая система должна как минимум обладать интеллектом среднего разработчика для того, чтобы выяснить, что же из этого надо удалять.

В общем я это все к тому, что полная автоматика, как показывает практика, не слишком применима в данных условиях. И вместо того, чтобы потратить Н времени на разработку автоматики, лучше потратить Н/4 времени на разработку простых инструментов для того, чтобы разгребать зоопарк в полуавтоматическом режиме или для того, чтобы облегчить ручной разбор.

Ей богу, руками, grep'ом и крепким словом я разгреб это барахло куда раньше чем сваял бы внятную систему анализа зависимостей. (:

Конечно я разгреб еще не все, потому что там остались еще более запутанные куски, которые требуют глубокого анализа, но с такими кусками, очевидно, автоматика не справится еще больше.

Date: 2013-03-15 09:43 am (UTC)
From: [identity profile] zamotivator.livejournal.com
У автора поста код немного выше качеством, я думаю, так что анализатор зависимостей может оказаться вполне адекватным инструментом.
Плюс он не сколько код, сколько базу анализировать собирается.

Date: 2013-03-15 09:46 am (UTC)
From: [identity profile] 7ocb.livejournal.com
Я ни в коем случае не сомневаюсь в качестве кода автора.

Я скорее рассматриваю эти проблемы как впринципе свойственные ситуации "куча устаревшего и неиспользуемого кода".

Date: 2013-03-15 09:57 am (UTC)
From: [identity profile] zamotivator.livejournal.com
Не все кучи устаревшего неиспользуемого кода одинаково проблемны :)
В целом с вашим исходным посылом согласен - зачастую полуавтоматически будет проще, корректней и быстрее.

Date: 2013-03-15 09:58 am (UTC)
From: [identity profile] 7ocb.livejournal.com
"Не все кучи устаревшего неиспользуемого кода одинаково проблемны :)"

Абсолютно согласен. Я всего лишь поделился своим опытом сражения с аналогичной проблемой. В конце концов, чем больше точек зрения можно обдумать, тем более взвешенное решение можно принять. (:

Date: 2013-03-15 10:02 am (UTC)
From: [identity profile] zamotivator.livejournal.com
Консенсус, отлично :)

Date: 2013-03-15 12:58 pm (UTC)
From: [identity profile] jdevelop.livejournal.com
мы этого кода не видели, впрочем лично я ни одного кода ребе не видел

Date: 2013-03-15 01:04 pm (UTC)
From: [identity profile] zamotivator.livejournal.com
Ну, если судя по блогу, товарищ из БД 99% GUI генерирует. Раз такой подход к автоматизации, значит, сильно большого говна быть не должно по идее

Date: 2013-03-15 01:09 pm (UTC)
From: [identity profile] jdevelop.livejournal.com
"по идее" может быть все что угодно

Date: 2013-03-15 01:11 pm (UTC)
From: [identity profile] zamotivator.livejournal.com
/me разводит руками

Date: 2013-03-15 09:46 am (UTC)
From: [identity profile] http://users.livejournal.com/zubr_/
Выгребать и удалять можно только при наличии юнит-тестов. Почему-то везунчики, у которых среда разработки умеет юнит тесты, даже не вспоминают про них.

Date: 2013-03-15 09:50 am (UTC)
From: [identity profile] 7ocb.livejournal.com
Наличию юнит-тестов необходимо в случае если речь идет о том, чтобы вычищать код который очень тесно переплетается с реально работающим.

В случае если код используется только в ветке if которая никогда не отработает и это можно легко доказать простым анализом кода, то такая чистка достаточно безопасна. Но бесспорно, если есть юнит-тесты оно то завсегда лучше.

Впрочем, это никак не относится к вопросу "руками или автоматикой". Автоматика тоже может иметь ошибки и тоже может удалить что то лишнее. Или не удалить чего то что стоило бы.

Date: 2013-03-15 11:26 am (UTC)
From: [identity profile] jakobz.livejournal.com
Для таких БД оперденей часто неясно как писать тесты и что в них вообще проверять.

Date: 2013-03-15 11:39 am (UTC)
From: [identity profile] metaclass.livejournal.com
У меня как раз просто - "выбрать все пункты меню доступные пользователям и проверить что они не валятся с ошибками".
Там могут быть внутренние ошибки типа "неправильно посчиталось", но они ищутся другими методами, тут главное, чтобы не удалить что-нибудь из используемых запросов.

Date: 2013-03-15 12:59 pm (UTC)
From: [identity profile] jdevelop.livejournal.com
юниттесты писать нельзя, это вам любой айсед расскажет

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 8th, 2025 09:49 pm
Powered by Dreamwidth Studios