۱۰ اشتباه برنامه نویسان مبتدی
۱۰ اشتباه برنامه نویسان مبتدی
هنگامی که تازه شروع به برنامه نویسی میکنید ، مطمئنا اشتباهات زیادی رو انجام میدید.مشکل اینجاست که شما خوتون هم نمیدونید دارید اشتباه میکنید.در سال اولی که در دانشگاه قرار بود به دانشجوها برنامه نویسی رو آموزش بدم بارها و بارها با این اشتباهات برخورد داشتم.در زیر لیست ۱۰ اشتباهی رو که برنامه نویسان مبتدی مرتکب میشن رو معرفی میکنم تا ازاین به بعد از این اشتباهات دوری کنند!
۱- ترس و عدم اعتماد به نفس
اولین اشتباهی که ممکنه به عنوان یک برنامه نویس مبتدی مرتکب بشید اینه که فکر کنید به قدر کافی خوب و باهوش نیستید و اینکه تفکر غلطی نسبت به برنامه نویسی دارید و نمیتونید هیچ موقع برنامه نویسی رو یاد بگیرید.من باور دارم که هر کسی میتونه حداقل در سطح مبتدی برنامه نویس باشه ، اگر یه مدت برنامه نویسی رو به صورت جدی دنبال کنه. در ابتدا کدها برای شما مثل زبان فضایی ها غیرقابل فهمه، این یک چیز طبعیه! اما قدم به قدم ( bit-by-bit ) با همه قسمتها و کدها آشنا میشید ،سپس وقتی که معنی کدها رو بفهمید میبینید که واقعا همه چیز منطقیه و دیگه ترسی وجود نداره.
قطعا برای منطقی فکر کردن و برنامه نویسی یک استعداد ذاتی لازمه ، اما با تلاش زیاد ، تمرین و خواندن آموزشها میتونید یک برنامه نویس خوب باشید. میتونید
بر ترس خود غلبه کنید یا ترس بر شما غلبه میکنه!!
پیشنهاد من به برنامه نویسان مبتدی اینه که از ابزار Visual برای کدنویسی استفاده کنن.این کار کمک میکنه که شما از خطاهای تایپی در امان باشید و بتونید مفهوم حلقه ها ، شرط ها و متغیر هارو به خوبی درک کنید. از اینکار برای معرفی برنامه نویسی در مدارس زیاد استفاده میشه.
(مترجم : با این پاراگراف آخرش مخالفم.به نظرم باید برنامه نویسای مبتدی از اول شروع کنن به تایپ کردن و چیزی که خیلی در برنامه نویسی مهمه اینه که یک برنامه نویس باید تایپ ۱۰ انگشتی بلد باشه.به نظرم ابزارهایی مثل Visual studio برای برنامه نویسهای مبتدی خیلی خطرناکه چون تمام ابزارهارو دم دست داره و فقط کافیه drag and drop بشه تا کد مربوطه رو خودش بنویسیه که اینکار به نظرم تفکر برنامه نویسی رو به برنامه نویس مبتدی نمیده و اون رو تنبل بار میاره.)
۲- کد نویسی کثیف
یکی از راههایی که برنامه نویس های با تجربه میتونن به سرعت تشخیص بدن که این کد توسط یک مبتدی نوشته شده همین کد نویسیه کثیفه! کدهایی بدون دندانه گذاری (Indentation ) و استفاده نادرست از خطوط جدید و فضاهای خالی.بعضی از زبانهای برنامه نویسی مثل جاوااسریپت محدودیت زیادی برای چطور نوشتن کدها ندارن.این میتونه برنامه نویس های مبتدی رو به بی نظم نوشتن کدها عادت بده.اینکار یک اشتباهه چون یکی از راههای که ما میتونیم منطق کدهامون نشون بدیم استفاده از دندانه گذاری کدهاست.با استفاده از tab و space میتونیم بفهمیم که یک تابع ، شرط یا حلقه کجا شروع میشه و کجا تموم میشه، برای همین میتونیم تشخیص بدیم که کدهامون در جای درست قرار گرفتن.مثلا جاوااسکریپت اجازه میده یک تابع رو داخل تابع دیگه ایجاد کنیم ،با این قابلیت اگر شما جای بازو بسته کردن آکولاد هارو نمیبینید خیلی راحت میتونه شمارو در محدوده عملکرد توابع و متفغیرها به اشتباه بندازه. قوانینی وجود داره که چطور کدهاتون رو قالب بندی کنید.مهم نیست که از کدوم یکی از این قوانین استفاده میکنید.یکی دیگه از کارهای بد اینه که توضیحات یا comment های زیاد و بی استفاده که هیچ نیازی بهش ندارید رو مینویسید.این کارو همه ما انجام میدیم اما سعی کنید به کدهاتون برگردید و کامنتهای اضافه رو پاک کنید و فقط کامنتهایی رو نگه دارید که لازمه.
۳- استفاده ناهماهنگ از حروف بزرگ و کوچک
بعضی از زبانهای برنامه نویسی به حروف بزرگ و کوچک حساسن یا به اصطلاح case-sensitive هستند و بعضی از زبانها چنین خاصیتی ندارن.به هرحال با هر زبان برنامه نویسی که کار میکنید در استفاده از حروف بزرگ و کوچک در نام متغیرها و توابع ثابت قدم باشید! (یک روش رو پیش بگیرید ). برنامه نویس های مبتدی معمولا یک متغیربا یک حرف بزرگ مثلا :
var Score = 5;
تعریف میکنن اما در بقیه جاهای برنامه به صورت زیر ازش استفاده میکنن :
if(score > 5)
و اعصابشون به هم میریزه که چرا کدشون اجرا نمیشه!به اضافه بعضی از برنامه نویسا وقتی به یک زبان جدید مهاجرت میکنن ،به جای استفاده از قوانین زبان جدید ، قوانین قبلی رو به زبان جدید وارد میکنن.
۴- نام های بی معنی برای توابع و متغیرها
ممکنه به برنامه نویسای جاوا بخندیم که از نامهای طولانی مثل : AbstractSingletonProxyFactoryBean استفاده میکنن.اما به جای نوشتن نامهای کوتاه و بی معنی ، بهتره که از نامهای بلند و قابل توصیف استفاده کنیم.منظور اینکه ، کدهامون واضح تر میشن ، و احتمال اینکه متغیرها و توابع همنام به وجود بیان و باعث گیج شدن شما یا درست کار نکردن کدتون بشن.علاوه بر این که از نامهای بی معنی برای متغیر ها استفاده میکنید ، بدترش اینکه هنگام نوشتن اسم متغیر اشتباه تایپی داشته باشید، هنگامی که کدتون به مشکل برمیخوره نمیتونید به راحتی مشکل تایپی رو پیداکنید و رفعش کنید.یکی دیگه از اشتباهاتی که زیاد از برنامه نویسای مبتدی سر میزنه اینه که از اصطلاحات عامیانه برای نامگذاری متغیرها استفاده میکنن.وقتی که من به کدهای ۸ سال پیشم برمیگردم میبینیم که از این دسته از اشتباهات زیاد کردم.مثلا به جای “numPlayers” از نام “numPlayaz” و به جای “pause” از “pawz” استفاده کردم.(منظورش همینجوری که تلفظ میشه نوشته اسمش رو!!).این روزها من برای خودم قوانین کدنویسی خودم رو استفاده میکنم.مثلا برای نگه داشتن تعدادی از یک چیز داخل یک متغیر از اسم numThings استفاده میکنم.با استفاده از این روشهای نامگذاری وقتی در آینده به سراغ کدهاتون برمیگردید به راحتی میتونید کدهاتون رو بخونید و دیگه نگرانی ندارید.
۵ – کامنت گذاری بیش از حد
من یکی از بزرگترین طرفدارهای مستندسازی شخصی هستم.این مستند سازی شامل توضیحاتی برای کلاس ، متغیرها ، توابع و به طور کلی معماری و نحوه کارکرد برنامه میشه بدون گذاشتن کامنتهای طولانی.این مستند سازی ( کامنت گذاری) برای بقیه کسانیه که بعدا کد شمارو میخوان بخونن و تغییرش بدن.همچنین میتونه برای خودتون هم مفید باشه که در آینده وقتی به کدهاتون که نگاهی میندازید بدونید چی نوشتید.این توضیحات مخصوصا جاهایی به درد میخوره که کدها برای یک کار خاص نوشته شدن و زیاد واضح نیستن.شما نیازی نیست برای همه چیز کامنت بذارید.مثلا :
score += 5; // adds 5 onto the score
نیازی نیست همه کدهایی که نوشتین رو کامنت گذاری کنید بلکه بهتره عملکرد یک تابع یا کلاس رو به شرح بدید و اینکه برنامه ای که نوشتید چجوری کار میکنه.
۶ – قدرت واقعی زبان برنامه نویسی تون رو نمیدونید
برای این مورد نمیشه مبتدی هارو سرزنش کرد، دونستن اینکه یک زبان برنامه نویسی چه قدرتهایی داره نیاز به تجربه داره.اما اگر یک یا دوساله دارید برنامه نویسی میکنید دیگه زمان این رسیده که تعدادی از عملگرهایی رو که کمتر استفاده میشه رو یاد بگیرید، بعضی از این عملگرها واقعا مفیدن.مثلا برای نمونه :
! : این عملگر به معنای NOT یا نقیض.اگر مقدار false بهش بدید برعکسش میکنه :
x = !x;
در بالا اگر در x مقدار false باشه بعد از این عملیات مقدار true داخلش قرار میگیره.
% – این عملگر به معنای درصد نیست و دربیشتر زبانهای برنامه نویسی باقیمانده تقسیم رو بر میگردونه.
عملگر سه تایی با ternary operator : این عملگر شامل یک علامت ” ؟ ” و یک علامت ” : ” است که به ما اجازه میده شرط رو در یک خط چک کنیم :
$lives = isEasy() ? 5 : 3 ;
۷ – گیج شدن بین اصطلاحاتی مثل : زبان ، فریم ورک ، پلتفرم و IDE
وقتی شما شروع به یادگیری برنامه نویسی میکنید، مخصوصا برنامه نویسی وب ، زیر بمبارانی از زبانهای مختلف ، فریم ورکها و IDE ها گیر می افتید و در ابتدا سخته که بدونید اینها چی هستن و به سرعت یک سری تصورات غلط به ذهنتون میاد.در مرحله اول بدونید که HTML و CSS یک زبان برنامه نویسی نیستن.HTML یک زبان نشانه گذاریه و CSS زبانی برای استایل دهی.این دو زبان مهارت های زیادی برای یاد گرفتن دارن اما وقتی باهاشون کار میکنین در واقع در حال برنامه نویسی نیستید. یکی از زبانهای برنامه نویسی سمت کاربر برای وب زبان جاوااسکریپته که در مبتدی ها در ابتدای کار جاوااسکریپت بهش جاوا میگن که اشتباهه.جاوا یک زبان برنامه نویسی برای همه پلتفرم هاست که کلا با جاوااسکریپت فرق داره.یکی دیگه از چیزهایی که ممکنه با دیدنش گیج بشید
$('#things')
که مربوط به فریم ورک (کتابخانه) jQuery ـه که کار با جاوااسکریپت رو خیلی خیلی راحت تر میکنه، اما حتمن یادتون باشه که jQuery یک زبان نیست و فقط یک کتابخانه است.یکی دیگه از تصورات غلط اینه که هنگامی که دارید با HTML , CSS , Javascript کار میکنید فکر میکنید این همون IDE هست ، که در واقع IDE به نرم افزاری مثل Dreamweaver ـه که کدهاتون رو میتونید توش ویرایش کنید و …
۸ – با مزایای ابزارهای دیباگ حال نمیکنید (!!)
اگر با یکی از زبانهای برنامه نویسی جاوا ، سی شارپ یا اکشن اسکریپت کار میکنید بهتره که از دیباگر استفاده کنید.این زبانها خطاهای ریزی میدن که با استفاده از دیباگر میتونید به راحتی اشکالات یا باگهای کدتون رو پیدا کنید.اگه با زبانی مثل جاوااسکریپت کار میکنید تا وقتی که یک دیباگر خوب نداشته باشید مجبورید از alert() برای حالات مختلف استفاده کنید.مرورگر کروم یک ابزار به نام Developer Tools داره که میتونید خطاهای کدتون رو ببینید.
۹ – از کارهاتون نسخه پشتیبان تهیه نمیکنید
در لغت نامه برنامه نویسا نباید اصطلاح ” من فقط [x] ساعت از کاری که کردم رو از دست دادم”.تعدادی ابزار خوب برای پشتیبان گیری خود کار و version-control وجود داره ، که دیگه بهانه ای برای از دست دادن اطلاعاتتون ندارید، حتی اگر کامپیوتر شما دارای نقص سخت افزاری بشه یا منفجر بشه!!من از Dropbox استفاده میکنم که به صورت خودکار از تمام فایلها و فولدرهام پشتیبان میگیره ، همچنین از subversion یا GitHub استفاده کنید.همه این ابزارها بعضی از امکاناتشون رایگانه.
۱۰- فکر میکنید همه چیزو میدونید!
این اشتباهیه که خیلی راحت مبتدی ها انجامش میدن.بعد از پافشاری زیاد بالاخره اولین برنامه تون رو مینویسید.شما شروع میکنید به آموزش چیزهایی که یادگرفتید و احساس میکنید که میتونید جهان رو فتح کنید.این یک حس خیلی خوبه واز اینکه تونستید به کامپیوتر بگید کاری رو بکنه که ازش خواستید لذت میبرید.اما زمانی که پوزخندی رو صورتتونه و دارید کدهاتون رو به بقیه آموزش میدید یاتون باشه از یادگرفتن غافل نشید.شاید بهتر باشه به کدهای قدیمی که نوشتید برگردید و عبرت بگیرید!ببینید که چقدر از کدهایی که نوشتید رو صد در صد میفهمید و چقدرش رو کپی و پیست کردید.شاید الان وقتش رسیده که توابعی رو که از جایی برداشتید و در توضیحاتش نوشته شده ” دست نزنید” رو کمی دستکاری کنید.من الان ۱۳ ساله که برنامه نویسی میکنم و هنوز احساس میکنم بسیاری از راههایی که در پیش گرفتم سطحی و بدون هیچ فکری بوده.
۱۱- اشتباه جایزه !!! فکر میکنید که شرط “if” حتما نیاز به مقایسه داره
این تذکر رو در آخرین مرحله بیان کردم تا مطمئن شم این مورد از ذهنتون پاک میشه.حتی بعضی از برنامه نویسای با تجربه تر هم این اشتباه رو مرتکب میشن.کدی مثل کد زیر :
if(myBoolean == true)
یکی از اشتباهاتیه که ممکنه هیچ ضرری نرسونه ، اما این نشون میده که درک درستی از نحوه کارکرد زبانهای برنامه نویسی ندارید.بذارید روشنتون کنم : پرانتزی که بعد از کلمه if میاد باید شامل یک نوع boolean باشه (true یا false).ما در این پرانتز دو مقدار رو مقایسه میکنیم تا به مقدار Boolean برسیم.مثلا :
if(x < 200)
حالا اگر x کوچکتر از ۲۰۰ باشه مقدار true و اگر بزرگتر باشه مقدارش false میشه.حالا اگر ما از قبل یک مقدار از نوع boolean داشته باشیم مثلا myBoolean مبتونیم به تنهایی ازش در شرط if استفاده کنیم
if(myBoolean)
و نیازی نیست اینجوری بنویسیم :
if(myBoolean == true)
(این یه مقدار در PHP یا جاوااسکریپت پیچیده تر میشه وقتی از === استفاده میکنید.)
نظر بدهید