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

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

  • میثم هوشمند

نظرات (۲)

  • احمد تاج بخش
  • سلام....
    خیلی خوب بود....
    ما چند نوع dbo داریم؟؟؟ کلا ...
    البته کل مطلب خوب بود اما فقط من اون پایینشو فهمیدم که علتش هم مشخصه....((البته با وجود استادی مثل شما که تری و کتچ رو یادمون داد مگه ممکنه یادمون بره)) :))))))
    اگر یه ادامه مطلب و یه عکس داشت عالی می شد....
    البته نظر شخصی هست.
    منتظر پست های بعدی شما هستیم....حتما ادامه بدهید ما هم سخنان دکتر طباطبایی رو حتما درج خواهیم کرد.... :)))))
    موفق باشید
    و من الله التوفیق
  • سارا زکی زاده
  • سلام. اوایل شروع به کد زدنم و کار کردن افتضاح نام گذاری می کردم و یا اصلا با استایل کد نویسی آشنا نبودم. نام کلاس ها و متد و حتی متغیر ها رو با هر شیوه ای که خودم فکر می کردم خوبه و متوجه می شم نام گذاری می کردم. به مرور وقتی ذهنم توی این زمینه باز تر شد سبک نام گذاری هام تغییر کرد و موقع فکر کردن به این نتیجه رسیدم که ممکنه به هر دلیلی یه بنده خدایی به غیر از خودم بخواد این کد ها رو بازبینی کنه.پس باید همون جوری که در زبان بین انسان ها نحوه نگارش و علامت گذاری و Semantic خاص خودش رو داره باید توی کد نویسی هم این قوانین رو رعایت کنیم.
    ممنون.
    وفق باشید.

    ارسال نظر

    ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
    شما میتوانید از این تگهای html استفاده کنید:
    <b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
    تجدید کد امنیتی