ما مقدار التخطيط الذي تقوم به قبل البدء في الكود؟

StackOverflow https://stackoverflow.com/questions/983873

سؤال

عندما تبدأ مشروعا جديدا، كيف تخطط لذلك أو كم من الوقت يستغرق؟

كود مزيف؟ مخططات المخططات الموسيقية؟

هل تحاول التفكير في جميع الفصول مقدما؟

TBH، أنا لا أخطط أي شيء. أحصل على ذلك وتفكر في الحلول كما تنشأ مشاكل. في الغالب لأن الأوقات القليلة التي أحاولت التخطيط مقدما، سأنسى دائما شيئا كبيرا، وبالتالي فإن منطق التخطيط سيكون معيبا.

هل كانت مفيدة؟

المحلول

بعد تجربة الكثير من المشاريع غير المكتملة, ، أميل إلى تنفيذ نسخة مبسطة من عمليات عملي في منهجية التنمية الشخصية الخاصة بي.

يتبعون بشكل عام الهيكل التالي:

  1. خلق وجيزة لذلك لدي هدف في الاعتبار.
  2. تنفيذ أ مخطط الطبقة لفهم البيانات التي سأتعامل معها.
  3. تنفيذ جميع الفصول.
  4. اعتمد استخدم الرسم البياني إلى الخطوط العريضة للأنشطة.
  5. سقالة استخدام حالة الاستخدام (في HTML ل WebApps)
  6. سلك السقالة، عن طريق تنفيذ اختبارات الوحدات والبناء لتمريرها.
  7. قرر إطلاق المنتج للنجاح التجاري، ثم ننسى كل شيء عن ذلك.

نصائح أخرى

الكثير أقل مما ينبغي لي

أنا دائما الغوص في، الحصول على القذرة ثم أدرك أنني صنعت فوضى. ثم العودة والتخطيط، والقيام بذلك بشكل صحيح.

لكن تعطيني مرحلة الأخطاء الفوضوية أفكارا كبيرة لن أفعلها من خلال عملية تصميم رسمية.

تعديل أنا أساسا الحصول على هذا النوع من تحطيم لوحة المفاتيح العبث عند اللعب مع أكبر / معقد. من المثير للاهتمام أن نرى مدى صعوبة الأمور قبل أن تدرك أنك في رأسي، لذلك فهي على ما يرام "تصميم هو 100٪ معيبة.

ربما ليس أفضل تقنية ... ولكن ... أخطط في التعليمات البرمجية.

كثيرا ما اكتشف الطبقة / الأساليب / الخ. أنني بحاجة فقط عن طريق القيام بذلك بهذه الطريقة. مع ذلك، أفترض دائما أن قانون التخطيط الخاص بي لن يكون الحل النهائي.

بالإضافة إلى ذلك، سأكتب الملاحظات بالتفصيل "الميزات الرئيسية" و "ميزات طفيفة / أمنية".

عندما كنت في طريقة "الشلال" في القيام بأشياء أود أن أكتب عدة مئات من وثائق الصفحات التي تظهر جميع التفاصيل التي يمكن الكشف عنها أثناء البحث. للوصول إلى هذا تومي الضخم من الوثائق سأفعل عموما

  1. تلبية وتحية الجميع المشاركين في المشروع
  2. اتخاذ ملاحظات وفيرة فيما يتعلق بالمتطلبات المتصورة
  3. إنشاء قوائم نقطية طويلة لمتطلبات المستوى العالي
  4. البدء في كسر متطلبات المستوى العالي في تفاصيل محددة جيدا
  5. ابدأ في ملء متطلبات البرامج مواصفات كلمة كلمة: SRS.
  6. إنشاء إطارات سلكية في Photoshop أو Excel أو (المفضلة) balsamiq.
  7. قم بإدراج البيانات التي يجب القبض عليها والبدء في بناء مخطط تقريبي
  8. قائمة بهياكل الطبقة في UML
  9. تحديد الجدول الزمني للمشروع
  10. الخ الخ الخ
  11. اكتب الرمز
  12. نأمل أن ما هو مطلوب هو ما لا يزال مطلوبا عند اكتمال التعليمات البرمجية!

