От начала до концаОткройте проект, внесите одно изменение, проверьте его
Хороший рабочий процесс в Delphi — небольшой. Откройте папку проекта, запросите одно изменение, прочитайте дифф и запустите команду сборки. Arraydeck следует этому циклу с помощью реальных инструментов, поэтому каждый шаг оставляет карточку в чате, которую можно развернуть и проверить: от первого поиска до последнего кода выхода. Ничего не скрыто за сводкой. Если шаг кажется неверным, вы останавливаете цикл, отклоняете изменение и переформулируете запрос, а файлы остаются такими, какими были до этого шага. Те же четыре шага работают как для маленького модуля, так и для проекта со множеством форм. И новички, и опытные сопровождающие могут начать с поиска только для чтения, так как он не изменяет файлы и всё равно показывает структуру проекта.
Четыре задачи по сопровождению Delphi-программ
Найти, где сохраняется настройка
Новички, изучающие Delphi, часто спрашивают, куда значение сохраняется на диске. Попросите Arraydeck найти, где записывается настройка. Агент запускает grep по имени настройки во всех ваших .pas файлах, затем read_file открывает соответствующий модуль, и ответ появляется в чате с именами файлов и номерами строк. Ничего не меняется. Откройте модуль в своём редакторе, чтобы подтвердить, что это та процедура, которую вы имели в виду, и запишите имя файла перед тем, как запросить редактирование. Этот поиск только для чтения — хороший первый запрос для любого проекта, который вы не писали сами. Запишите файл и строку перед тем, как запросить любое изменение, потому что точное имя файла и номер строки делают следующий запрос коротким, а следующий дифф — лёгким для понимания для любого, кто будет читать ваш проект после вас.
Добавить try finally вокруг объекта
Запросите более безопасную обработку: найдите процедуру, создающую объект, и убедитесь, что он освобождается. Агент ищет с помощью grep, читает модуль и предлагает изменение с edit_file, оборачивая код в try ... finally ... Free. В режиме Ask first дифф появляется, и ничего не записывается, пока вы не примете его. Затем Shell запускает вашу команду сборки, и карточка показывает реальный код выхода. Запустите и тесты. Прошедшая сборка доказывает только синтаксис, а не то, что объект освобождается на каждом пути, поэтому внимательно читайте дифф. Запустите тесты ещё раз после принятия диффа и храните старую версию модуля в своём резервном копировании или системе контроля версий, пока не будете уверены, что обработчик всё ещё освобождает каждый объект во всех ветвях.
Переименовать процедуру везде
Вот как модернизировать приложения Delphi небольшими шагами: переименуйте неочевидную процедуру, по одному имени за раз. Попросите агент переименовать её во всех модулях. Он использует grep для перечисления каждого места, где встречается имя, затем edit_file изменяет каждый файл, а диффы показывают каждую строку, которая перемещается. Переименуйте один раз. Проверьте все диффы вместе, потому что совпадающее слово внутри строки или комментария не всегда является вызовом, затем соберите проект и запустите тесты перед тем, как принять последний файл. Повторяйте переименование для следующей процедуры только тогда, когда сборка и тесты проходят успешно, чтобы ошибка всегда находилась в одном маленьком диффе и никогда не пряталась в длинном списке несвязанных изменений по многим модулям.
Объяснить строку за строкой в цикле
Логика треугольника Паскаля, объяснённая в коротком модуле, — хороший запрос для практики. Попросите агент прочитать цикл и описать, строка за строкой, что содержит каждая переменная на каждом шаге. Он вызывает read_file, затем отвечает в чате, ничего не записывая, поэтому Plan only достаточно. Проверьте объяснение, запустив модуль самостоятельно через команду сборки и проследив за циклом на бумаге на 3 или 4 строки. Если агент и программа расходятся во мнениях, доверяйте программе и задайте вопрос снова, процитировав точную строку. Сделайте то же самое для второго цикла, если первый ответ помог, и запросите более краткое объяснение, если абзац кажется длинным, потому что вы всегда можете запросить больше деталей ровно по той строке, которая вызывает затруднение.