هذه المقالة لن تكون منطقية لجميع مطوري بايثون.
يكون الأمر منطقيًا فقط إذا كنت تعرف كيفية كتابة المصممين بلغة بايثون. هذه ليست مهارة مبتدئة. لن أقول حتى أنه متوسط ، إذا كنت تفعل ذلك بشكل صحيح.
وهذا هو السبب في أن 1٪ فقط من جميع مطوري Python سيتعلمون كتابتها ، حسب تقديري.
هذا عار. أهم المكتبات في عالم Python - Django و Flask و Pytest و SQLAlchemy والمزيد - تستخدم أدوات الزخرفة على نطاق واسع. لذلك عندما تكون في أعلى 1٪ ، يمكنك البدء في تطوير مكتبات قوية بشكل كبير بنفسك.
إذا لم تكن ضمن هذه النخبة بنسبة 1٪ حتى الآن ، فهناك طريقة للوصول إلى هناك. لكن أولاً ، سأكشف عن تصنيفي للمصممين.
ما هو المصمم؟ إنها طريقة لإضافة سلوك حول مجموعة من الوظائف أو الأساليب.
كل جزء من هذا التعريف مهم. اقرأ هذا المقال بالكامل 10 مرات ، إذا كان عليك ذلك ، حتى تفهمه.
تقوم بتطبيق مصمم على وظيفة (أو طريقة). في الواقع ، مجموعة منهم. النتيجة تسمى "وظيفة مزخرفة". (أو طريقة. ما عليك سوى إضافة "أو طريقة" في كل مرة أذكر فيها وظيفة.)
"السلوك" يعني "سطور التعليمات البرمجية". الكود الذي يتم تنفيذه قبل أن تبدأ الوظيفة التي يتم تزيينها ، أو بعد أن تعود. او كلاهما. هذا ما أعنيه بـ "قبل و/أو بعد".
"مجموعة" مهمة أيضًا. يمكنك نظريًا إنشاء مصمم ديكور وتطبيقه على وظيفة واحدة ، لكن هذا مضيعة للوقت. (ستعرف السبب بمجرد أن تبدأ في كتابتها.) عندما تقوم بإنشاء مصمم ديكور ، فإنك تفعل ذلك بقصد تطبيقه على وظيفتين على الأقل - ربما أكثر من ذلك بكثير.
حسنًا ، الفئات:
الفئة 1: واحد لواحد
معظم الديكورات المفيدة تندرج في هذه الفئة.
الفكرة هي أنه في كل مرة تقوم فيها باستدعاء الوظيفة المزخرفة ، يتم استدعاء الوظيفة المجردة مرة واحدة بالضبط.
تذكر أن المصمم يضيف سلوكًا حول الوظيفة. هذا يعني أنك لا تزال تستدعي الوظيفة الهدف. مرة واحدة بالضبط لكل مرة يتم استدعاء الوظيفة المزينة.
في الواقع ، قد يكون من الغريب بعض الشيء عدم القيام بذلك. هذه غريزة جيدة.
أحد الأسباب التي تجعل نمط "واحد لواحد" مفيدًا للغاية هو أنه منطقي. ينتج عنه رمز يسهل التفكير فيه. لكن في بعض الأحيان تحتاج إلى الخروج عن ذلك.
الفئة رقم 2: مفصول
لديك وظيفتان يجب مراعاتهما:
الوظيفة العارية. الوظيفة التي تقوم بتطبيق الديكور عليها.
والوظيفة المزخرفة. هذه هي النتيجة التي تحصل عليها ، بعد تطبيق الديكور. بمعنى ما ، هذا يخلق وظيفة جديدة.
في نمط "واحد لواحد" ، في كل مرة تقوم فيها باستدعاء الوظيفة المزخرفة ، يتم استدعاء الوظيفة العارية مرة واحدة. لكن يمكنك فصل هذين. يمكنك كتابة الكود الخاص بك بحيث لا تستدعي الوظيفة المكشوفة على الإطلاق عند استدعاء الوظيفة المزخرفة.
أو تستدعي الوظيفة العارية أحيانًا ، لكن ليس غيرها.
أو ربما تستدعي الوظيفة المجردة مرتين. او اكثر.
هل هذه فكرة جيدة؟ يمكن أن يكون. إنه أساس بعض الأنماط القوية جدًا.
كما أنه ينشئ رمزًا يصعب التفكير فيه. لأنه ينتهك "مبدأ أقل مفاجأة".
لذلك هناك مقايضة.
الصنف 3: آثار جانبية نقية
هذا مثير للاهتمام وغريب.
لكن أحد أكثر أطر عمل الويب شيوعًا في العالم يعتمد عليه بشكل أساسي.
في هذا النوع من الديكور ، لا توجد وظيفة تزيين على الإطلاق. بدلا من ذلك ، يتم تسجيل الوظيفة العارية كأثر جانبي. لذلك عندما يتم استدعاء الوظيفة المزخرفة في تطبيقك ... فأنت في الواقع تستدعي الوظيفة المجردة. لكن التسجيل له تأثيرات أخرى في مكان آخر في الكود.
فئات أخرى
هذه مجرد طريقة واحدة لتصنيف الديكور. هناك طرق أخرى مفيدة لتحطيمها.
كم يمكنك التعرف عليه في الكود الذي تكتبه ، أو في المكتبات التي تستخدمها كل يوم؟
إذا كنت تعرف بالفعل أساسيات البرمجة في Python ... كتابة نصوص بسيطة باستخدام الوظائف والقواميس والقوائم ...
وأنت مستعد لتعلم أهم أدوات وحيل وإستراتيجيات "المستوى التالي" الأكثر أهمية التي يستخدمها يوميًا أفضل 1٪ Pythonistas في العالم ...
نشرة بايثون الإخبارية القوية مخصصة لك فقط. كما يقول القارئ تشارلز هايدن:
"لقد رأيت الكثير من الكتب ، والمقالات ، والنشرات الإخبارية على مر السنين ، وكتابك هو الأفضل. ليس فقط ما تقوله عن بايثون ، ولكن كيف تبدأ التعلم."