ما هي أفضل الموارد لأنماط التصميم واستخداماتها؟

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

  •  01-07-2019
  •  | 
  •  

سؤال

عندما يتعلق الأمر باستخدام أنماط التصميم، أعتقد أن هناك ثلاثة أنواع من المحلات التجارية.أولئك الذين لا يعرفون النمط إذا أصابهم في الوجه - هؤلاء عادةً ما يفضلون أسلوب Ctrl-C / Ctrl-V لإعادة استخدام التعليمات البرمجية.أولئك الذين يقضون ساعات يوميًا في البحث عن التعليمات البرمجية القديمة الخاصة بهم على أمل تنفيذ نمط رائع آخر - عادةً ما يقضون وقتًا أطول في إعادة هيكلة تعليمات برمجية البرامج البسيطة أكثر مما قد يتم إنفاقه في مائة عام من الصيانة.وأخيرًا، أولئك الذين يسيرون في الطريق الأوسط باستخدام الأنماط عندما تكون منطقية، وترميز كل ما يأتي أولاً للحصول على الحد الأدنى من التعليمات البرمجية المكشوفة.

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

شكرًا.

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

المحلول

هناك الكثير من عائلات "الأنماط" المختلفة، ولكن إذا أخذنا سؤالك بمصطلحاته الأوسع...

أنا أوصي:

غير متصل (المفضلة):

غير متصل (شائع):

  • أنماط تصميم GoF
  • إعادة هيكلة فاولر:تحسين تصميم التعليمات البرمجية الموجودة

نصائح أخرى

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

كان أول وأفضل تعرض لي لأنماط التصميم هو مستودع أنماط بورتلاند.

استخدام "النمط" يعتمد بدرجة عالية من

  1. اللغة المستخدمة
  2. أهداف يحب المرء تحقيقها.

يمكن تسمية نمط التصميم بشكل مبالغ فيه في لغات مثل C++ وJava وما شابه.إنهم يخفون عدم المرونة الذي يظهر في جميع أنواع مشكلات الكتابة.فيما يلي رابط حول النمط الذي "يبقى" في اللغات الأقل تقييدًا:http://norvig.com/design-patterns/

مثال آخر هو البرمجة الموجهة نحو الجانب، حيث يتم "إدخال" الأشياء بكل جهد بلغة غير "مصممة" لها.

إن الفلسفة الكامنة وراء الأدوات المستخدمة لها تأثير كبير أيضًا.ما عليك سوى مقارنة برامج وحلول PHP أو Visual Basic المتوسطة في Smalltalk وCommon Lisp وHaskell وما شابه.

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

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

أقترح قراءة الرابط المذكور، ثم التحقق من عمليات التنفيذ باللغات "المختلفة"....

تحياتي فريدريش

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

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

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

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

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

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

أعتقد أن أفضل مورد ويب يحتوي على معلومات حول الأنماط وإعادة البناء - http://sourcemaking.com

أنا من أشد المعجبين بالسلسلة وقرأت العديد من كتبهم، لذا أنصح بها رئيس أنماط التصميم الأول.يمكنك قراءتها عبر الإنترنت عبر O'Reilly's رف كتب سفاري, ، لكن النسخة المطبوعة تأتي مع ملصق بأنماط رائعة أيضًا.

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

جانبا http://www.developer.com يحتوي على عدد قليل من المقالات شهريًا تتعلق بأنماط التصميم وتطبيقاتها.حظ سعيد!

أعتقد أنني يجب أن أوصي إعادة بناء التعليمات البرمجية:تحسين تصميم التعليمات البرمجية الموجودة.

Refactoring: Improving the Design of Existing Code
(مصدر: 2020ok.com)

الكثير من الأمثلة على كيفية تنفيذ الاستخدام المعقول للأنماط.

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

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

تعد أنماط التصميم مضحكة لأنك لا تعرف مكان استخدام النمط إلا عندما تفهم تمامًا النمط المطبق.أشياء مثل Strategy وObserver وIterator يمكنك استخدامها، بعد قليل من التدريب، دون التفكير كثيرًا.إذا كنت تستخدم C# فإنك تستخدم Iterator طوال الوقت (IEnumerable...) دون التفكير فيه كنمط.

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

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

سأختار بنفسي كتاب أنماط التصميم لعصابة الأربعة

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

الرأس أولاً:نمط التصميم

ثم يمكنك التحقق من الكتب الأكثر تقدمًا بمجرد حصولك على الصورة الكبيرة (الكثير من الأمثلة العملية؛-))

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