تقسيم التطبيق
الدرس 22 من 38 · التصميم · 4 دقيقة و37 ثانية
الفيديو الأصلي باللغة الإنجليزية. إذا تعذّر تشغيله هنا، شاهده على موقع المؤلف. التفريغ النصي العربي الكامل أدناه.
الموارد
التفريغ النصي
[00:03] في الوحدة السابقة، تحدثنا عن نموذج C4 لتصور معمارية البرمجيات ورأينا أول مستويين من النموذج، مخططات سياق النظام ورسومات الحاويات. الآن حان الوقت لتكبير الصورة أكثر إلى المستوى الثالث ومعرفة أين المحتويات الفعلية لبنات البناء لحاويتنا، والتي في حالتنا هي التطبيق الذي نقوم ببنائه. في نموذج C4. نطلق على هذه المكونات لبنات البناء.
[00:30] ولكن بالنسبة لأنظمة الواجهة الأمامية، أود استخدام وحدات الكلمات بدلاً من ذلك نظرًا لوجود بعض الاختلافات الطفيفة بين الوحدات والمكونات، وأيضًا لأنه في تطوير الواجهة الأمامية نستخدم عادةً مكون الكلمة للإشارة إلى مكونات واجهة المستخدم مثل مكونات React وما إلى ذلك. لذلك من أجل تجنب الارتباك، أنا بدلاً من ذلك نسميها وحدات. يمكنك التفكير في الوحدات كمخاوف المستوى الأعلى للتطبيق الخاص بك.
[00:51] لذلك عندما نبدأ في تقسيم التطبيق إلى أجزاء أصغر أو تطبيقات مصغرة أصغر أو مشاكل صغيرة، فإن الطبقة الأولى من هذا التقسيم هي تقسيمها إلى وحدات. المسارة التي أحب أن أجد بها الوحدات هي، وهي وحدة نظامي، هي إلقاء نظرة على المسارات. ليس لدينا المسارات حتى الآن. إنهم غير موجودين. لكنني أعتقد أنه من الجيد التكهن قليلاً حول كيفية ظهورها من خلال النظر إلى مواصفات واجهة المستخدم الخاصة بها، على سبيل المثال، أو بعض التعريفات في مواصفات المشاريع ومحاولة الخروج بقائمة أولية للطرق التي قد تكون لدينا.
[01:26] سيساعدنا هذا في هيكلة تطبيقنا في الشيفرة لاحقًا أيضًا. لا يجب أن تكون هذه هي المسارات النهائية. قد نغير اسم المسارات، ولكن من هذا يمكننا أن نأخذ اسم الوحدات التي سنقوم ببنائها. ومن هذه المسارات، يمكننا التوصل إلى قائمة أولية من الوحدات. لذلك لدينا وحدة منزلية، وحدة تسجيل، استلام التسليم، ملف تعريف المطعم، البحث وهلم جرا.
[01:48] قد تلاحظ أن بعض وحداتنا مثل المطعم لها علاقة مع أحد كياناتنا. لدينا أيضًا كيان مطعم، لكنني أحاول الابتعاد عن محاولة تعيين بعض الوحدات دائمًا من 1 إلى 1 كيان، لأنه ليس كل الوحدات كيانات وليس كل الكيانات وحدات. على سبيل المثال، لدينا بحث، وهو أحد وحدات نظامنا. لديها مجموعة من الميزات الخاصة بها، ومجموعة من المكونات والوظائف الخاصة بها، وهي جزء كبير من التطبيق، لكنها ليست كيانًا حقيقيًا. لا يوجد بحث كيان البحث. إنها أشبه بعملية أو إجراء يمكن أن تقوم به كيانات أخرى.
[02:26] لذا فإن محاولة تقييد الكيانات أو محاولة ربط الكيانات والوحدات دائمًا يمكن أن يؤدي إلى اتفاقيات غريبة أو تحديد كيانات ليست كيانات حقيقية. فقط من أجل الامتثال لهذا التقييد. الآن، هذا لا يعني أنه سيكون هناك دائمًا علاقة 1 إلى 1 بين المسارات والوحدات أيضًا.
[02:49] لذلك كنت سأضع هذه القاعدة. على سبيل المثال، هنا لدينا مسار فرعي، وهذا هو المستوى الثاني الذي يمثل المواد الغذائية لدينا أو عناصر القائمة. عناصر القائمة لديها الكثير من التعقيد. إذا نظرت إلى واجهة المستخدم، سترى أن لديهم الكثير من خيارات عناصر القائمة والفئات وما إلى ذلك. لذلك سأعتبرهم وحدة خاصة بهم، حتى لو كانوا جزءًا من المسار الرئيسي للمطعم.
[03:11] في هذه الحالة، هذا شيء يكسر القاعدة لأنه لا يوجد الآن عنصر أو عنصر في القائمة. المسار الرئيسي هو مجرد جزء من مسار المطعم، ولكن هذه الوحدة ليست جزءًا من وحدة المطعم. إنه شيء خاص به. لدينا أيضًا بعض الوحدات التي لا تنتمي إلى أي طريق معين. عربة التسوق، على سبيل المثال، هي شيء يظهر في كل صفحة وحتى لا يكون لها مسار مخصص خاص بها، لكنها لا تزال شيئًا سأعتبره وحدة لأنه لديه الكثير من الوظائف.
[03:40] لذلك بمجرد أن نحصل على قائمتنا الأولية من الوحدات، سنقوم من الناحية النظرية، والمضي قدما وتنفيذها واحدا تلو الآخر. يمكننا تقسيمها بين الأشخاص المختلفين في الفريق ويمكن لكل شخص أن يأخذ وحدتنا الخاصة، ويطورها بالكامل وينتقل إلى الوحدة التالية. لكننا بالطبع نعرف أن الأمور في الواقع لا تسير بهذه الطريقة. سيكون هناك دائمًا بعض الوظائف المشتركة أو الشيفرة المشترك والمكونات بين الوحدات المختلفة، وسيكون هناك دائمًا تبعيات بين الوحدات.
[04:06] على سبيل المثال، عناصر القائمة، ربما وحدتين، لكنها غير موجودة بمفردها. ترتبط ارتباطا وثيقا بالمطاعم. بدون المطاعم، لن يكون لدينا عناصر قائمة الطعام. لذلك سيكون هناك دائمًا مستوى معين من التواصل بين هاتين الوحدتين. حتى الآن، سنركز فقط على تحديد الوحدات التي لدينا في التطبيق وفي الوحدة التالية. عندما نتحدث عن الوحدة التالية من الدورة، عندما نتحدث عن التنفيذ، سنرى كيف يمكننا التعامل مع هذه الحالات من الوظائف المشتركة أو التبعيات عبر الوحدات.