البنية النظيفة — قاعدة التبعية

البنية النظيفة على لوحة تفاعلية: الكيانات، وحالات الاستخدام، ومحوّلات الواجهة، والأطر، وقاعدة التبعية التي تُبقي الجوهر مستقلاً.

تنظّم البنية النظيفة الشيفرة في طبقات متحدّة المركز — الكيانات، وحالات الاستخدام، ومحوّلات الواجهة، والأطر — تحت قاعدة واحدة: التبعيات تتجه إلى الداخل دائماً، فلا يعتمد الجوهر على أداة أبداً.

البنية النظيفة — قاعدة التبعية

لوحة FlowJam التفاعلية لهذا الشرح — كل مسار وصف وسهم أعلاه جزء من مخطط QueryChart حقيقي يمكنك فتحه وتعديله.

كيف تقرأ هذا الشرح المرئي

  • اقرأ العمود الأيسر من الأعلى إلى الأسفل بوصفه الطبقات الأربع، من الطبقة الداخلية القصوى (الكيانات) إلى الخارجية القصوى (الأطر).
  • ثم اقرأ العمود الأيمن من الأعلى إلى الأسفل بوصفه القاعدة التي تحكمها: التبعيات إلى الداخل، والمحوّلات في الوسط، والجوهر دون مساس.
  • الأسهم تسري من الخارج إلى الداخل في جوهرها وإن كانت مرسومة من اليسار إلى اليمين — فشيفرة كل طبقة خارجية تعتمد على الطبقة التي بداخلها.

الطبقات الأربع

«الكيانات — قواعد العمل على مستوى المؤسسة» هي الحلقة الداخلية القصوى: الكائنات والقواعد الموجودة مهما كانت طريقة تقديم التطبيق — عميل، وفاتورة، والقاعدة التي تمنع دفع الفاتورة مرتين. و«حالات الاستخدام — قواعد خاصة بالتطبيق» تنسّق الكيانات من أجل سيناريو واحد في التطبيق. و«محوّلات الواجهة — متحكّمات وعارضات» تترجم بين حالات الاستخدام والعالم الخارجي، و«الأطر وبرامج التشغيل — واجهة المستخدم وقاعدة البيانات والويب» هي الحلقة الخارجية من الأدوات.

قاعدة التبعية

«التبعيات تتجه إلى الداخل، لا إلى الخارج أبداً» هي القاعدة الوحيدة التي توجد هذه البنية كلها لفرضها: فتبعيات الشيفرة المصدرية تعبر دائماً إلى الداخل. و«الطبقات الخارجية تخاطب عبر المحوّل، لا الجوهر مباشرة» هي الآلية — إذ تعلن حالة استخدام واجهةً لحفظ فاتورة، وينفّذها محوّل قاعدة البيانات، فلا تستورد حالة الاستخدام مكتبة قاعدة البيانات أبداً.

العائد

«بدّل الأطر دون المساس بالجوهر» و«الجوهر لا يستورد إطاراً أبداً» هما اختبار ما إذا كانت القاعدة قد حُفظت: انتقل من قاعدة بيانات أو واجهة مستخدم إلى أخرى ولن تتغيّر الكيانات وحالات الاستخدام إطلاقاً. وهذا هو عرض القيمة بأكمله — فالشيفرة الأهم والأغلى معزولة عن الأسهل استبدالاً.

العلاقات الرئيسية والخلاصات

  • التبعيات تتجه إلى الداخل دائماً — وهذه القاعدة الواحدة هي هذه البنية نفسها.
  • الجوهر يعلن الواجهات؛ والحلقات الخارجية تنفّذها — والمحوّل هو خط التماس.
  • الكيانات وحالات الاستخدام مستقلة عن الأطر بحكم التصميم.
  • العائد هو قابلية الاستبدال: بدّل واجهة المستخدم أو قاعدة البيانات أو إطار الويب دون المساس بالجوهر.
  • البنية النظيفة تدور حول اتجاه التبعية، لا حول عدد الطبقات.

متى تستخدم هذا الشرح المرئي

  • تعليم قاعدة التبعية لفريق قبل أن يبني هيكل قاعدة شيفرة كبيرة.
  • مراجعة بنية قائمة: فحالة استخدام تستورد مكتبة واجهة مستخدم أو قاعدة بيانات هي مخالفة للقاعدة، وهي مرئية على اللوحة.
  • التخطيط لإعادة كتابة أو ترحيل — فاللوحة تبيّن أي الطبقات يجب أن تبقى وأيها يمكن استبداله.

كيف تعمل

  1. أعد تسمية الطبقات لتطابق حزمتك التقنية

    استبدل أسماء الحلقات العامة بأسمائك الحقيقية — كياناتك، وأصناف حالات الاستخدام لديك، ومتحكّماتك وبوّاباتك، وأطر واجهة المستخدم وقاعدة البيانات التي تستخدمها فعلاً.

  2. ارسم خطوط تماس الواجهات

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

  3. حدّد المخالفات

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

  4. اعرض عملية استبدال حقيقية

    أضف فرعاً يُستبدل فيه إطار خارجي بآخر ويتصل كلاهما عبر المحوّل نفسه، وينتهي عند الجوهر الذي لم يتغيّر.

الأسئلة الشائعة

ما هي البنية النظيفة؟

هي نمط معماري شاع بفضل Robert C. Martin، ينظّم الشيفرة في طبقات متحدّة المركز: الكيانات في المركز، ثم حالات الاستخدام، ثم محوّلات الواجهة، ثم الأطر وبرامج التشغيل عند الحافة. وقاعدتها الحاكمة هي أن تبعيات الشيفرة المصدرية تتجه إلى الداخل دائماً، فلا تعتمد قواعد العمل الجوهرية على آليات التقديم — واجهة المستخدم أو قاعدة البيانات أو إطار الويب.

ما هي قاعدة التبعية؟

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

ما الفرق بين البنية النظيفة والبنية الطبقية؟

البنية الطبقية تفصل المسؤوليات أيضاً، لكن تبعياتها تسري عادةً من الأعلى إلى الأسفل — فطبقة العرض تستدعي طبقة الخدمات، وهذه تستدعي طبقة البيانات. أما البنية النظيفة فتقلب ذلك: إذ يجلس جوهر العمل في المركز ويعتمد عليه كل ما عداه، فيكون اتجاه التبعية هو السمة المميّزة. وسهم الشرح المرئي المتجه إلى الجوهر هو هذا الفرق وقد صار مرئياً.

هل تستحق البنية النظيفة العناء في مشروع صغير؟

ليس دائماً — فالطقوس تكلّف أكثر مما تعيد حين تكون قواعد العمل تافهة أو حين يكون الفريق شخصاً واحداً. وهذا النمط يستحق كلفته حين يكون منطق العمل معقّداً بما يكفي ليعمّر أطول من الأدوات، أو حين يُرجّح تغيّر واجهة المستخدم أو قاعدة البيانات. ومربعات العائد في اللوحة تذكر المقايضة بصدق: فأمان الجوهر يُشترى بطبقات المحوّلات.

عدّل هذا الشرح المرئي في QueryChart (FlowJam)

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

عدّل هذا الشرح المرئي في QueryChart (FlowJam)

المزيد في الشروحات المرئية