1.تعلم الـDesign Patterns (نماذج التصميم) شاق قليلاً فحتى لو قرأت عنها مقالات و كتب فستشعر انك غير متشبع بها إلى الحد الذي يجعلك تستحضرها في عقلك عند كتابة برامجك بدون إفراط في استخدامها او تفريط. فزيادتها كنقصانها قد تعقد النظام اكثر مما تضيفه كفائدة له. (سلسلة عن كيفية التعلم)
2.كتاب Design Patterns للـ Gang of Four يضل المرجع الأساسي و الأول للDesign Patterns لكن البداية بقراءته لتعلمها قد لا ينجح في تعليمنا اياها. فهو يحتاج إلى مقدمات ترفعنا ثقافياً إلى مستواه سأذكرها كمراحل.
3.المرحلة الأولى هي أن تتعلم اساسيات الـOOP في لغتك , و هو معنى Class و Method و الScope من ناحية Private و Public و Protected , ثم مفاهيم مثل Static و Abstract و Sealed ... بعدها نفهم الOOP Pillars و هي الInheritance و الPolymorphism و Encapsulation و كيف نتعامل معها.
4.المرحلة الثانية : هي تعلم تمثيل ماسبق في لغة UML كـClass Diagram فقط. حيث ان كتاب الGoF مبني على رسومات الUML. و امثلة بلغة ++C و Smalltalk قد لا تكون مفهومة لك , لكن الUML واضحة.
5.المرحلة الثالثة : بعد الUML برأيي أن نبدأ بفهم مباديء SOLID. حسب علمي لايوجد كتاب مختص بها لكن قد تجدها في أحد فصول الكتب التي تتحدث عن الAgile Development او الSoftware Engineering عموما. يمكنك أن تكتفي بقراءة مقال او مقالين يتحدث عنها بلغة البرمجة التي تتعامل معها.
6.هل نحن الآن جاهزين للDesign Patterns , لنتمهل قليلاً, حيث انه يمكنك أن تقرأ الكتاب و تفهم كيف تعمل ال23 Patterns وقتها لكن قد تشعر بعدم التمكن منها , او ستكون في حيرة من حيث أي Pattern ستستخدم و متى و كيف.
7. مباديء الSOLID مرتبطة ارتباط وثيق مع الDesign Patterns و الSOLID كما ذكرت في تغريدة سابقة هي مباديء و لتمكينها نحتاج إلى Design Patterns. فعلى سبيل المثال مبدأ الDependency Inversion ستجد أنه بنيت عليه أو حوله اغلب الDesign Patterns
8. المرحلة الرابعة : برأيي ان تعلم الDesign Patterns لا يجب أن يسبق الRefactoring و ليس المقصود به تعديلات لإسم كلاس او ميثود او تقليل الكود هنا او هناك او مايسمى بالCode smell , لكن ستجد فيه ايضاً بعض الDesign Patterns و الAntipatterns.
برأيي ان كتاب Refactoring للMartin Fowler ( النسخة الثانية بلغة جافاسكريبت) و كتاب Clean Code لـRobert Martin هما افضل كتابين للRefactoring.
9. المرحلة الخامسة: بعد الRefactoring تحتاج لمن ينقلك بسلاسة إلى الDesign Patterns و هناك كتاب جميل لـ: Joshua Kerievsky عنوانه Refactoring to Patterns نصح به كبار مثل Kent Beck و Erich Gamma احد فريق الGoF ( عصابة الأربعة )
10. المرحلة السادسة : يمكنك اقتناء كتاب عن الDesign Patterns و حتى هنا افضّل أن لا يكون كتاب الGoF بل كتاب يشرح الDesign Patterns بلغة البرمجة التي تتقنها. و بعدها إن اردت مرجعاً فاقرأ كتاب Design Patterns لـGoF.
11. المرحلة السابعة : هي مرحلة التطبيق, الDesign Patterns هي حلول لمشاكل ظهرت لمبرمجين قبلنا عند تعاملهم مع الOOP, و تلك المشاكل سببها تصميم اللغات نفسها. لاحظ ان مبرمجي الFunctional Programming يتفاخرون بعدم حاجتهم لكل ذلك. مع انه كلامهم غير دقيق.
12. ما ذكرته في الأعلى هي النقاط التي تميز المحترفين و قد لا تهم المبتدئين لكن بالتأكيد منكم من يسعى جاهداً لتعلم الDesign Patterns و غيره من المفاهيم التي ذكرت خصوصاً من تعامل مع انظمة كبيرة. هناك مباديء اخرى لم اذكرها مثل GRASP لكن ما ستحصده من تلك الكتب كافي جداً.
12. إن كان البعض يرى ان ماسبق كثير فيمكنه قراءة كتب عامة تغطي تلك المواضيع بعمومية مثل كتاب Agile Software Development لRobert Martin و له نسختين بجافا و #C الكتب التي ذكرتها تستحق القراءة و الإقتناء فهي لا تتقادم مع الزمن مثل بقية الكتب. و للاسف لاتوجد كتب تختصرها في كتاب واحد.
لا يوجد تعليقات
أض٠تعليق