استفاده از نوع داده Boolean

چند روز پیش یک سوال تو فروم برنامه نویس مطرح شد که برای جنسیت از یک ComboBox استفاده شده  و حالا متغیر مربوط به اون را در کلاس از چه نوعی باید تعریف کرد؟
اکثر جواب ها این بود که از نوع داده Boolean باید استفاده بشه.
من دوحالت را برای سوال بالا در نظر می گیرم:
حالت اول به این صورت در نظر می گیرم که در برنامه ما این سوال وجود داشته باشه که فرد مورد نظر ما مذکر (یا مونث) هست یا خیر؟
همونطور که از سوال پیداست جواب به صورت بله و خیر هست و در این صورت میشه از نوع داده Boolean استفاده کرد و حرفی توش نیست.
اما حالت دوم را با این سوال مطرح می کنم که جنسیت فرد مورد نظر چیست؟
باز هم در اینجا میشه از نوع داده Boolean استفاده کرد، اما شما در همه جای برنامه باید چک کنید و هم به خاطر داشته باشید که مثلا مقدار True برای مذکر ذکر شده (یا مونث). در ضمن از خوانایی کدتون هم  کم میشه.
البته نگاه ما هنوز به حالتی هست که جنسیت فقط دو حالت داشته باشه! برای مثال چند ماه پیش قرار بود بنده یک قطعه کدی برای برنامه یکی از درمانگاه ها بنویسم که در دستورالعملش  برای جنسیت فرد حالت های زیر در نظر گرفته شده بود:
1- مرد
2- زن
3- دوجنسی (نامشخص) //این نامشخص رو خود من هم نفهمیدم اینجا چیکار میکنه :)
4- تعیین نشده
خوب برای حالت بالا چیکار کنیم، یا اگر در آینده به حالت بالا نیاز شد چه کاری باید انجام بشه؟ آیا میشه باز هم از Boolean استفاده کرد؟
 از نظر بنده نوع داده Enum برای تعیین نوع جنسیت و یا موارد مشابه خیلی بهتر هست تا استفاده از Boolean . چون هم خوانایی کد را افزایش میده و هم کار با اون راحته. در ضمن نیازنیست چیزی رو به خاطر بسپریم. و نکته آخر اینکه اگر در آینده مجبور شدیم که از حالت چهار جنسیتی استفاده کنیم، خیلی راحت میتونیم جنسیت ها رو به برنامه اضافه کنیم.

 پ.ن
چند وقت پیش آقای Nick Hodges مطلبی را در وبلاگشون نوشتن با عنوان How Not To Code #2: Don’t Use Boolean Method Parameters که درباره پارامترهای Boolean برای توابع صحبت می کنن و توضیح میدن که چرا نباید از نوع Boolean برا پارامتر های تابع استفاده کنیم. (مطالعه این مطلب رو بهتون پیشنهاد می کنم)

جستجو