الاستراتيجيات

لقد قدمت أساليب مختلفة لتطوير البرامج في الكتاب، لذا أردت جمعها معاً هنا.
أساس كل الاستراتيجيات هي التطوير التصاعدي (incremental development)، التي تتم كما يلي
1. ابدأ مع برنامج يعمل ينفذ شيء مرئي، مثل طباعة شيء ما.
2. أضف عدداً قليلاً من أسطر الشفرة كل مرة، واختبر البرنامج عند كل تغيير.
3. كرر الخطوات حتى يعمل البرنامج ما يفترض به أن يعمل.
بعد كل تغيير، يجب أن ينتج البرنامج بعض التأثيرات المرئية الناتجة عن اختبار الشفرة الجديدة. هذا الأسلوب في البرمجة يمكن أن يوفر الكثير من الوقت.
بما أنك تضيف بضعة أسطر من الشفرة فقط في كل مرة، فسيكون العثور الأخطاء النحوية سهلاً.
وبما أن كل نسخة من البرنامج تولد نتيجة مرئية، فأنت تختبر بشكل مستمر نموذج كيفية عمل البرنامج في عقلك. إذا كان نموذجك العقلي خاطئاً، سيواجهك التعارض (وستملك الفرصة لتصحيحه) قبل كتابة الكثير من الشفرة الفاسدة.
صعوبة التطوير التصاعدي تكمن في صعوبة اكتشاف مسار مناسب من نقطة البداية وحتى الوصول إلى برنامج كامل وصحيح.
توجد عدة أساليب ممكنة لتساعدك بذلك:
التغليف والتعميم (Encapsulation and generalization): إذا لم تكن تعلم بعد كيفية تقسيم الحسابات إلى عمليات، ابدأ بكتابة الشفرة في main، ثم ابحث عن القطع المتماسكة لتغلفها في عملية، وتعميمها بشكل مناسب.
النمذجة السريعة (Rapid prototyping): إذا كنت تعلم ما هي العملية التي تريد كتابتها، لكنك لا تعرف كيفية كتابتها، ابدأ بمسودة سريعة تعالج أبسط حالة، ثم اختبرها مع الحالات الأخرى، وسّعها وصححها على طول الخط.
الأدنى أولاً (Bottom-up): ابدأ بكتابة العمليات البسيطة، بعد ذلك اجمعها في حل متكامل.
الأعلى للأسفل (Top-down): استعمل الشفرة الزائفة (pseudo-code) لتصميم بنية الحسابات وتعريف العمليات التي ستحتاج. ثم اكتب العمليات واستبدل الشفرة الزائفة بالشفرة الحقيقية.
على طول الطريق، قد تحتاج بعض السقالات للدعم؛ مثلاً، يجب أن يكون لكل صنف عملية toString تسمح لك بطباعة حالة الكائن بصيغة يقدر البشر على قراءتها. هذه العملية تفيد في تنقيح البرنامج، لكنها في العادة ليست جزءاً من البرنامج النهائي.


lk ;jhf ;dt jt;v ;uhgl ;lfd,jv gyi [hth hgtwg hgjhsu uav j',dv hgfvhl[ : hghsjvhjd[dhj hghsjvhjd[dhj hgjhsu hgfvhl[ hgtag jt;v j',dv [hth uav ;lfd,jv ;jhf ;dt