سير عمل برمجة دلفي الجيد يكون بسيطًا. افتح مجلد المشروع، اطلب تغييرًا واحدًا، اقرأ فرق التعديل وشغّل أمر البناء. يتبع Arraydeck هذه الحلقة باستخدام أدوات حقيقية، بحيث يترك كل خطوة بطاقة في الدردشة يمكنك توسيعها وفحصها، من أول بحث إلى رمز الخروج الأخير. لا شيء مخفي خلف ملخص. إذا بدا خطوة خاطئة، توقف عند هذه الحلقة، ارفض التغيير وأعد صياغة الطلب، وستبقى الملفات كما كانت قبل هذه الخطوة. تعمل الخطوات الأربع نفسها على وحدة صغيرة أو مشروع يحتوي على العديد من النماذج. يمكن للمبتدئين وقطاع الصيانة طويلي الخبرة البدء ببحث للقراءة فقط، لأنه لا يغير أي ملف ولا يزال يُظهر كيفية تنظيم المشروع.
01
افتح المجلد
اختر المجلد الذي يحتوي على ملفات .dpr و .pas كمجلد عمل للدردشة. تعمل أدوات الملفات داخله، لذا اختر المشروع الذي تريد تغييره وليس مجلدًا أبويًا يحتوي على عمل غير ذي صلة. يجعل المجلد الأب الذي يحتوي على العديد من المشاريع البحث الأول أصعب في القراءة ويزيد من خطر تعديل الوحدة الخاطئة.
02
صف تغييرًا واحدًا
اكتب مهمة واحدة بكلمات بسيطة، مثل اسم إجراء وما يجب تغييره، واختر Auto-run، Ask first أو Plan only قبل إرسالها. تعطي المهام الصغيرة فرق تعديل صغيرة يسهل قراءتها. سمِّ الوحدة عندما تعرفها؛ يمكن للوكيل العثور عليها باستخدام glob، لكن تسمية الوحدة تضيق نطاق البحث الأول.
03
اقرأ فرق التعديل
قم بتوسيع بطاقة edit_file، اقرأ كل سطر مضاف ومحوذ، ثم اقبل أو ارفض التغيير. إذا استخدمت Plan only، اقرأ الخطة أولاً وقم بالتبديل إلى Ask first لتنفيذها خطوة بخطوة. يعني فرق التعديل الطويل جدًا أن المهمة كانت كبيرة جدًا، لذا ارفضها ووزع الطلب إلى طلبين أصغر.
04
ابنِ واختبر
دع Shell يشغل أمر البناء وأمر الاختبار الخاص بك، واقرأ رمز الخروج الحقيقي على البطاقة. البناء الناجح علامة جيدة، لكن اختباراتك الخاصة فقط تخبرك ما إذا كان السلوك لا يزال صحيحًا. شغّل البناء قبل الاختبارات، واحتفظ بكلا البطاقتين مفتوحتين بحيث يمكن تتبع الفشل إلى تغيير واحد.
وحدة صغيرة للتدريب عليها
Arraydeck · وحدة جديدة● Ask first
أنشئ Greeter.pas مع دالة Greet وتأكد من أن المشروع يبني بنجاح.
list_dir.6 مدخلات
write_fileGreeter.pasتم الحفظ
read_fileGreeter.pasتمت القراءة
Shellbuild.batexit 0
بانتظار موافقتك قبل تنفيذ الخطوة التاليةرفضقبول
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 على قيمة الإرجاع للدالة. يعلن قسم الواجهة عن الدالة، ويحتوي قسم التنفيذ على كود الخاص بها، وهو تخطيط كل وحدة.
أربع مهام لصيانة برامج دلفي
اعثر على مكان حفظ إعداد
غالبًا ما يسأل المبتدئون الذين يتعلمون دلفي أين تنتهي قيمة على القرص. اطلب من Arraydeck العثور على مكان كتابة الإعداد. يشغل الوكيل grep لاسم الإعداد عبر ملفات .pas الخاصة بك، ثم يفتح read_file الوحدة المطابقة ويظهر الجواب في الدردشة مع أسماء الملفات والأسطر. لا يتغير شيء. افتح الوحدة في محرر الخاص بك للتأكد من أن الإجراء هو المقصود، وسجل اسم الملف قبل أن تطلب تعديلًا. يعد هذا البحث للقراءة فقط طلبًا أوليًا جيدًا لأي مشروع لم تقم بكتابته بنفسك. اكتب اسم الملف والسطر قبل أن تطلب أي تعديل، لأن اسم الملف الدقيق ورقم السطر يجعل الطلب التالي قصيرًا وفرق التعديل التالي سهل المتابعة لأي شخص يقرأ مشروعك بعدك.
أضف try finally حول كائن
اطلب معالجًا أكثر أمانًا: ابحث عن الإجراء الذي ينشئ كائنًا وتأكد من تحريره. يبحث الوكيل باستخدام grep، يقرأ الوحدة ويقترح التغيير مع edit_file، محاطًا الكود بـ try ... finally ... Free. في Ask first يظهر فرق التعديل ولا يتم كتابة شيء حتى تقبله. ثم يشغل Shell أمر البناء الخاص بك، وتظهر البطاقة رمز الخروج الحقيقي. شغل اختباراتك أيضًا. يثبت البناء الناجح صحة التركيب فقط، وليس أن الكائن يتم تحريره في كل المسارات، لذا اقرأ فرق التعديل ببطء. شغل الاختبارات مرة أخرى بعد قبول فرق التعديل، واحتفظ بالنسخة القديمة من الوحدة في النسخ الاحتياطي الخاص بك أو نظام التحكم في الإصدارات حتى تتأكد من أن المعالج لا يزال يحرر كل كائن في كل فرع.
أعد تسمية إجراء في كل مكان
إليك كيفية تحديث تطبيقات دلفي بخطوات صغيرة: أعد تسمية إجراء غير واضح، اسم واحد في كل مرة. اطلب من الوكيل إعادة تسميته في كل وحدة. يستخدم grep لذكر كل مكان يظهر فيه الاسم، ثم يغير edit_file كل ملف، وتظهر فرق التعديل كل سطر يتحرك. أعد التسمية مرة واحدة. راجع جميع فرق التعديل معًا، لأن كلمة مطابقة داخل سلسلة أو تعليق ليست دائمًا استدعاءً، ثم ابنِ المشروع وشغل اختباراتك قبل قبول الملف الأخير. كرر إعادة التسمية للإجراء التالي فقط عندما يمر البناء والاختبارات، بحيث يجلس الخطأ دائمًا في فرق تعديل صغير ولا يختبئ داخل قائمة طويلة من التغييرات غير ذات الصلة عبر العديد من الوحدات.
اشرح سطرًا بسطر في حلقة
منطق مثلث باسكال الموضح في وحدة قصيرة يجعل طلب تدريب عادل. اطلب من الوكيل قراءة الحلقة ووصف، سطرًا بسطر، ما الذي تحمله كل متغير في كل مرور. يستدعي read_file، ثم يجيب في الدردشة دون كتابة شيء، لذا يكفي Plan only. تحقق من الشرح بتشغيل الوحدة بنفسك من خلال أمر البناء الخاص بك وبتتبع الحلقة على الورق لـ 3 أو 4 صفوف. إذا اختلف الوكيل والبرنامج، ثق بالبرنامج واسأل السؤال مرة أخرى مع اقتباس السطر الدقيق. افعل الشيء نفسه لحلقة ثانية إذا ساعدت الإجابة الأولى، واطلب شرحًا أقصر عندما يبدو الفقرة طويلة، لأنه يمكنك دائمًا طلب المزيد من التفاصيل حول السطر بالضبط الذي يربكك.