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 ↗