Лучшие практики для рефакторинга классического ASP?

Причиной для меня было имя функции, которое начиналось с тех же символов, что и тип:

@IBOutlet weak var tableView: CustomTableView!

, а в реализации у меня была функция, начинающаяся с CustomTableView

func CustomTableView(tableView: CustomTableView, dataForRow row:  Int) -> NSData {...}

Исправление заключалось в изменении сигнатуры функции, чтобы она не начиналась с тех же символов, что и тип (CustomTableView), например:

func dataForRow(row: Int, tableView: CustomTableView) -> NSData {...}

Это было очень ошибочное сообщение об ошибке для фактической причины в моем случае.

15
задан Joel Coehoorn 18 November 2011 в 05:16
поделиться

7 ответов

Предположения

документация для Классика система ASP довольно легка.

управление не ищет переписывание.

, Так как Вы делали рубин на направляющих, Ваш ASP.NET (VB/C#) проходим в лучшем случае

Мой опыт

я также наследовал классическую систему ASP, которой хлопнули вместе волей-неволей исключая типами excel-vba. Было много этого материала <font size=3>crap</font> (и иногда пропускающий закрывающие тэги; Argggh!). В течение 2,5 лет я добавил систему безопасности, общую библиотеку, CSS+XHTML и смог принудить вещь проверить xhtml1.1 (без надлежащего типа пантомимы, к сожалению) и создал довольно устойчивую и ajaxy систему отчетности, это используется ежедневно 80 пользователями.

я использовал jEdit с cTags (как упомянуто jamting выше), и набор других плагинов.

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

Действительно используют классы. Они ультрапримитивны (никакое наследование), но как jamting сказал, они могут быть удобными.

Располагают сценарии с отступом правильно.

Запись Комментария

внешний документ архитектуры. Я лично использую LyX, потому что это является глупым для создания приятно отформатированного PDF, но можно использовать то, что Вы любите. Если Вы используете Wiki, установили graphviz дополнение и используете его. Супер легко сделать быстрые схемы, которые могут быть легко изменены.

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

На модульных тестах бизнес-логики, единственная вещь я нашел, что работы настраивают xml-rpc слушателя у asp, который импортирует основную библиотеку и выставляет функции (не подпрограммы хотя) в любой основной библиотеке, подвключает, и затем создайте, отдельно, систему модульного теста на языке с лучшей поддержкой материала, который вызывает функции ASP через xml-rpc. Я использую Python, но я думаю, что Ruby должен добиться цели. (Который имеет смысл?). Прохладная вещь состоит в том, что человек, пишущий часть модульного теста программного обеспечения, не должен даже смотреть на код ASP, пока у них есть достойные описания функций для вызова, таким образом, они могут быть кем-то около Вас.

существует проект, названный aspunit в SourceForge, но последний выпуск был в 2004, и это отмечено как неактивное. Никогда не использовал его, но это - чистый vbscript. Поверхностный взгляд на код говорит мне, что похоже, что авторы знали то, что они делали.

Наконец, если Вы нуждаетесь в помощи, у меня есть некоторая доступность, чтобы сделать контракт, работающий дистанционно работа (возможно, 8 часов/неделя макс.). Следуйте за следом ссылки для контактной информации.

Удачи! HTH.

11
ответ дан 1 December 2019 в 03:44
поделиться

Начиная с полного переписывают рабочей системы, может быть очень опасным, я могу только дать Вам маленькую подсказку: Настройте избыточные теги, ctags, на Вашем проекте. Таким образом, можно перейти к определению функции и sub легкий, который я думаю, помогает много.

При разделении логики от "представлений". VBScript поддерживает som вид OO с классами. Я склонен писать классы, которые делают логику, которую я включаю в страницу ASP, которая действует как "представление". Затем я сцепляю вместе представление с классом как Имя пользователя: < % = MyAccount. % UserName>. Класс MyAccount может также иметь методы как: MyAccount. Вход в систему () и так далее.

Довольно примитивный, но по крайней мере Вы можете capsulate некоторый код и скрывать его от HTML.

3
ответ дан 1 December 2019 в 03:44
поделиться

Мой совет состоял бы в том, чтобы продолжить осуществлять рефакторинг, классический ASP поддерживает классы, таким образом, необходимо смочь переместить все, что все кроме дисплея кодирует во включенные файлы ASP, которые просто содержат классы. См. эту статью деталей перемещения от старомодного asp к ASP.NET

ASP

Рефакторинга Относительно будущего направления, я не стремился бы к веб-формам ASP.NET, вместо этого я пойду для новой платформы Microsoft MVC дополнение к ASP.NET), Это будет намного более простая миграция на это от классического ASP.

2
ответ дан 1 December 2019 в 03:44
поделиться

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

, Если код писался/поддерживался различными людьми, могли бы быть некоторые проблемы с непоследовательным стилем кодирования. Я нахожу, что заставление подчиняться кода назад помогает видеть вещи, которые могут быть пересмотрены.

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

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

1
ответ дан 1 December 2019 в 03:44
поделиться

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

я также нашел Работа Эффективно с Унаследованным кодом Michael Feathers быть полезным руководством для того, чтобы найти способы получить часть того старого кода под тестом.

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

2
ответ дан 1 December 2019 в 03:44
поделиться

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

1
ответ дан 1 December 2019 в 03:44
поделиться

Это очень старое, но я не удержался и добавил свои два цента. Если вам необходимо переписать и продолжать использовать классический ASP:

  • используйте JScript! гораздо более мощный, вы получаете наследование, и есть некоторые хорошие побочные преимущества, такие как использование тех же методов для проверки на стороне сервера, которые вы используете для клиентской стороны
  • , вы можете абсолютно выполнять MVC - я написал структуру MVC, и это не было что многие строки кода
  • вы также можете автоматически генерировать классы моделей, немного поработав. У меня есть код для этого, который работал достаточно хорошо
  • , убедитесь, что вы выполняете параметризованные запросы и всегда возвращаете отключенные наборы записей
0
ответ дан 1 December 2019 в 03:44
поделиться
Другие вопросы по тегам:

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