الهوس بالأنواع الأساسية.
تُستخدم الأنواع الأساسية (primitives) بدلاً من الكائنات الصغيرة للمهام البسيطة (مثل العملة أو النطاقات أو السلاسل النصية الخاصة بأرقام الهواتف)، وتُستخدم الثوابت لترميز المعلومات (مثل الثابت USER_ADMIN_ROLE = 1 للإشارة إلى المستخدمين ذوي صلاحيات المسؤول)، كما تُستخدم الثوابت النصية أسماءً للحقول في مصفوفات البيانات.
##العلامات والأعراض
-
استخدام الأنواع الأساسية (primitives) بدلاً من الكائنات الصغيرة للمهام البسيطة (مثل العملة، النطاقات، سلاسل النصوص الخاصة بأرقام الهواتف، إلخ.)
-
استخدام الثوابت لترميز المعلومات (مثل الثابت
USER_ADMIN_ROLE = 1للإشارة إلى المستخدمين الذين لديهم صلاحيات المسؤول.) -
استخدام الثوابت النصية كأسماء حقول للاستخدام في مصفوفات البيانات.

void register(String email, String phone, String zip, int year, int month, int day) {
if (!email.contains("@")) throw new IllegalArgumentException("email");
if (phone.length() < 7) throw new IllegalArgumentException("phone");
}##أسباب المشكلة
مثل معظم الروائح الأخرى، يولد الهوس بالأنواع الأساسية في لحظات الضعف. قال المبرمج: "مجرد حقل لتخزين بعض البيانات!". إن إنشاء حقل أساسي أسهل بكثير من إنشاء فئة جديدة تماماً، أليس كذلك؟ وهكذا تم الأمر. ثم دعت الحاجة لحقل آخر وتمت إضافته بنفس الطريقة. وبمرور الوقت، أصبحت الفئة ضخمة ويصعب التعامل معها.
غالباً ما تُستخدم الأنواع الأساسية "لمحاكاة" الأنواع. فبدلاً من وجود نوع بيانات منفصل، يكون لديك مجموعة من الأرقام أو النصوص التي تشكل قائمة القيم المسموح بها لبعض الكيانات. ثم تُعطى أسماء سهلة الفهم لهذه الأرقام والنصوص المحددة عبر الثوابت، ولهذا السبب تنتشر على نطاق واسع.
مثال آخر على الاستخدام السيئ للأنواع الأساسية هو محاكاة الحقول. تحتوي الفئة على مصفوفة كبيرة من البيانات المتنوعة، وتُستخدم الثوابت النصية (المحددة في الفئة) كفهارس (indices) للمصفوفة للحصول على هذه البيانات.
##المعالجة
##الفوائد
-
يصبح الكود أكثر مرونة بفضل استخدام الكائنات بدلاً من الأنواع الأساسية.
-
فهم وتنظيم أفضل للكود. تكون العمليات على بيانات معينة في نفس المكان بدلاً من أن تكون مبعثرة. لا مزيد من التخمين حول سبب كل هذه الثوابت الغريبة وسبب وجودها في مصفوفة.
-
سهولة أكبر في العثور على الكود المكرر.