استفاده از نوع داده 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 برا پارامتر های تابع استفاده کنیم. (مطالعه این مطلب رو بهتون پیشنهاد می کنم)

Wiki is so important!

در محل کار جدیدم، به عنوان یه تازه وارد یه چیز بود که خیلی منو آزار داد. به خصوص اینکه من در هر لحضه که چیزی مشنوم، نمیتونم اونو به خاطر بسپرم! قضیه از اینجا شروع شد که در روز اول کاریم مسئولمون اومد و چند تا آدرس شبکه به صورت خلاصه بهم گفت.
بعد از اون یکی از همگروهی ها اومد پیشم و یه آدرس دیگه بهم گفت تا بدونم که مخزن فایل هاشون کجاست.
روز بعدش، مسئول شبکه اومد و یه برگه بهم داد که رمز شبکه ،آدرس میل، و طریقه ورود و آدرس فایلی که راهنمای کار با شبکه بود رو توش نوشته بودن. 
 خوب این ها همش باعث سردرگمی تازه واردی مثل من شد و یکمی طول کشید تا بفهمم چی رو کجا باید پیدا کنم یا با کی برای چه کاری صحبت کنم.
برای حل این مشکل چه راه حلی وجود داره؟
 جواب: Wiki



شرکت ها به راحتی میتونن اطلاعاتی مثل اطلاعات زیر رو تو ویکی قرار بدن:

- نرم افزار های کاربردی با آدرس اون ها
- درایو های مپ شده در شبکه
- لیست راهنماها
- قوانین و مقررات کاری
- FAQ
- قرار ملاقات ها
- آدرس پرتال های داخلی
- ساعت و تاریخ Meeting هایی که در گروه های برنامه نویسی انجام میشه (مثل اسکرام) یا میتینگ های مدیران
- مشخصات مربوط به گروه های مختلف برنامه نویسی (یا بقیه گروه های کاری)

حتی برنامه نویس ها هم میتونن از اون ها استفاده کنن:

- لیست نرم افزار ها و کامپوننت هایی که ساختن
- اطلاعاتی مثل تاریخ ارائه نسخه Alpha و Beta  برای هر نرم افزار
- آدرس برنامه ها در Version Control


پ.ن:در حال حاضر خودم دارم روی TWiki که Open Source هم هست کار می کنم تا روی سایت قرار بدم.
Ahmad.

دردسرهای من و محیط ویژوال استودیو ...

حدود 2سال پیش بود که شروع به برنامه نویسی با سی شارپ کردم. طی این مدت چندین بار شده که محیط ویژوال استودیو (VS IDE) منو غافلگیر کرده که خنده دار هم به نظر میرسه(البته بعضی مواقع دردناک)، که امروز می خوام 2 نمونه از اتفاق ها را اینجا بنویسم:

  • موضوع از این قرار بود که باید یک کلاسی میساختم که توش یک فانکشن استاتیک میداشت. خوب طبق معمول من کلاس رو ساختم، اما به جای اینکه واژه static رو جلوی فانکشن بنویسم، اونو جلوی اسم کلاس نوشتم، به این صورت:static class foo و وقتی که به انتهای خط اومدم و اینتر روزدم که به خط بعد برم، بوم! کل ویژوال استودیو بسته شد :O. باز ویژوال استودیو رو باز کرم و برنامه رو Open کردم و دیدم کلاس سرجاشه و دوبازه static رو جلوش نوشتم و باز هم همون مسئله قبلی تکرار شد!

  • همین 2 هفته پیش بود که داشتم رو Interface یک پروژه کار میکردم. بعد از اینکه کارم تموم شد، پروژه رو ذخیره کردم و اجرا کردم اما هنوز هیچکدوم از تغییرات من اعمال نشده بود. اینجا بود که کل Solution رو Clean کردم و دوباره همه چی رو Build کردم. اما باز هم اتفاق خاصی نیفتاد. بعد از چند دفعه تکرار، به خودم گفتم که شاید اشکال از ویژوال استودیو باشه. برای همین ویژوال استودیو را بستم و دوباره باز کردم و وقتی که پروژه رو باز کردم، دیدم هیچکدوم از تغییراتم سر جاشون نیستن. یعنی پروژه به 2 ساعت پیش برگشته بود! (البته فکر کنم این رفتار VS به این خاطر بود که من از چند COM Object تو برنامم استفاده کردم.)

جستجو