لا تتعلم الأنماط ، وتعلم المفاهيم

مساء الخير (أو في المساء أو في الصباح ، وهذا يتوقف على وقت نشر هذا المنشور).

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

هكذا


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

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

يرجى ملاحظة أنني لم أذكر مثال OOP و MVC و ORM - فهذه مفاهيم لها معنى ونطاق محدد للغاية ، مع حد أدنى من التجريد.

يقول OOP: "المتأنق ، لقد وجدت طريقة واضحة ومفهومة لتقديم البرامج."
تقول MVC: "رجل ، سيكون من الأفضل إذا قمت بتقسيم الكود ، وقواعد الفصل خاضعة للقطع".
يقول ORM: "pss ، رجل ، لقد وجدت للتو طريقة للتوفيق بين أيديولوجيتين مختلفتين - OOP و DB."
كل شيء واضح هنا.

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

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

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

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

ما أود قوله للمبرمجين المبتدئين:

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

ما أود أن أقوله لجورو هبر:

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

وأخيراً: المقال ، بالطبع ، موضوعي ، أنا لا أدعو أي شخص لأي شيء (للقتال مع المصانع). هذا مجرد رأيي :)

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

أتمنى لك يومًا سعيدًا!

Source: https://habr.com/ru/post/ar468885/


All Articles