Một quy trình làm việc lập trình Delphi tốt là nhỏ gọn. Mở thư mục dự án, yêu cầu một thay đổi, đọc diff và chạy lệnh biên dịch của bạn. Arraydeck tuân theo vòng lặp đó với các công cụ thực, vì vậy mỗi bước để lại một thẻ trong cuộc trò chuyện mà bạn có thể mở rộng và kiểm tra, từ tìm kiếm đầu tiên đến mã thoát cuối cùng. Không có gì bị ẩn sau bản tóm tắt. Nếu một bước có vẻ sai, bạn dừng vòng lặp tại đó, từ chối thay đổi và diễn đạt lại yêu cầu, và các tệp sẽ giữ nguyên như trước bước đó. Bốn bước tương tự hoạt động trên một đơn vị nhỏ và trên một dự án có nhiều biểu mẫu. Người mới bắt đầu và những người bảo trì lâu năm đều có thể bắt đầu với tìm kiếm chỉ đọc, vì nó không thay đổi tệp nào và vẫn cho thấy cách bố trí dự án.
01
Mở thư mục
Chọn thư mục chứa các tệp .dpr và .pas của bạn làm thư mục làm việc của cuộc trò chuyện. Các công cụ tệp hoạt động bên trong nó, vì vậy hãy chọn dự án bạn muốn thay đổi và không phải thư mục cha có công việc không liên quan. Một thư mục cha chứa nhiều dự án khiến tìm kiếm đầu tiên khó đọc hơn và làm tăng nguy cơ chỉnh sửa đơn vị sai.
02
Mô tả một thay đổi
Viết một nhiệm vụ bằng lời nói đơn giản, chẳng hạn như tên của một thủ tục và những gì cần thay đổi, và chọn Auto-run, Ask first hoặc Plan only trước khi gửi nó. Các nhiệm vụ nhỏ tạo ra các diff nhỏ dễ đọc. Đặt tên cho đơn vị khi bạn biết nó; tác nhân có thể tìm nó bằng glob, nhưng một đơn vị được đặt tên sẽ thu hẹp tìm kiếm đầu tiên.
03
Đọc diff
Mở rộng thẻ edit_file, đọc mọi dòng được thêm và bị xóa, sau đó chấp nhận hoặc từ chối thay đổi. Nếu bạn đã sử dụng Plan only, hãy đọc kế hoạch trước và chuyển sang Ask first để thực hiện nó từng bước. Một diff rất dài có nghĩa là nhiệm vụ quá lớn, vì vậy hãy từ chối nó và chia yêu cầu thành hai yêu cầu nhỏ hơn.
04
Biên dịch và kiểm thử
Để Shell chạy lệnh biên dịch và lệnh kiểm thử của bạn, và đọc mã thoát thực tế trên thẻ. Một bản biên dịch thành công là một dấu hiệu tốt, nhưng chỉ các bài kiểm thử của chính bạn mới cho bạn biết liệu hành vi có còn đúng không. Hãy chạy bản biên dịch trước các bài kiểm thử, và giữ cả hai thẻ mở để một lỗi có thể được truy nguyên vào một thay đổi.
Một đơn vị nhỏ để thực hành
Arraydeck · Đơn vị mới● Ask first
Tạo Greeter.pas với một hàm Greet và kiểm tra xem dự án có biên dịch được không.
list_dir.6 mục
write_fileGreeter.pasđã lưu
read_fileGreeter.pasđã đọc
Shellbuild.batexit 0
chờ bạn xác nhận trước khi thực hiện bước tiếp theoTừ chốiChấp nhận
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 nhận một tên và trả về lời chào. Khi tên trống, nó trả lời Hello, guest, nếu không nó nối tên với văn bản, và Result giữ giá trị trả về của hàm. Phần giao diện thông báo hàm, và phần triển khai chứa mã của nó, đây là cách bố trí của mọi đơn vị.
Bốn công việc để bảo trì phần mềm Delphi
Tìm nơi lưu cài đặt
Những người mới bắt đầu học Delphi thường hỏi một giá trị kết thúc ở đâu trên đĩa. Hãy yêu cầu Arraydeck tìm nơi cài đặt được ghi. Tác nhân chạy grep cho tên cài đặt trên các tệp .pas của bạn, sau đó read_file mở đơn vị phù hợp và câu trả lời xuất hiện trong cuộc trò chuyện với tên tệp và dòng. Không có gì thay đổi. Mở đơn vị trong trình soạn thảo của riêng bạn để xác nhận rằng thủ tục là thủ tục bạn muốn, và ghi lại tên tệp trước khi yêu cầu chỉnh sửa. Tìm kiếm chỉ đọc này là một yêu cầu đầu tiên tốt trên bất kỳ dự án nào bạn không tự viết. Hãy ghi lại tệp và dòng trước khi yêu cầu bất kỳ chỉnh sửa nào, vì một tên tệp và số dòng chính xác sẽ làm cho yêu cầu tiếp theo ngắn gọn và diff tiếp theo dễ theo dõi hơn đối với bất kỳ ai đọc dự án của bạn sau bạn.
Thêm try finally xung quanh một đối tượng
Yêu cầu một trình xử lý an toàn hơn: tìm thủ tục tạo đối tượng và đảm bảo rằng nó được giải phóng. Tác nhân tìm kiếm bằng grep, đọc đơn vị và đề xuất thay đổi bằng edit_file, bao bọc mã trong try ... finally ... Free. Trong Ask first, diff xuất hiện và không có gì được ghi cho đến khi bạn chấp nhận nó. Sau đó Shell chạy lệnh biên dịch của bạn, và thẻ hiển thị mã thoát thực tế. Hãy chạy các bài kiểm thử của bạn nữa. Một bản biên dịch thành công chỉ chứng minh cú pháp, không phải rằng đối tượng được giải phóng trong mọi đường dẫn, vì vậy hãy đọc diff chậm rãi. Chạy lại các bài kiểm thử một lần nữa sau khi bạn chấp nhận diff, và giữ phiên bản cũ của đơn vị trong bản sao lưu hoặc kiểm soát phiên bản của riêng bạn cho đến khi bạn chắc chắn rằng trình xử lý vẫn giải phóng mọi đối tượng trong mọi nhánh.
Đổi tên một thủ tục ở mọi nơi
Đây là cách hiện đại hóa các ứng dụng Delphi theo từng bước nhỏ: đổi tên một thủ tục không rõ ràng, một tên tại một thời điểm. Yêu cầu tác nhân đổi tên nó trong mọi đơn vị. Nó sử dụng grep để liệt kê từng nơi tên xuất hiện, sau đó edit_file thay đổi từng tệp, và các diff hiển thị mọi dòng di chuyển. Đổi tên một lần. Xem lại tất cả các diff cùng nhau, vì một từ khớp bên trong một chuỗi hoặc nhận xét không phải lúc nào cũng là một lời gọi, sau đó biên dịch dự án và chạy các bài kiểm thử của bạn trước khi chấp nhận tệp cuối cùng. Lặp lại việc đổi tên cho thủ tục tiếp theo chỉ khi bản biên dịch và các bài kiểm thử thành công, để một lỗi luôn nằm trong một diff nhỏ và không bao giờ ẩn trong một danh sách dài các thay đổi không liên quan trên nhiều đơn vị.
Giải thích một dòng vòng lặp từng dòng
Logic tam giác Pascal được giải thích trong một đơn vị ngắn gọn tạo thành một yêu cầu thực hành công bằng. Yêu cầu tác nhân đọc vòng lặp và mô tả, từng dòng, những gì mỗi biến giữ trong mỗi lần lặp. Nó gọi read_file, sau đó trả lời trong cuộc trò chuyện mà không ghi gì, vì vậy Plan only là đủ. Kiểm tra lời giải thích bằng cách chạy đơn vị của riêng bạn thông qua lệnh biên dịch của bạn và bằng cách theo dõi vòng lặp trên giấy trong 3 hoặc 4 hàng. Nếu tác nhân và chương trình không đồng ý, hãy tin tưởng chương trình và đặt lại câu hỏi với dòng chính xác được trích dẫn. Làm tương tự cho một vòng lặp thứ hai nếu câu trả lời đầu tiên đã giúp, và yêu cầu một lời giải thích ngắn hơn khi một đoạn văn cảm thấy dài, vì bạn luôn có thể yêu cầu chi tiết hơn trên chính dòng làm bạn bối rối.