Dobry przepływ pracy w Delphi jest zwięzły. Otwórz folder projektu, poproś o jedną zmianę, przeczytaj diff i uruchom polecenie kompilacji. Arraydeck realizuje tę pętlę za pomocą rzeczywistych narzędzi, więc każdy krok pozostawia kartę w czacie, którą możesz rozwinąć i przeanalizować – od pierwszego wyszukiwania do ostatniego kodu wyjścia. Nic nie jest ukryte pod podsumowaniem. Jeśli krok wydaje się błędny, zatrzymujesz pętlę w tym miejscu, odrzucasz zmianę i formułujesz żądanie na nowo, a pliki pozostają takie, jakie były przed tym krokiem. Te same cztery kroki działają zarówno na małej jednostce, jak i w projekcie z wieloma formami. Początkujący i doświadczeni opiekunowie mogą zacząć od wyszukiwania tylko do odczytu, ponieważ nie zmienia ono żadnego pliku, a jednocześnie pokazuje strukturę projektu.
01
Otwórz folder
Wybierz folder zawierający pliki .dpr i .pas jako folder roboczy czatu. Narzędzia plikowe działają w jego obrębie, więc wybierz projekt, który chcesz zmienić, a nie folder nadrzędny zawierający niezwiązane z nim pliki. Folder nadrzędny z wieloma projektami utrudnia interpretację pierwszego wyszukiwania i zwiększa ryzyko edycji niewłaściwej jednostki.
02
Opisz jedną zmianę
Opisz jedno zadanie prostymi słowami, np. nazwę procedury i to, co powinno się zmienić, a przed wysłaniem wybierz Auto-run, Ask first lub Plan only. Małe zadania generują małe diffy, które łatwo czytać. Podaj nazwę jednostki, gdy ją znasz; agent może ją znaleźć za pomocą glob, ale podanie nazwy zawęża zakres pierwszego wyszukiwania.
03
Przeczytaj diff
Rozwiń kartę edit_file, przeczytaj każdą dodaną i usuniętą linię, a następnie zaakceptuj lub odrzuć zmianę. Jeśli użyłeś Plan only, przeczytaj plan najpierw, a następnie przełącz się na Ask first, aby wykonać go krok po kroku. Bardzo długi diff oznacza, że zadanie było zbyt duże, więc odrzuć je i podziel żądanie na dwa mniejsze.
04
Zbuduj i przetestuj
Pozwól Shell uruchomić polecenie kompilacji i polecenie testów, a następnie przeczytaj rzeczywisty kod wyjścia na karcie. Pomyślna kompilacja jest dobrym znakiem, ale tylko Twoje własne testy potwierdzą, czy zachowanie programu jest nadal poprawne. Uruchom kompilację przed testami i trzymaj obie karty otwarte, aby w przypadku awalii można było wyśledzić przyczynę do jednej konkretnej zmiany.
Mała jednostka do ćwiczeń
Arraydeck · Nowa jednostka● Ask first
Stwórz Greeter.pas z funkcją Greet i sprawdź, czy projekt się kompiluje.
list_dir.6 wpisów
write_fileGreeter.paszapisano
read_fileGreeter.pasodczytano
Shellbuild.batexit 0
oczekiwanie na Twoją zgodę przed wykonaniem kolejnego krokuOdrzućAkceptuj
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 przyjmuje nazwę i zwrita powitanie. Gdy nazwa jest pusta, odpowiada Hello, guest, w przeciwnym razie łączy nazwę z tekstem, a Result zawiera wartość zwracaną przez funkcję. Sekcja interface ogłasza funkcję, a sekcja implementation zawiera jej kod, co stanowi standardowy układ każdej jednostki.
Cztery zadania przy utrzymaniu oprogramowania Delphi
Znajdź, gdzie zapisany jest ustawienie
Początkujący uczący się Delphi często pytają, gdzie wartość trafia na dysk. Poproś Arraydecka, aby znalazł, gdzie zapisywane jest ustawienie. Agent uruchamia grep dla nazwy ustawienia w plikach .pas, a następnie read_file otwiera pasującą jednostkę; odpowiedź pojawia się w czacie z nazwami plików i numerami linii. Nic się nie zmienia. Otwórz jednostkę we własnym edytorze, aby potwierdzić, że chodzi o właściwą procedurę, i zapamiętaj nazwę pliku przed poproszeniem o edycję. To wyszukiwanie tylko do odczytu to dobre pierwsze żądanie w każdym projekcie, którego nie napisałeś sam. Zapisz nazwę pliku i numer linii przed poproszeniem o jakąkolwiek edycję, ponieważ precyzyjna nazwa pliku i numer linii sprawiają, że kolejne żądanie jest krótkie, a następny diff łatwy do śledzenia dla każdego, kto czyta Twój projekt po Tobie.
Dodaj try finally wokół obiektu
Poproś o bezpieczniejszą obsługę: znajdź procedurę tworzącą obiekt i upewnij się, że zostanie zwolniona. Agent szuka za pomocą grep, czyta jednostkę i proponuje zmianę za pomocą edit_file, owijając kod w try ... finally ... Free. W trybie Ask first diff się pojawia i nic nie jest zapisywane, dopóki go nie zaakceptujesz. Następnie Shell uruchamia polecenie kompilacji, a karta pokazuje rzeczywisty kod wyjścia. Uruchom też swoje testy. Pomyślna kompilacja dowodzi tylko poprawności składni, a nie tego, czy obiekt jest zwalniany w każdej ścieżce, więc czytaj diff powoli. Uruchom testy jeszcze raz po zaakceptowaniu diffa i trzymaj starą wersję jednostki we własnej kopii zapasowej lub systemie kontroli wersji, dopóki nie będziesz pewien, że obsługa nadal zwalnia każdy obiekt w każdej gałęzi.
Zmień nazwę procedury wszędzie
Oto jak modernizować aplikacje Delphi małymi krokami: zmień nazwę niejasnej procedury, jedną nazwę na raz. Poproś agenta o zmianę nazwy w każdej jednostce. Używa grep do wypisania każdego miejsca, w którym występuje nazwa, a następnie edit_file zmienia każdy plik, a diffy pokazują każdą linię, która się przesuwa. Zmień nazwę raz. Przejrzyj wszystkie diffy razem, ponieważ pasujące słowo wewnątrz ciągu lub komentarza nie zawsze jest wywołaniem, a następnie zbuduj projekt i uruchom swoje testy przed zaakceptowaniem ostatniego pliku. Powtórz zmianę nazwy dla następnej procedury tylko wtedy, gdy kompilacja i testy przejdą pomyślnie, aby błąd zawsze znajdował się w jednym małym diffie i nigdy nie ukrywał się w długiej liście niezwiązanych ze sobą zmian w wielu jednostkach.
Wyjaśnij pętlę linia po linii
Logika trójkąta Pascala wyjaśniona w krótkiej jednostce stanowi dobre zadanie do ćwiczeń. Poproś agenta o przeczytanie pętli i opisanie, linia po linii, co zawiera każda zmienna w każdej iteracji. Wywołuje read_file, a następnie odpowiada w czacie bez pisania czegokolwiek, więc Plan only wystarczy. Sprawdź wyjaśnienie, uruchamiając jednostkę samodzielnie przez polecenie kompilacji i śledząc pętlę na papierze przez 3 lub 4 wiersze. Jeśli agent i program się nie zgadzają, ufaj programowi i zadaj pytanie ponownie z cytowaną dokładną linią. Zrób to samo dla drugiej pętli, jeśli pierwsza odpowiedź pomogła, i poproś o krótsze wyjaśnienie, gdy akapit wydaje się długi, ponieważ zawsze możesz poprosić o więcej szczegółów dokładnie w linii, która Cię myli.