هل هناك طريقة لتجنب السباغيتي رمز على مر السنين ؟ [مغلقة]

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

  •  21-08-2019
  •  | 
  •  

سؤال

لقد كان العديد من وظائف البرمجة.كل واحد مع 20-50 مطوري المشاريع مستمرة لمدة 3-5 سنوات.

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

والناس أكثر خبرة مني في علاج هذا طبيعي.الأمر ؟ هل يجب أن يكون ؟ ما الذي يمكنني فعله لتجنب هذا أو ينبغي أن تقبل على أنها حقيقة من حقائق الحياة ؟

تحرير:شباب, أنا معجب مع كمية ونوعية الردود هنا.هذا الموقع والمجتمع الصخور!

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

المحلول

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

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

اتصل بها على ذلك ونطلب منهم أن تغييره

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

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

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

نصائح أخرى

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

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

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

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

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

الهتافات ،

دان

و20-50 المطورين هو على الارجح المشكلة. وهذا هو عالية جدا، وسوف تحتاج إلى الكثير من التنظيم والموارد للحفاظ على كل شيء تحت السيطرة.

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

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

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

.

أعتقد أن النقطة الرئيسية هي عندما تقول

أنت فقط تحتاج إلى إعادة كتابة كل شيء من الصفر

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

استعراض الرموز معايير الترميز ، شركة السياسات.

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

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

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

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

وهذا يبدو وكأنه الكثير منهم لا تتبع بعض المبادئ الأساسية للencapsualtion والتصميم الجيد.

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

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

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

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

لا تسمح الرمز إلى أن تلتزم حتى شهدت اثنين على الأقل أزواج من العيون عليه.

إعادة بيع ديون

نسعى جاهدين الحفاظ على التصميم نظيفة قدر الإمكان.هذا ليس سهلا لكنه يستحق كل هذا الجهد.

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

والطريقة الوحيدة لتجنب ذلك هو تغيير الموقف:

و"إن الموقف أن المطورين رشيقة لديها نحو تصميم البرنامج هو نفس الموقف الذي الجراحين لديها نحو إجراء العقيمة. إجراء عقيم هو ما يجعل عملية جراحية <م> ممكنة . وبدون ذلك، فإن خطر الإصابة تكون بعيدة عالية جدا للتحمل. المطورين رشيقة يشعر بنفس الطريقة عن مخططاتهم. مخاطر السماح حتى أصغر قليلا من تعفن تبدأ مرتفع جدا لتحمل ".     مارتن C. روبرت "مبادئ رشيق، أنماط، والممارسات في C #"

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

وحظا سعيدا!

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

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

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

وبول.

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

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

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

لا

:)

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

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

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

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

وعن كود نقد وربما ملكية التعليمات البرمجية.

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

ومراجعة الكود هو الوقت عند عرض التعليمات البرمجية.

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

scroll top