چقدر زود دیر شد،
خوب برای آخر برنامه، قصد دارم تا ابتدا کمی به اشتباهات "ساده" و بعضا" "فاحشی" که برنامه نویسان آن ها را انجام می دهند، بپردازم،دقت کنید که این اشتباهات ممکن است خیلی ساده باشد، ولی خوب پیش می آید و خودم به عینه شاهد آن ها بوده ام، تا حالا حتما" برای شما هم پیش آمده که می بینید یک قطعه کد که به نظر ساده می آید، به درستی عمل نمی کند، بله، برای بنده هم پیش آمده است، در این لحظه ها با خود می گویم که: "اطمینان دارم که در حال سوتی دادن هستم!"، خوب از این دست موارد ممکن است برای هر کسی پیش بیاید، شما باید سعی کنید به مرور زمان "دقت" خود را علاوه بر دانش و تجربه بالا ببرید، یک برنامه نویس باید شخصی "تیزبین" باشد،
خوب شروع می کنیم،
اشتباه 1 - Indentation نامناسب ممکن است شما را فریب دهد!
قطعه کد زیر را در نظر بگیرید:
if (condition == true)
doSomething();
حالا فرض کنید من می خواهم در صورت برقراری شرط متد دیگری هم فراخوانی شود:
if (condition == true)
doSomething();
doSomethingElse();
Oops! ، چی شد؟ ممکن است یک برنامه نویس یک چند دقیقه ای با این کد کلنجار برود و فکر کند که در صورت بر قراری شرط هر دو متد اجرا می شوند، اگر من این کد را با ابزار StyleCop که آقای موسوی معرفی کردند، آنالیز کنم، با این Warning مواجه خواهم شد،
The body of the if statement must be wrapped in opening and closing curly brackets.
خوب اگر من کد را از اول به این شکل می نوشتم، دیگر گول نمی خوردم:
if (condition == true)
{
doSomething();
}
doSomethingElse();
خوب به نظر شما چرا این مطلب عنوان شد؟ با اینکه خیلی ساده به نظر می رسد؟
قصدم تکیه بر این موضوع بود که همیشه سعی کنید "دقت" خود را بالا ببرید، همچنین طوری کد بنویسید که وقتی به آن نگاه می کنید، نیاز به فکر کردن کمتری داشته باشید، خوب اینطور کد نوشتن هم نیازمند عمل به روش هایی است که سعی کردیم در این گفتگو به آن ها بپردازیم،
اشتباه 2 - جادوی Copy & Paste کار دست آدم می دهد
"شما نباید تنها به این دلیل که یک فطعه کد بر روی اینترنت است، آن را در سیستم تولید خود Cut & Paste کنید، آیا آدامسی که در خیابان پیدا کنید را می جوید؟"
جمله ی بالا از جناب Scott Hanselman نقل شده است که متن کامل آن را در اینجا قرار می دهم:
Scott's Rule of Programming - Rule# 0x3eA
Just because code is on the Internet doesn't mean you should cut and paste it into your production system. Do you chew gum you find on the street? Give code you find on the 'NET the same amount of attention you'd give advice scrawled on a public bathroom wall.
بارها در همین انجمن برنامه نویس مشاهده کردیم که شخصی کدی را از یک سایت معتبر دریافت کرده و به دلیل اینکه نتیجه ی دلخواه خود را از آن کد نگرفته است، اقدام به طرح سوال می کند، کمی که موضوع را بررسی می کنید، متوجه می شوید که این شخص اصلا" دقتی در کد مربوطه نداشته و فقط زحمت Copy & Paste را کشیده است، هر قطعه کدی هر چقدر هم که به نیازمندی های شما نزدیک باشد، باز هم باید برای قرار گرفتن در محیط تولید و پروژه ی شما مورد بازبینی قرار گیرد و در صورت لزوم، برای تطابق آن با شرایط موجود، اصلاح گردد، قبلا" هم گفته شد که برنامه نویسی یک فعالیت "مستمر" است، قطعه کدی که الان و فقط در زمان حاضر نیاز شما را برطرف کند، لزوما" فطعه کد خوبی نیست و ممکن است در آینده شما را با مشکلاتی روبرو کند، پس باید همیشه پیش از قرار دادن یک قطعه کد در پروژه خود، به دقت آن را بررسی کرده و با اطمینان کامل از آن استفاده کنید،
گاهی اوقات هم به دلیل رعایت نکردن Code Reusability، برنامه نویس، یک قطعه کدی را که در جایی از برنامه نوشته بوده، به محل جدیدی کپی کرده و قصد دارد که با تغییر دادن مقدار تنها چند متغیر، همان عملکرد را پیاده سازی کند، خوب این کار را انجام می دهد و می بیند که کد در محل جدید و با مقادیر جدید نتیجه دلخواه را نمی دهد، بعد از مدت زیادی بالا پایین کردن کد، متوجه می شود که مقدار یکی از متغیرها را تغییر نداده است و اینجاست که برنامه نویس "خطا" کرده است، تنها به خاطر اینکه تصور می کرد با کمی زرنگی می تواند در وقت صرفه جویی کند، اما با اینکار هم وقت و انرژی که می شد صرف انجام فعالیت مفیدتری شود به هدر رفت و هم اینکه یکی از اصول اساسی در کد نویسی که به آن اشاره کردم را نقض کرده است که مشکلاتی را به همراه دارد، پس یکی از جاهایی که نیاز مبرم به Code Refactoring احساس می شود، همین جاست،
اشتباه 3 - Overuse نکنید
یکی از مزایای قوائد و اصولی که در برنامه نویسی وجود دارد که ما به بخشی از آن ها اشاره کردیم، برای نظم بخشیدن بیشتر می باشد، گاهی اوقات اصل پروژه و الگوریتم به کل از یادمان می رود، از بس که غرق در این اصول می شویم و فقط بیشتر به "پیچیدگی" کار اضافه می کنیم تا اینکه بخواهیم آن را سازماندهی نماییم، این الگوها زمانی مفید خواهند بود که "در جای خود و متناسب با نیاز" از آن ها استفاده کنیم،
راستش را بخواهید، از این اشتباهات، زیاد وجود دارد، حتما" سعی خواهم کرد که در آینده بیشتر به آن ها بپردازم،
خوب، منتظر شنیدن صحبت های پایانی آقای موسوی هستیم،
اوقات خوشی را برای شما آرزو می کنم و منتظر شنیدن نظرات شما هستم،
امیدوارم که دوستان از این گفتگو لذت برده باشند، از آقای موسوی و آقای عسگری هم تشکر و قدردانی می کنم،
،/