jayrandom: (Default)
[personal profile] jayrandom
Где-то пару лет назад мне по работе нужно было встроить в систему, которую мы поддерживаем, некоторую дополнительную функциональность. Я проковырялся сколько-то времени, аккуратно встроил, и стало лучше, чем было.

На этой неделе я занимался тем, что удалял из этой же системы ту самую функциональность. Проковырялся сколько-то времени, аккуратно вырезал, и стало лучше, чем было.

Не правда ли, напоминает историю с закапыванием и выкапыванием телефонного кабеля в "Москве-Петушках"? :)


При всей незначительности примера он хорошо иллюстрирует переход системы в новое качество. В чём суть? Система умела взаимодействовать с внешним относительно себя объектом П. Нам нужно было провести эволюцию этого объекта до нового качества, не нарушив взаимодействия. Поэтому, взяв за основу старый объект типа П1 мои коллеги построили его новую инкарнацию типа П2. А я научил систему различать между объектами типа П1 и объектами типа П2, поскольку в переходный период это различение было необходимо. Потом объекты типа П1 отмерли естественной смертью, остались только П2, так что способность к различению двух типов превратилась в обузу, и ради красоты это различение было снова удалено.

Пожалуй, подобную "посредническую" функцию исполняют строительные леса. Они пристраиваются к дому в изначальном качестве, потом дом ремонтируется, приобретает новый вид, а потом леса разрушаются.

Интересно, что во всех этих случаях "посредник" необходим только на протяжении некоторого времени. Его рождение так же важно, как и его смерть, для исполнения задачи. По состоянию контекста "до" и "после" непонятно, как произошёл такой скачок. Часто бывает, что наблюдатель фиксирует только эти два состояния, а "посредник" ускользает от его наблюдения. Предположить существование "посредника" ему может помешать бритва Оккама. Как же "до" перешло в "после"? "Как-то так...," - бормочет наблюдатель и стыдливо отворачивается.

Date: 2008-05-24 06:41 am (UTC)
From: [identity profile] azgar.livejournal.com
C точки зрения объектно-ориентированного дизайна удалять бы ничего не пришлось. Просто реализация интерфейса к П1 умерла бы вместе с ним, будучи естественным образом вытесненной интерфейсом (внешне таким же) к П2 :)

Date: 2008-05-24 11:08 am (UTC)
livelight: (Default)
From: [personal profile] livelight
В природе всё сермяжнее :) Никто полностью старую функциональность не удаляет, всегда остаются какие-то рудименты.

Date: 2008-05-24 11:09 am (UTC)
livelight: (Default)
From: [personal profile] livelight
Речь идёт скорее о поддержке новых фич расширенного интерфейса, а не просто о разных реализациях.

Date: 2008-05-28 10:57 pm (UTC)
From: [identity profile] jayrandom.livejournal.com
В момент изначальной реализации П1 ещё не было известно, что там есть интерфейс :)

Date: 2008-05-29 06:15 am (UTC)
From: [identity profile] azgar.livejournal.com
Ну, я же оговорился, что "если бы дизайн был объектно-ориентированым", оно бы было :)

Date: 2008-05-29 01:14 pm (UTC)
From: [identity profile] jayrandom.livejournal.com
Характерной особенностью живой поддерживаемой системы является то, что у неё может постоянно меняться дизайн. Когда-то не было интерфейса, потом он появился, потом снова исчез... :)

Date: 2008-05-29 05:16 pm (UTC)
From: [identity profile] azgar.livejournal.com
Систему без дизайна страшно дорого поддерживать.
То есть, если это академическая система, можно посадить кучу программеров, которые будут её постоянно мять, как пластилин.
"Real life" системы себе такого позволить не могут :)
Кроме того, в системе без дизайна обычно нет и документации. Если кто-то из девелоперов выпадает, кусок системы остаётся неподдержаным. Хорошо, если он в этот момент стабилен. А если его надо модифицировать или починить?

Date: 2008-05-29 08:56 pm (UTC)
From: [identity profile] jayrandom.livejournal.com
"И всё же это наша родина, сынок..." :)

Date: 2008-05-30 07:04 am (UTC)
From: [identity profile] azgar.livejournal.com
Ну, дык!
Не знаю, как у вас, а у нас в этих вопросах относительная демократия. По крайней мере, программер может высказать архитектору всё, что он думает о его художествах :)

Profile

jayrandom: (Default)
jayrandom

January 2026

S M T W T F S
    1 23
45678910
111213141516 17
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 19th, 2026 06:48 pm
Powered by Dreamwidth Studios