خلال السنوات القليلة الماضية، كنت أتابع مع رشيقة (Scrum) وأخذت نهجا مختلفا تماما.

  1. يجتمع مع مالك المنتج لسماع المهام التي سيتم بناؤها
  2. تحلل قصة في المهام (التخطيط الأساسي)
  3. تعيين الوقت إلى المهام
  4. القيام ببعض التخطيط أكثر تفصيلا
  5. -> اختبار الكتابة، وكتب التعليمات البرمجية إلى اختبار الاختبار، Refactor -> تحقق في الرقص
  6. إظهار منتج العمل / الميزة
  7. بدء العملية

يجب أن أقول أن Agile يقلل من مقدار الوقت المستند الذي تقضيه المستندات التي تتحلل بمجرد أن يجفف الحبر. يحصل صاحب المنتج على النتائج بطريقة أسرع بكثير. مما يعني أنهم يحصلون على الإبقاء على المشروع يحدث في الاتجاه الصحيح مع مرور الوقت - حتى لو تغير هذا الاتجاه كما نطور.

ضع في اعتبارك أن هناك وقت ومكان لكلا طريقهما للتطوير. لا أريد بناء برنامج نفاث باستخدام رشيقة!

كل هذا يتوقف على حجم المشروع الخاص به. في بعض الأحيان قد يستغرق الأمر شهورا لجمع جميع المتطلبات وتعرف بالضبط ما يجب القيام به.

عندما يتعلق الأمر بالجزء الترميز، كل هذا يتوقف على مدى تعقيده. إذا كانت معقدة للغاية، فسنبدأ ببساطة ببساطة ما أريده. ثم سأكتب رمز الزائفة في التعليقات. ثم سأفعل الكود حول تلك التعليقات.

ومع ذلك، إذا كان الترميز بسيط. عادة ما أكتب ما يدور في ذهني واختبره.

نحن نستخدم نهج رشيق للغاية في أننا سنعمل على الأجزاء الرئيسية وبالطبع الأمور تأتي دائما إلى السطح في المتطلبات. لذلك سوف نستوعشي لأولئك لأنها تأتي. أنت لن تعرف تماما ما تريد أن تنشئ بالضبط في بداية دورة الإنشاء.

هذا رأيي.

هذا يعتمد. معظم الأشياء التي أكتبها هي واضحة إلى حد ما ويحصل على تصميم أكبر خطوة بخطوة وألاحظ ما لا يزال مفقودا وما هو كامل بالفعل. كان هناك عدد قليل من الأشياء الأكثر شعر تتطلب رسم واسعة ويعتقد أن تصاب بالحق، على الرغم من أنني لم أتوصل بعد العديد من المشاكل المعمارية التي تتطلب ذلك (لا تزال شابة وأشياء). في الغالب تلك كانت أشياء حسابية صعبة.

في فترة التدريب الداخلي العام الماضي، فوجئ مديري بسرور أنني استخدمت مخططات التدفق لمشكلة. اعتقد أنه كان الفن المفقود مع الطلاب هذه الأيام. لم أكن مفاجأة سارة جدا لأنها تعتبر مؤرخة.

على أي حال، يعتمد ذلك على الجدول الزمني للمشروع بالنسبة لي، المواعيد النهائية هي أهم شيء بالطبع.

في معظم الأحيان، أحاول على الأقل الحصول على مخطط شامل (حتى في رأسي فقط) لكيفية العمل الوحيد / النظام. أحب معرفة ما سأفعله قبل أن أفعل ذلك. يجعل البرمجة أسهل وأسرع (نحن عادة تحت المواعيد النهائية الضيقة حيث أعمل). في كل مرة لا أفعل فيها، أدى إلى مشاكل تقودني عموما لسحب الرمز ووضعها في مكان آخر. سأعترف، جاءت العملية الخاصة بي من خلال تجربة مريرة وحصلت عليها حقا في استخدام Regex في التعليمات البرمجية جنبا إلى جنب مع البحث العالمي واستبدالها.

