Гниющий дизайн и вязкость - PullRequest
12 голосов
/ 29 мая 2009

Роберт К. Мартин в одной из своих книг упоминает о вязкости как признаке гниения конструкции. Я не совсем понимаю идею вязкости в разработке программного обеспечения. Не могли бы вы привести несколько примеров?

Ответы [ 3 ]

13 голосов
/ 29 мая 2009

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

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

12 голосов
/ 29 мая 2009

У него два применения: вязкость конструкции и вязкость среды.

Во-первых, жидкости с высокой вязкостью, такие как зубная паста и арахисовое масло, не текут так гладко, как жидкости с низкой вязкостью, такие как вода.

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

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

3 голосов
/ 29 мая 2009

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

В программном обеспечении это означает, насколько сильно ваш код противостоит изменениям. Если у вас много зависимостей, тогда может быть сложно изменить основной класс, что приведет к неидеальным обходным решениям, которые, в свою очередь, увеличат сопротивление кода (увеличив его вязкость). Хорошо разработанный код (низкая вязкость) можно обновлять и добавлять, не оказывая существенного влияния на приложения или другие классы, которые зависят от него.

...