سؤال

في حين أن هناك العديد من الأمثلة الجيدة في هذا المنتدى التي تحتوي على أمثلة على الاقتران والتماسك ، فإنني أكافح لتطبيقه على الكود الخاص بي بالكامل. يمكنني تحديد الأجزاء في الكود الخاص بي والتي قد تحتاج إلى تغيير. هل سيتمكن أي خبراء Java من إلقاء نظرة على الكود الخاص بي وشرح لي الجوانب الجيدة والسيئة. لا مانع من تغييره بنفسي على الإطلاق. يبدو أن الكثير من الناس يختلفون مع بعضهم البعض وأجد صعوبة في فهم المبادئ التي يجب اتباعها ...

هل كانت مفيدة؟

المحلول

أستطيع أن أوصي كتاب آلان وجيمس شرح أنماط التصميم-منظور جديد حول التصميم الموجهة للكائنات (ISBN-13: 978-0321247148):

Cover: Design Patterns explained -- A new perspective on object-oriented design

إنه كتاب رائع عن HAS-A و هو التعتيم ، بما في ذلك التماسك والاقتران في التصميم الموجهة للكائن.

نصائح أخرى

أولاً ، أود أن أقول إن السبب الرئيسي وراء الحصول على مثل هذه الإجابات المختلفة هو أن هذا حقًا يصبح فنًا مع مرور الوقت. العديد من الآراء التي تحصل عليها لا تتجول في قاعدة أو حقيقة صعبة ، أكثر من ذلك يعود إلى التجربة العامة. بعد 10-20 عامًا من القيام بذلك ، تبدأ في تذكر الأشياء التي قمت بها والتي تسببت في الألم ، وكيف تجنبت القيام بها مرة أخرى. تعمل العديد من الإجابات لبعض المشكلات ، لكنها تجربة الفرد هي التي تحدد رأيهم.

لا يوجد سوى شيء واحد كبير حقًا سأغيره في الكود الخاص بك. أود أن أفكر في النظر في ما يسمى نمط القيادة. لا ينبغي العثور على معلومات حول هذا إما على الويب أو في كتاب GOF.

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

هذا هو 2 سنت.

بالمختصر:

التماسك في هندسة البرمجيات ، كما هو الحال في الحياة الحقيقية ، هو مقدار العناصر التي تتكون من كيل (في حالتنا دعنا نقول فئة) أنها تنتمي بالفعل معًا. وبالتالي ، فهو مقياس لمدى ارتباط كل جزء من الوظائف التي يعبر عنها رمز المصدر لوحدة البرامج.

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

الآن أصبحت المناقشة أكبر من هذا ولكن التماسك العالي (أو أفضل نوع التماسك - التماسك الوظيفي) هو عندما يتم تجميع أجزاء من الوحدة النمطية لأنها تسهم جميعًا في مهمة واحدة محددة جيدًا للوحدة.

الاقتران بكلمات بسيطة ، هو مقدار المكون (مرة أخرى ، تخيل فئة ، وإن لم يكن بالضرورة) يعرف عن الأعمال الداخلية أو العناصر الداخلية لآخر ، أي مقدار المعرفة التي لديها عن المكون الآخر.

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

في فترة طويلة:

كتبت منشور مدونة حول هذا. يناقش كل هذا بتفصيل كبير ، مع أمثلة وما إلى ذلك ، كما يفسر فوائد سبب اتباع هذه المبادئ. أعتقد أنه يمكن أن يساعد ...

يحدد الاقتران الدرجة التي يعتمد عليها كل مكون على المكونات الأخرى في النظام. بالنظر إلى مكونين A و B ، يجب أن يتغير كمية الكود في B إذا تغير. يحدد التماسك مقياس كيفية تماسك أو ارتباطًا قويًا بالوظائف المختلفة لمكون برنامج واحد. يشير إلى ما يفعله الفصل. قد يعني الانخفاض التماسك أن الفصل يقوم بمجموعة كبيرة ومتنوعة من الإجراءات ولا يركز على ما يجب القيام به. قد يعني التماسك العالي أن الفصل يركز على ما يجب أن يفعله ، أي فقط الطرق المتعلقة بقصد الفصل. ملاحظة: واجهات برمجة التطبيقات الجيدة معرض اقتران فضفاض والتماسك العالي. أحد أشكال الاقتران الضيق بشكل خاص الذي يجب تجنبه دائمًا هو وجود مكونين يعتمدون على بعضهما البعض بشكل مباشر أو غير مباشر ، أي دورة التبعية أو التبعية الدائرية. معلومات مفصلة في الرابط أدناهhttp://softwarematerial.blogspot.sg/2015/12/coupling-and-cohesion.html

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top