چند نکته ساده برای بهتر برنامه نوشتن

چند وقت پیش یک پست در مورد مستند سازی و فوایدش نوشته بودم و قول دادم که اگه عمری باشه بیشتر به این موضوع توی وبلاگم بپردازم . امشب یکم حوصلم سر رفته بود ٬ گفتم بیام چند تا نکته ساده که میشه با رعایتشون برنامه رو خیلی خوانا تر کرد توضیح بدم .

۱) روش های کامنت گذاری به این دلیل اختراع شدند که شما ازشون استفاده کنید! تمامی زبان های برنامه نویسی از نشانه های مشخصی برای اینکه بتونید به کدتون توضیحاتی اضافه کنید پشتیبانی می کنند . سعی کنید وفتی که دارید برنامه می نویسد با نوشتن توضیحات مشخص کنید که چه اتفاقی داره توی برنامه می افته؟ مثلا نقش این شرط چیه و یا اینکه این تابع چه کاری انجام می ده ٬ چه پارامتر هایی بر می گردونه و … . سعی کنید توضیحات ساده و قابل فهم باشند طوری که اگه یه نفر دیگه قصد داشت تغییری توی برنامه شما بده به راحتی از کدی که نوشتید سر دربیاره .

۲) از نام های معنی دار استفاده کنید . اسم توابع ٬ کلاس ها ٬ متغییر ها و … به نحوی انتخاب کنید که متناسب با مقداری که ذخیره می کنند یا وظیفه ای که دارند باشه . از اسم های طولانی نترسید اما اونقدر هم طولانی نباشه که طول خط های برنامتون زیاد بشه . چون بعضی از کامپایلر ها اجازه نمی دن طول هر خط از اندازه مشخصی بیشتر باشه هم اینکه وقتی طول یک خط  زیاد می شه خوندش سخت می شه .

۳) مثل بچه آدم کد بنویسید! چند سال پیش من فکر می کردم برنامه نویس خفن باید خفن هم کد  بنویسه و کد رو به پیچیده ترین وجه ممکن بنویسی ٫ یه جوری که هرکی اومد به برنامه آدم نگاه کرد بگه وای عجب برنامه نویس خفنی! :D اما این فکر کاملا اشتباه که  یه برنامه خوب برنامه ایی که کسی چیزی ازش سر در نیاره . سعی کنید تا جایی که میشه الکی کدتون رو پیچیده نکنید و مثلا اگه قرار یه عبارت ریاضی پیچیده رو حساب کنید اون رو در چند خط و مرحله به مرحله حساب کنید به جای اینکه همش رو توی یک خط  بنویسد . برنامه کوتاه خوب هست اما برنامه ای که نشه ازش سر درآورد به هیچ دردی نمی خوره!

۴) قبل از اینکه شروع به کد نویسی کنید کمی فکر کنید . وقتی می خوایین یک پروژه جدید رو شروع کنید بلافاصله نپرید پشت کامپیوتر و شروع به کد نوشتن کنید ! سعی کنید توی ذهنوتن یا حتی روی کاغذ یه الگوی اولیه از کاری می خوایین انجام بدین و ساختار برنامه رو در بیارین و بعد شروع کنید به برنامه نویسی

چطور از Ubisoft سر در بیاریم؟

وب سایت gamecareerguide.com یکی از سایت های تخصصی برای افرادی که به صنعت بازی سازی به عنوان آینده کاری خودشون نگاه می کنند هستش و مطالب خیلی جالبی توش پیدا می شه . امشب مشغول دیدن مطالب جدیدش بودم که به یه مقاله در مورد اینکه چطور می شه یه بازی ساز حَسابی (به قول ما اصفهانی ها!) شد برخوردم .

Jean-Francois Lévesque یکی از برنامه نویس های شرکت Ubisoft هستش که توی این مقاله باهاش مصاحبه شده و در مورد مسیری که از کالج تا Ubisoft طی کرده مفصل توضیح داده . خیلی برام جالب بود ٬ توصیه می کنم حتما بخونیدش .

لینک مطلب

undo کردن به روش نینجا

چند ماه پیش موقع کار کردن حواسم نبود و یکی از indicator های پنلم رو پاک کردم و هرکاری کردم نتونستم برش گردونم سر جاش! از علی و امیر حسین هم پرسیدم اما اونام  نمی دونستن چه جوری باید پنل رو به حالت اولش برگردوند؟! خلاصه گذشت تا امشب که حسابی حوصلم سر رفته بود و گفتم بذار این بچه رو درسش کنیم بشه مثل روز اولش! نت رو کلی بالا پایین کردم تا بلاخره فهمیدم باید چی کار کرد! گفتم بیام تو وبلاگم بنویسم که اگه این بلا سر یه نفر دیگم اومد ٬ بدونه باید چی کار کنه و یه خدابیامرزی هم برای من باشه …

برای اینکه تنظیمات پنل و دسکتاپ رو به حالت اول برگردونید دستور زیر رو توی ترمینال اجرا کنید :