لقد نشأ شخص آخر نقطة جيدة، وأحيانا يكون لديك نظام كبير حقا وهذا يصعب. أحاول تقسيمها إلى قطع. سأعمل على شيء واحصل عليه، وأعمل على شيء آخر لفترة قصيرة وأرى كيف يتفاعلون. حتى مع التخطيط المقبلة، أفتقد الأشياء وتضغط على رمز إعادة المرسل، ولكن على الأقل أنا لا أعيد عن كل شيء لأنني على الأقل كان لديك نوع من خطة العمل.

ذلك يعتمد على مدى تعقيد المشكلة التي تحاول حلها. إذا كنت تأخذ مشروع برمجة كبيرة، فأنت بحاجة إلى الحصول على درجة معينة من التخطيط قبل البدء. إذا لم تكن كذلك، فستفقد بشكل فظيع في تفاصيل الأشياء التي لا تتواصل تماما مع الأجزاء الأخرى في أي وقت من الأوقات.

في الأساس، حاول الحصول على عرض للعين الطيور للمشاكل التي تحتاجها لحلها. معرفة ما إذا كانت أي من المشكلات صغيرة بما يكفي بحيث يمكنك حلها ومعرفة ما قد يحتاجه إلى التواصل مع بقية الحل الخاص بك. فكر في الأمر كمربع أسود مع واجهة برمجة تطبيقات إلى العالم الخارجي.

بعد أن تم احتساب جميع كتلك، راجع ما إذا كنت بحاجة إلى تقسيم المشكلة إلى مشاكل فرعية أصغر، أو أن لديك طريقة عرض مفصلة بما يكفي من المشروع بأكمله والتي يمكنك البدء في التعليمات البرمجية.

تجربتي هي أن التخطيط يساعدك على منع المشكلات في المستقبل، مما يجعلك تفكر في كيفية تفويض الكود في المستقبل إذا كنت بحاجة إلى إضافة أي شيء إلخ.

في معظم الحالات، ستوفر الوقت الذي تقضيه في التخطيط عند تصحيح أو تمديد المشروع. أيضا، فإن وجود تخطيط تقريبي للمشروع يعني أنه سيكون من الأسهل الحصول على مساعدة في بناء الصناديق السوداء التي تحتاجها، حتى تتمكن من العمل عليها مع المزيد من الأشخاص أكثر من نفسك فقط.

اعتمادا على تعقيد المشروع، عادة ما أبدأ باستخدام الوسادة والورق، وكتابة المواصفات، وبعض المدونة الزائفة لتدفق التحكم. ثم يمكنني دائما الرجوع إلى ذلك بينما أنا ترميز. يجعل الأمر أسهل ويتطلب إعادة الإنفاق الأقل لأنك لم تفكر في المشكلة.

شخصيا، يعتمد ذلك على نطاق وتعقيد المشروع، كم من الأشخاص الذين أعملهم معهم، والتوقعات الإجمالية عند التسليم.

من المهم للغاية فهم التوقعات الإجمالية للأطراف التي ستستخدم البرنامج. يجب أن يكون لدى الجميع المشاركين في المشروع فهما مشتركا لما يجري العمل عليه - كيف يتم توصيله في العديد من الاتجاهات.

في كثير من الأحيان، لا يدرك الأطراف المشاركة في تطوير البرمجيات أن التواصل بين الأطراف هو في كثير من الأحيان الجزء الأكثر أهمية وقيمته من المشروع - والسبب الرئيسي لعادثات المشروع.

لقد بحثت بعض القهوة وصياغة سندويشات زوجين.

حقا ذلك يعتمد على المشروع. لقد عملت في بعض المشاريع في صناعة الدفاع التي استغرقت سنتين من التخطيط المفصل قبل كتابة مجموعة من التعليمات البرمجية الواحدة، وجلست وأصبحت بعض المرافق الصغيرة من بعض الطلبات فقط في رسالة بريد إلكتروني من 3D أو فنان نسيج في جلسة واحدة مع كيس من المعجنات وكوب من جو.

