عندما أتى @unclebobmartin بمباديء SOLID أتى بها كحل لمنع مشكلة اسماها "تعفّن التصميم" او Rotting Design. و حدد في البداية اربعة سمات لهذا التصميم السيء ثم اضاف عليها لاحقاً ثلاثة سمات اخرى. لنستعرضها باختصار.
(سلسلة قصيرة)
السمه الأولى هو كون تصميم البرنامج "صلب" Rigid فلتغيير جزء معين منه تحتاج إلى سلسلة من التغييرات في اجزاء اخرى من الكود.
و السمه الثانية هي كونه مع صلابته السابقة "هش" Fragile فأي تغير في مكان قد يفسد أجزاء في اماكن اخرى.
السمه الثالثة لم اجد لها ترجمة افضل من "متسمّر" Immobile حيث أن اجزائه غير قابلة لإعادة استخدامها في مكان اخر.
اما السمه الرابعه فهي كونه "لزج" Viscous و هو عندما يكون من الصعب إضافة اي كود عند طلب مميزات او خصائص جديدة للنظام من دون عمل تغيير في التصميم نفسه.
ماسبق كانت هي السمات الأساسية او النسخة الأصلية في كتبه لكن عاد و اضاف عليها لاحقاً ثلاثة سمات اخرى و هي كون الكود معقد بلا حاجة Needless Complex فبه أجزاء لا نحتاجها و انما اضيفت فقط تحسباً أن يأتي يوم و نحتاجها في المستقبل.
شيء اشبه بالإكتناز القهري الذي يحذر منه مبدأ YAGNI.
و ايضاً اضاف سمة التكرار غير المبرر Needless Repetition حيث تجد نفس الكود نفسه في اكثر من مكان . اما الصفة او السمة الأخيرة فهي كونه غامض Opacity ليس من السهولة عند الاطلاع عليه أن تعرف ما يقوم به. اذا كان بعض ما ذُكر ينطبق على نظامك ففكر بSOLID.
(انتهى)