sudo rm -rf .gnome .gnome2 .gconf .gconfd .metacity

حالا log out کنید و دوباره وارد بشید . تبریک می گم همه چیز مثل روز اول سر جای اولشه!

منبع : توی این سایت راه حل خیلی از خراب کاری های دیگه رو هم توضیح داده! :D

پ . ن : توی دبیرستان که بودم ٬ وقتی به این جور مشکل ها بر می خوردم کل سیستم عامل رو از اول نصب می کردم ٬ حتی بعضی وقت ها از اول پارتیشن بندی می کردم!! :D

مصائب مهندسین نرم افزار

امروز با علی رفتیم پیش ‌DBA دانشگاه تا یک سری اطلاعات اولیه که برای پایان نامه بهش احتیاج داشتیم رو ازش بگیریم . براش شروع کردیم به تشریح کردن موضوع کارمون و اینکه برای استخراج یک سری الگو ها به قسمتی از سوابق تحصیلی دانشجو ها توی این چند ساله اخیر نیاز داریم . من انتظار نداشتم که بعد از اتمام حرف هامون بگه : باشه عزیزم٬ فلشت رو بده تا برات از پایگاه داده دانشگاه روش اکسپورت بگیریم :D ٬ اما وقتی که گفت باید استاد راهنماتون درخواست بنویسه ٬ بده به مدیر گروه تایید کنه بعد معاون پژوهشی که تایید کرد اونقت تازه ما بررسی می کنیم که آیا درخواست شما مقدور هست یا نه ٬ احساس کردم که کاملا در حال سنگ قلاب شدن هستیم … ! از پیش اون بده خدا که برگشتیم ٬ رفتیم پیش یکی از مسولین آموزش که یه جواریی مدیر ارشد ‌DBA کذا هم می شد و براش توضیح دادیم که می خواییم چی کار کنیم و اگه ما این اطلاعات رو داشته باشیم ٬ تحلیل هایی که روی سیستم آموزش دانشگاه توی مقاله مون انجام می دیم می تونه کلی برای خود شما هم مفید باشه . اون بده خدا هم که دید ما نیت خیر داریم گفت باشه ٬ حالا کارتون با ۲۰ ٬ ۳۰ تا کارنامه راه می افته؟ منم گفتم : نه آقای دکتر ما برای جامعه آماری مون حداقل نیاز به سوابق تحصیلی ۱۵۰۰ تا ۲۰۰۰ دانشجو از رشته های مختلف داریم . اون بنده خدا یهو برق از کلش پرید و گفت : یعنی می خوایین ما ۲۰۰۰ تا کارنامه رو براتون روی کاغذ پرینت بگیریم ! تازه فهمیدم این همه وقت که من داشتم در مورد نحوه استخراج الگو ها ٬ هوش مصنوعی ٬ داده کاوی و … صحبت می کردم اون بده خدا داشته چی تو ذهنش برای خودش مجسم می کرده :| ! علی بلافاصله گفت : نه آقای دکتر لازم نیست روی کاغذ باشه ٬ روی cd هم می تونن اطلاعات رو بهمون بدن و اگه با درخواست ما موافقت بشه کلا ۵ دقیقه هم کار نداره استخراج اطلاعات براشون .

خلاصه کار به اینجا رسید که آقای دکتر گقتند اگه مشخصات شخصی دانشجوها از اطلاعاتی که بهتون داده می شه حذف بشه از نظر ما مشکلی نداره و شمام به استاد راهنماتون بگین که درخواست بنویسن و بدن مدیر گروه تایید کنن و بدین به معاون پژوهشی ایشون هم تایید کنند و …

پ .ن : داشتم یه چرخی توی اینترنت می زدم که به سایت شخصی مجتبی بنائی برخوردم . نکات جالبی از مهندسی نرم افزار توی وبلاگش می نویسه . خالی از لطف نیست که در گودر SubScribe بفرمایید .

اصول اولیه طراحی بازی

طراحی بازی (Game Design) مهمترین و اصلی ترین قسمت یک بازی رایانه ای محسوب می شه .اون چیزی که شما رو چندین ساعت پای یه بازی میخکوب می کنه سرگرمی بازیه (Game Play) که توسط طراح بازی خلق شده .
Ian Schreiber در سال ۲۰۰۹ یک کلاس آنلاین در مورد اصول طراحی بازی برگزار کرد که خوش بختانه هنوز هم مطالب اون سایت در دسترس هستند و شما با مراجعه به این آدرس می تونید مباحثی رو که در طول این دوره ۱۰ هفته ای آموزش داده شده رو مطالعه کنید . البته لینک بالا فیلتره! :D اما من متن کامل سایت رو به همراه کتاب درسی که برای دوره نیاز دارید براتون به صورت pdf قرار می دم :

۱) متن کامل دوره آموزشی اصول طراحی بازی

۲) کتاب درسی مورد نیاز در طول دوره آموزشی (Challenges For Game Designers)