القدرة على تطوير مخططات المخططات الموسيقية، مخططات UML، قواميس الاستخدام، ومعايير الترميز واسعة النطاق قبل اليد هي وسيلة لطيفة للحفاظ على الأشياء المنظمة، وبالتأكيد يستحق القيام به على مشاريع أكبر، وفرق أكبر، ومشاريع مهمة. لكن هذه الأشياء تستغرق بعض الوقت، وغالبا ما تكون مبالغة في المشروعات الأصغر.

الشيء الوحيد الذي تضطر حقا لضمانه هو أن لديك فهم مناسب لمجال المشكلة. إذا لم يكن الأمر كذلك، فقد قضاء الوقت مقدما للبحث عنه حتى تفعل دائما يستحق الوقت.

IMO 5 دقائق من التخطيط قدما = ساعة واحدة من الترميز ....

في كثير من الأحيان يتعين علينا العودة وإعادة التفكير في الوضع كله، لأننا لم نخطط أي شيء.

يجب أن يكون الجزء الأكثر أهمية هو مخطط انسيابي.

التفاصيل الأخرى في بعض الأحيان يمكن الاعتناء بها على الطيران.

عند أخذ مشكلة في أي حجم، أخطط دائما في كتابة ذلك مرتين على الأقل.

ما زلت في الجامعة وأنا لم يكن لدي خبرة بعد إنشاء أنظمة برامج كبيرة الحجم، ولكن ...

أول ما يجب القيام به هو العمل ما هو مطلوب. حتى الآن بالنسبة لي، هذا عادة مواصفات مهمة، ولكن في العالم الحقيقي، فإنه ينطوي على التحدث إلى العميل. كثير.

ثم أعمل كيف أفعل ما هو مطلوب. بالنسبة للبرامج الصغيرة نسبيا التي أعمل بها، أشكل عادة في ذهني فكرة تقريبية عما سيظهر برنامجي (ما هي الأجزاء المهمة من البرنامج وكيف تتفاعل مع بعضها البعض). قد ينطوي هذا على المسامير إذا لم يكن لدي أي فكرة عن كيفية عمل جزء من البرنامج. لا أعتقد أن هذا النهج (افعل كل شيء في ذهني) سوف يطاق جيدا، لكن السؤال كان يسأل عما نفعله فعلا ...

بمجرد معرفة المزيد أو أقل ما أحاول القيام به، أجلس واكتب التعليمات البرمجية. من هنا أنني اكتشف أي مشاكل في ما كنت أفكر فيه.

لا أعتقد أنني قد استخدمت كل كود مزيف لتصميم خوارزمية. أعتقد أن pseudocode منخفض المستوى لتصميم قطع كبيرة من البرنامج.

لقد استخدمت فقط مخطط في إحدى المراتيات للمساعدة في تصميم برنامج - مرة أخرى عندما كنت أتعلم التجميع وكان جديدا جدا في البرمجة (وكان مفيدا). الرجل الأسطوري الشهر يقول ما يلي: "ومع ذلك، فإن مخطط تدفق التفجير المفصل، ومع ذلك، هو مصدر إزعاج قديم، مناسب فقط لبدء المبتدئين في تفكير الخوارزميات. ... لم أر مطلقا مبرمج من ذوي الخبرة الذين قدموا مخططات تدفق مفصلة بشكل روتيني قبل البدء في كتابة البرامج. "

أرسم مخططات التدفق واسعة النطاق واكتب رمزا زائديا للوظائف الأكثر تعقيدا. أشعر وكأنني رسم مخطط الانسجام يسمح لي بإعادة المرسل دون تقديم الأخطاء عن طريق الصدفة. مما يجعل مخططا مرئيا على الورق مثل مخطط الانسجام يساعدني أيضا في معرفة ما إذا كان منطقي فعلا صيح. هذا يعمل فقط حقا للمشاريع الصغيرة المتوسطة حيث تعرف معظم المواصفات.

مع مزيد من الخبرة، سيصبح الحاجة إلى رسم مخططات انسيابية واسعة النطاق وكتابة الدالة الكاملة الزائفة أكثر حاجة أكثر من اللازم قبل أن تصل إلى تلك النقطة، أقترح عليك بشدة أن تخطط قبل الكود.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top