События шаблона дросселя приложения и [закрытые] мысли

Создание Элемента HTML и хранение ссылки

var newDiv = $("<div />");

newDiv.attr("id", "myNewDiv").appendTo("body");

/* Now whenever I want to append the new div I created, 
   I can just reference it from the "newDiv" variable */


Проверка, если элемент существует

if ($("#someDiv").length)
{
    // It exists...
}


Запись Ваших собственных селекторов

$.extend($.expr[":"], {
    over100pixels: function (e)
    {
        return $(e).height() > 100;
    }
});

$(".box:over100pixels").click(function ()
{
    alert("The element you clicked is over 100 pixels height");
});
34
задан lbalazscs 11 October 2015 в 20:44
поделиться

4 ответа

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

Если проект есть большой, запускаемый из нескольких регионов, тогда вам НЕОБХОДИМО достичь глобального консенсуса в отношении того, как должно выглядеть конечное состояние и как все будут сотрудничать, чтобы его достичь. Пока старое приложение душат, оно ' Для удаленных команд жизненно важно общаться каждый день, сотрудничать в работе, если это возможно, путем удаленного парного программирования и разрешать любые недоразумения или разногласия, как только они возникают. В противном случае существует опасность, что каждая региональная команда решит написать свое собственное приложение-душитель, и они встретятся где-то посередине и сразятся с ней, что сделает систему еще хуже.

Что бы вы ни делали, не выполняйте рефакторинг / удушение в ветке, отличной от основного потока разработки. Трудности слияния станут непреодолимыми.

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

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

23
ответ дан 27 November 2019 в 17:05
поделиться

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

По моему опыту, отладка со временем становится все труднее, так как неясно, возникли ли проблемные функции в новом коде или в старом коде (или общая проблема между ними).

Я знаю, что Мартин Фаулер говорит о написании кода, предназначенного для того, чтобы его задушили, но, на мой взгляд, это просто еще один способ сказать, что модульный дизайн - это хорошо, мммк; это не-противоречивым и довольно очевидно.

9
ответ дан 27 November 2019 в 17:05
поделиться

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

С уважением

2
ответ дан 27 November 2019 в 17:05
поделиться

Старое школьное название этого - «обертка». Это звучит здорово; Кому захочется возиться со старым приложением, когда можно написать что-нибудь новое и чистое, чтобы изолировать его? Проблема в том, что он создает слой слизи, и вскоре кто-то решит, что сама оболочка грязная. Что с этим делать? Еще одна обертка? На мой взгляд, такие обертки и «душители» в конечном итоге бронируют исходное приложение и в конечном итоге усложняют вам жизнь. Но люди часто выбирают краткосрочные решения, которые не являются оптимальными в долгосрочной перспективе. В конце концов, никто не заметит, пока ты не уйдешь.

4
ответ дан 27 November 2019 в 17:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: