Arraydeck
Рабочие процессы

Рабочий процесс Delphi за 4 шага

03
От начала до конца

Откройте проект, внесите одно изменение, проверьте его

Хороший рабочий процесс в Delphi — небольшой. Откройте папку проекта, запросите одно изменение, прочитайте дифф и запустите команду сборки. Arraydeck следует этому циклу с помощью реальных инструментов, поэтому каждый шаг оставляет карточку в чате, которую можно развернуть и проверить: от первого поиска до последнего кода выхода. Ничего не скрыто за сводкой. Если шаг кажется неверным, вы останавливаете цикл, отклоняете изменение и переформулируете запрос, а файлы остаются такими, какими были до этого шага. Те же четыре шага работают как для маленького модуля, так и для проекта со множеством форм. И новички, и опытные сопровождающие могут начать с поиска только для чтения, так как он не изменяет файлы и всё равно показывает структуру проекта.

01

Откройте папку

Выберите папку, содержащую файлы .dpr и .pas, в качестве рабочей папки чата. Инструменты для работы с файлами работают внутри неё, поэтому выбирайте проект, который хотите изменить, а не родительскую папку с другими задачами. Родительская папка с множеством проектов затрудняет чтение первого поиска и повышает риск редактирования не того модуля.

02

Опишите одно изменение

Напишите одну задачу простыми словами, например название процедуры и то, что должно измениться, и выберите Auto-run, Ask first или Plan only перед отправкой. Небольшие задачи дают небольшие диффы, которые легко читать. Укажите модуль, если знаете его; агент может найти его с помощью glob, но указанный модуль сужает первый поиск.

03

Прочитайте дифф

Разверните карточку edit_file, прочитайте каждую добавленную и удалённую строку, затем примите или отклоните изменение. Если вы использовали Plan only, сначала прочитайте план и переключитесь на Ask first, чтобы выполнить его шаг за шагом. Очень длинный дифф означает, что задача была слишком большой, поэтому отклоните её и разделите запрос на два более мелких.

04

Сборка и тестирование

Позвольте Shell запустить вашу команду сборки и команду тестирования, и прочитайте реальный код выхода на карточке. Успешная сборка — хороший знак, но только ваши собственные тесты скажут, правильно ли ведёт себя программа. Запускайте сборку перед тестами и держите обе карточки открытыми, чтобы при сбое можно было отследить причину до одного изменения.

Маленький модуль для практики

Greeter.pas
unit Greeter;

interface

function Greet(const Name: string): string;

implementation

function Greet(const Name: string): string;
begin
  if Name = '' then
    Result := 'Hello, guest'
  else
    Result := 'Hello, ' + Name;
end;

end.

Greet принимает имя и возвращает приветствие. Если имя пустое, он отвечает «Hello, guest», в противном случае он соединяет имя с текстом, а Result содержит возвращаемое значение функции. Раздел интерфейса объявляет функцию, а раздел реализации содержит её код, что является шаблоном для любого модуля.

Четыре задачи по сопровождению 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 строки. Если агент и программа расходятся во мнениях, доверяйте программе и задайте вопрос снова, процитировав точную строку. Сделайте то же самое для второго цикла, если первый ответ помог, и запросите более краткое объяснение, если абзац кажется длинным, потому что вы всегда можете запросить больше деталей ровно по той строке, которая вызывает затруднение.

Arraydeck для Windows

Запустите четыре шага в своём проекте

Скачать Arraydeck ↗