اذهب إلى المحتوى
  • 0

ما المقصود بanti pattern

خالد مرتضى

السؤال

Recommended Posts

  • 0

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

النمط المضاد Anti Pattern هو أي نمط لا يهدف لحل مشكلة ما بل يخلق مشاكل أو يزيدها تعقيدًا، وأيضًا ملاحظة تلك الأنماط المضادة وشرح مساوءها يجعلنا نتجنب استخدامها للتخفيف من المشاكل.

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

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

كما أجاب حسن فإن النمط المضاد هو نمط يخلق مشاكل أو يزيد تعقيد التصميم, ويمكننا تحديد ما كان النمط مفيد أو مضاد عبر بعض النقاط

  1. هل النمط يقوم بمخالفة أحد مبادئ solid? (مبدأ المسؤلية الواحدة, مبدأ مفتوح للإمتداد مغلق للتعديل, مبدأ إلإستبدال لليسكوف, مبدأ فصل الواجهة, مبدأ التبعية) إن كان النمط يقوم بمخالفة تلك المبادئ إذًا يمكننا إعتباره مبدأ مضاد
  2. هل النمط يقوم بإحداث code smells ؟

بالنسبة لمصطلح code smells هو يُعبر عن بعض المشاكل التي عندما تجدها في الشفرة يُعد ذلك إشارة عن سوء التصميم , بعض علامات الcode smells

  1. data clumbs : عندما يكون لدينا مجموعة من المتغيرات يتم تمريرها عادةً سويًا , على سبيل المثال 
    public int doSomeThingWithPoint(int x, int y, int z)

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

    public class Point{
    	public setX(){
    		//set x}
    	public setY(){
    		//set y}
    	public setZ(){
    		//set y}
    
    	///getters
    
    
    }	

     

  2. data classes : في المثال السابق عالجنا مشكلة الdata clumps ولكن تسببنا في ظهور مشكلة جديدة وهي data classes أي أصناف لا يوجد بها إلا getters , setters لا يوجد بها دوال فعلية, يمكننا معالجة تلك المشكلة عبر نقل دالة doSomeThing إلى الصنف point 

    public class Point{
    	public setX(){
    		//set x}
    	public setY(){
    		//set y}
    	public setZ(){
    		//set y}
    
    	///getters
    	public doSomeThing(){
        	//do something with point
        }
    
    }	

     

  3. shotgun surgery: عندما تقوم بعمل تعديل على دالة ما وتتسبب في جعلك تحتاج تعديل على دوال واماكن اخرى كثيرة غيرها, هذا علامة على التصميم السيئ حيث من علامات التصميم الجيد أن التغيير في أحد الدوال أو الأصناف لا يؤثر على باقي البرنامج:

ويمكنك القراءة عن مبادئ SOLID عبر المقالات في هذا الرابط

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...