Meysam's Experiences

MeyEx ,محلی برای انتشار تجربیات من در زمینه های مرتبط با حوزه ی تولید نرم افزار

Meysam's Experiences

MeyEx ,محلی برای انتشار تجربیات من در زمینه های مرتبط با حوزه ی تولید نرم افزار

Meysam's Experiences

در زمینه ی تولید نرم افزار فعالیت دارم. نوشته های این بلاگ به طور خاص در مورد تمامی زمینه هایی که منتهی به تولید نرم افزار و یا تجربیاتی که در محیط کاریم کسب می کنم خواهند بود. [البته فعلا به دلیل مشغله های جانبی دیگر و داشتن مخاطب در آن حوزه ها, مطالب کمی غیر نرم افزار شده است!]
در این بلاگ سعی شده که مطالب به صورت تخصصی و دسته بندی شده منتشر شوند

تابلوی اعلانات
جدیدترین نظرات

۱ مطلب در بهمن ۱۳۹۲ ثبت شده است

۲۴
بهمن
۹۲

طی هفته ی اخیر, مجبور بودم برای رضایت مشتری تن به ایجاد تغییر و اضافه کردن یک امکان جدید به نرم افزاری که با کدهای آن اصلا آشنایی نداشتم؛ بدهم. و اعتراف می کنم که قطعا این کار یکی از کابوس های هر برنامه نویس می تواند باشد. امروز زمانی که مراحل آخر کار را طی می کردم؛ به چند مشکل برخورد کردم ؛ که تصمیم گرفتم تجربه ی آن را برای شما هم بنویسم.

چند نکته که برای کد نویسی حتما باید رعایت بشود؛ در غیر اینصورت چند ماه بعد که به سراغ کدها بروید؛ به خون نویسنده ی آن تشنه می شوید.

1. نام گذاری صحیح متغیر ها, توابع و پارامتر ها

امروز در حال بررسی کد و در حقیقت مهندسی معکوس بودم که در عین ناباوری؛ متوجه شدم که تابعی با نام GetCustomerContracts مقداری از جنس boolean بر می گرداند. کار این تابع پر کردن یک combobox بود حاوی لیست قرارداد های یک مشتری, و در صورتی که این مشتری قرار دادی نداشت, مقدار false برگشت داده می شود.

به نظر من نامگذاری مثل HasCustomerContrast یا اسامی سوالی دیگری نیز؛ چندان مناسب این تابع نیستند؛ به این دلیل که در حقیقت این تابع باید تنها یک کار انجام دهد؛ تا از اسم آن مشخص شود که کاری که تابع انجام می دهد چیست؟

2. مدیریت صحیح خطا Error Handling

در این کدها چیزی که به وفور دیده میشد؛

بلوک

try

{

// some code;

}

catch

{

//some code;

}

بود که بزرگترین اشکال آن؛ عدم نمایش پیام خطای صحیح و همچنین عدم استفاده از پراپرتی Message شی Exception بود.

شدیدا توصیه می کنم که حتما به این شکل استفاده بشود

try

{

// some code;

}

catch( Exception ex)

{

//some code;

// for example

MessaBox.Show(ex.Message);

}

به جای نمایش پیام خطا می توانید آن را در محلی مناسب ثبت نمایید تا کاربر نهایی و یا حتی خود توسعه دهندگان بتوانند به دلایل خطا حین اجرای برنامه پی ببرند.

3. نکته ی سوم در زمینه T-SQL است؛ امروز در حین دیباگ برنامه به مشکلی برخورد کردم؛ که تنها با نمایش پیام خطای شی Exception متوجه آن شدم.

مشکل این بود که نام دیتابیس در دستور select نوشته شده بود.

در نظر بگیرید

select id, name, registerdate from MyDataBase.dbo.Users

به طور کلی مشکلی نباید وجود داشته باشد. اما زمانی که این sp به یک محیط دیگر منتقل می شود و یا اینکه همان دیتابیس دچار تغییر نام می شود؛ این کوئری کار نخواهد کرد.

بنابراین همیشه این نکته را در نظر داشته باشید که نام دیتابیس ( که بعید نیست دچار تغییر شود؛ به دلایل مختلف) را در کوئری ها به کار نبرید.

بنابر این کوئری فوق به شکل ذیل صحیح و مطمئن تر خواهد

select id, name, registerdate from MyDataBase.dbo.Users

قوانین نام گذاری؛ رعایت اصول طراحی که در حالت کلی برای تسهیل امور هستند و همگی بر اساس دنیای واقعی الهام گرفته شده و مطرح شده اند؛ و همچنین در نظر گرفتن مواردی که ممکن است دچار تغییر شوند و باید از وابستگی به آن ها اجتناب کرد, می تواند به دوستی بیشتر بین شما و کد نویس قبلی کمک کند!

  • میثم هوشمند