روش برخورد با مسایل در برنامه نویسی
پیش از شروع: جستجو
امروزه بیش از چند دهه از پدید آمدن مهارتی به نام برنامه نویسی گذشته است. بنابراین بسیار محتمل هست که کسی همانند ما قبلا با این مشکل یا حتی مورد مشابه آن برخورد کرده باشد و اگر به اندازه کافی خوش شانس باشیم شاید با کمی تستجو در اینترنت بتوانیم راه حل رو پیدا کنیم.
سایتهای زیادی روی اینترنت هستند که منبع بزرگی از مشکلات و راه حل های ممکن رو در اختیار ما قرار میدهند، پس مثل همیشه به بهترین دوست برنامه نویسان دنیا یعنی گوگل مراجعه کنید. فراموش نکنین که گوگل هیچ وقت ما رو بر اساس چیزی که جستجو می کنیم قضاوت نخواهد کرد. در صورتی که به راه حل نرسیدید ادامه دهید.
گوگل بهترین دوست ماست.
نخست: درک درست مساله
از قدیم گفته اند اگر میخوای دشمن رو شکست بدی باید اول درست اون رو بشناسی، با کمی تغییر میتونیم این مثال رو به برنامه نویسی هم تعمیم بدهیم، شاید اصلی ترین دشمن هر برنامه نویس مشکلات و مسایلی هستند در مسیر تولید پروژه باید با اونها دست و پنجه نرم کنه. از پیدا کردن راه حلی برای استفاده بهینه از منابع، بررسی های امنیتی، جلوگیری از هدر رفت منابع تا توسعه الگوریتم هایی که تا کنون وجود نداشته اند.
بنابراین تا زمانی که درک درستی به نسبت به مساله پیدا نکرده ایم نباید درگیر پیدا کردن راه اون مساله بشیم. گام نخست درک درست مساله است ، پس مساله رو بررسی کنین. تمامی جوانب مساله بررسی کنین، گاهی برای درک بهتر یک مساله باید نه تنها مساله رو بررسی کنیم بلکه باید نقیض اون رو هم بررسی کنیم. این کار رو باید آن قدر ادامه بدیم تا با مساله احساس راحتی کنیم و درک درستی از اون به دست بیاریم.
دوم: با قلم و کاغذ مساله را خلع سلاح کنید
خب این یعنی چی؟ به زبان ساده یعنی اینکه راه حلی که برای مساله به ذهنتون میرسه رو روی کاغذ بنویسین و با داده های آزمایشی امتحانش کنین. اگر جواب داد که هیچ اما اگر درست کار نکرد راه حل جدیدی را طراحی و امتحان کنین. زمانی که به راه حل درست رسیدید باید با داده هایی که ممکن در راه حل ما استثنا باشند آزمایش کنیم، در این مرحله است که راه حل ما به بلوغ میرسد. آنقدر مساله را با راه داد ها و شرایط مختلف بررسی کنین تا به قول معروف م لای درز آن نرود! دقت کنین تا اینجا هنوز به سراغ کیبورد و کامپیوتر نرفتیم.
سوم: بهینه سازی
در این مرحله باید راه حلی که با داده های استاندارد و داده های استثنایی به درستی کار کرده است را بهینه کنیم و ببینیم که میتوانیم به روش ساده تری همان کار را انجام دهیم. همچنین می توانیم بخشهایی که تکرار می شوند را به صورت جنرال و کلی تر پیاده سازی کنیم و نهایتا،مهمترین بخش اینکه اگر بخشی در راه حل ما تکرار می شوند، تکرار را کمتر یا حتی حذف کنیم.
چهارم: به زبان شبهه کد راه حل را بنویسید
ساختار کلی برنامه را به زبان شبهه کامپیوتری که به pseudo code بنویسید. این روش نوشتن قطعا به تولید برنامه کامپیوتری که بتواند اجرا شود منتهی نخواهد شد. چرا که اصلا زبان برنامه نویسی نیست، اما می تواند در شناخت کامل راه حل و اینکه قرار است در برنامه نهایی چگونه کار کند به ما کمک کند. برای مطالعه بیشتر در مورد شبهه کدها به این لینک مراجعه کنین. همیچنین می تونید از فلوچارت یا نمودار هم استفاده کنید.
پنجم: سلام کامپیوتر
برای مشتاقان کامپیوتر و کیبورد این بخش احتمالا لذت بخش ترین قسمت است، شبهه کد خود را به زبان مورد علاقه خود (برای من جاوا) بنویسید. صبور باشید و همه مراحلی که در راه حل خود پیش بینی کرده اید را وارد کامپیوتر کنین.
الان دیگر با کلاسها، کتابخانه ها و متد ها سر و کار دارید. راه حل شما ممکن است از چند خط کوتاه تا چندین و چند کلاس و کتابخانه باشد. تا انتها و با دقت بنویسید.
ششم: آزمایش
این مرحله درواقع تکرار همان مرحله دوم است اما این بار با کامپیوتر، تکه کد یا برنامه خود را با داده های واقعی آزمایش کنین، اگر کار کرد با داد های استثنا هم تست کنین تا جایی که اطمینان حاصل کنین که همه چیز درست و سرجای خودش است. اگر کار نکرد و مراحل قبل را به درستی انجام داده اید مشکل در راه حل شما نیست و به احتمال زیاد در پیاده سازی راه حل در کامپیوتر است.
- بررسی کنین که دستور زبان را درست استفاده کردیده اید یا نه؟
- آیا منطق برنامه را درست پیاده سازی کرده اید یا نه؟ شاید دستور شرطی را با منطق اشتباه استفاده کرد اید!
- آیا استثنا ها را به درستی مدیریت کرده اید؟ مقادیر اولیه درست هستند یا نه؟
همچنین موارد دیگری که خودتان میدانید را بررسی کنین. اما اگر در نهایت درست کار نکرد چه؟
راه حل استفاده از دیباگر (debug) است. دیباگ یکی از مهارتهای اصلی ایت که هر برنامه نویس باید کاملا به آن مسلط باشد، اگر نیستید باید مسلط بشوید و هیچ عذری پذیرفته نیست!
از کجا شروع کنیم؟ بهترین جا استفاده از گوگل و مستندات محیط توسعه شما می باشد.
دیباگ را تا جایی ادامه دهید تا راه حل شما به درستی کار کند. در نهایت اگر جایی از کار درست از آب در نیامد مشکل ممکن از راه حل باشد، بنابراین دوباره از اول شروع کنین. برای ادامه کار لازم است که در این مرحله تکه کدی داشته باشید که به درستی کار کند.
هفت: بهینه سازی
همانند قبل باید کد خود را بهینه سازی کنید. بخشهای تکرار شونده را کم کنید. اگر نسخه جدید از زبان برنامه نویسی شما موجود است و محدودیتی در پروژه برای استفاده از آن ندارید به احتمال زیاد در نسخه های جدیدتر ممکن است بتوانید روشهایی برای کوتاه و بهینه تر کردن کد خود بیابید.
هشت: دیگران کاشتند و ما خوردیم، ما بکاریم تا دیگران بخورند
در صورتی که از نظر پروژه و مسایل امنیتی محدودیتی ندارید میتوانید راه حلی را که پیدا کرده اید برای دیگران به اشتراک بگذارید تا بقیه هم از آن استفاده کنند. اگر نمی توانید در جستجوهایی که برای خود داشته اید میتوانید دیگران را راهنمایی کنین. شاید در آینده از اهمیت مشارکت و فعالیت در اینترنت برای برنامه نویسان نوشتم.
اکنون می توانید برای حل مشکل و مساله بعدی آماده بشوید!
مطلبی دیگر از این انتشارات
مهندسیِ گیت با GitFlow
مطلبی دیگر از این انتشارات
قسمت سوم Java Zone- فرآیند Garbage Collection
مطلبی دیگر از این انتشارات
نگاهی عمیق به مباحث جاوا با Java Zone