Как / если осуществить рефакторинг программу Delphi с помощью только, формируется и модули данных

Вы разместили только часть 1 по вашей ссылке. Ниже я использовал xml linq для получения элемента. Если файл огромен, вам также нужно использовать xmlreader

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication1
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";

        static void Main(string[] args)
        {
            XDocument doc = XDocument.Load(FILENAME);
            XElement resprocessing = doc.Descendants("resprocessing").FirstOrDefault();

            string header = "<?xml version=\"1.0\" encoding=\"utf-8\"?><resprocessing></resprocessing>";
            XDocument newDoc = XDocument.Parse(header);
            XElement newResprocessing = newDoc.Root;
            newResprocessing.ReplaceWith(resprocessing);
        }
    }
}
20
задан Michael Riley - AKA Gunny 26 August 2011 в 13:50
поделиться

6 ответов

Если я встречаюсь с формой (или другой класс) со слишком большой ответственностью, я обычно следую за шаблоном ниже:

  1. Определяют новый класс для логики.
  2. Создают членскую переменную нового класса в форме.
  3. Создают класс в onCreate и освобождают его в onDestroy формы.
  4. Передвигают единственную фигуру логики (например, переменная) к новому классу.
  5. Перемещение или создают все методы к новому классу.
  6. Компиляция и тест.
  7. Продолжаются, пока вся логика не помещается в новый класс.
  8. Попытка отделить логический класс от класса формы. (Можно даже работать с интерфейсами, если Вам нравится).

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

С этими шагами, можно заняться большинством этих проблем.

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

Для запуска с, я могу настоятельно рекомендовать чтение книги , Осуществляющей рефакторинг Martin Fowler.

Это даст Вам реальное понимание о том, как лучше всего разумно приблизиться, изменения представления в существующем (не OO) кодируют для улучшения пригодности для обслуживания.

я не посмотрел бы на ORM, пока у Вас нет ясного понимания о том, какие преимущества (если таковые имеются) можно было бы дать Вашему приложению.

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

Другая книга я могу высоко, настоятельно рекомендуют - по моему личному мнению, которому еще лучше удовлетворяет, чем "универсальная" книга рефакторинга Fowler - "Работа Эффективно с Унаследованным кодом" Michael Feathers . Это действительно демонстрирует главные удары, которые Вы поразите при выполнении такой работы. О, и: Рефакторинг унаследованного кода может вполне плохо обращаться с Вашей душой. Я надеюсь, что можно обработать разочарование... Мне нравится эта кавычка (не помните, где я получил ее от): "Бог смог создать мир через 6 дней, просто потому что не было никакого унаследованного кода".Удачи. ;)

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

Импорт в Моделист является моим первым действием, сталкиваясь с существующим проектом Delphi. Моделист поможет Вам в рефакторинг Ваш код потому что:

  • Это графически представляет все классы, методы, переменные, и т.д.
  • Это очень плотно , интегрировался в Delphi IDE (главное меню, всплывающее меню, отдельный проводник Моделиста, панель инструментов, сочетания клавиш). Эта интеграция позволяет Вам быстро выполнять необходимые действия, не оставляя IDE
  • , который Она имеет специализированное модуль "рефакторинга" разрешение Вам быстро создать, переместите и переименуйте классы и переменные, не имея необходимость волноваться об изменении базового кода. Моделист будет автоволшебно , меняют имена и ссылки в [1 111] весь единицы.

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

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

У меня есть encoured проблема как это с одним приложением, я начинаю делать следующее:

  1. Определяют основные классы для самой общей логики в коде.
  2. В каждой форме, переместите код, которые обрабатывают бизнес-логику в событиях как функция / процедуры в той форме.
  3. Затем Перемещение эти функции/процедуры к тем классам как [1 110] статические методы .
  4. Наконец делают только необходимый код в формах как проверка UI, и звонит в классы.
  5. Для глобальных переменных пытаются опустить столько, сколько Вы можете, и просто передать значения как параметры к методам.

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

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

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

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

После понимают то, что Вам нужен к столовой Ваш код, и если Вы хотите OPF/ORM, я предлагаю джаз SDK

1
ответ дан 29 November 2019 в 23:17
поделиться
Другие вопросы по тегам:

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