گاهی اوقات لازم است قوانین دنیای برنامه نویسی را نقض کنیم تا کدنویسی کمی هیجان برانگیز شود و کدهای با کیفیت و کارآمدتری نوشته شوند. انسانها در طول زندگی برخی قوانین را نقض می کنند و در حالی که می دانند کار اشتباهی انجام می دهند، اما مخفیانه دوست دارند برخی کارها را انجام دهند. دنیای برنامه نویسی را قوانین و دستورالعمل های مختلفی احاطه کرده اند که اگر برخی از آنها را نادیده بگیریم گامی رو به جلو برداشته ایم.
توسعه دهندگان نرم افزارهای کاربردی خواسته یا ناخواسته کدهای به ظاهر درست، اما اشتباهی می نویسند که قرار نیست کامپیوترها را منفجر کنند و حتی مشتریان نیز با خوشحالی از برنامه کاربردی آنها استفاده کنند، اما در باطن کدهای خوبی نیستند. همواره به این نکته دقت کنید هرگونه کدی که می نویسید توسط توسعه دهندگان دیگر قضاوت می شود. اگر کدهای بدی بنویسید در بهترین حالت مورد تمسخر قرار می گیرید و در بدترین حالت کدهای شما به عنوان یک کدنویسی اشتباه و عبرت آموز در معرض دید مردم قرار می گیرد. برای اجتناب از بروز این مشکل و کدنویسی خوب بهتر است قوانین شکسته شوند تا کدها پیچیده تر شوند، چرا پیچیده؟ به دلیل اینکه کدهای تمیزتر و خواناتری بنویسیم که با کمترین صرف زمان روی سامانه های کامپیوتری اجرا شوند. قوانین بسیار زیادی بر دنیای برنامه نویسی حاکم است که شکستن برخی از آنها فرآیند کدنویسی را بهتر می کند.
1- کپی کردن
اولین عادت اشتباه، کپی کردن است. کپی برداری یکی از بزرگترین اشتباهاتی است که شروع آن از مدرسه و دانشگاه است. در محیط های کاری قواعد مشخصی در ارتباط با عدم کپی برداری وجود ندارد، اما بدون شک برخی از کدها نباید کپی برداری شوند. اگر کدهای خاصی را مشاهده می کنید که ابتدای آنها نویسنده از کلمه کپی رایت استفاده کرده نباید از آنها برای ساخت برنامه های تجاری استفاده کنید. بهتر است کمی وقت صرف کنید و کدهای خودتان را بنویسید. برخی از توسعه دهندگان کدهای خود را به اشتراک می گذارند و در ابتدای مستندات پروژه نوع مجوز را مشخص می کنند که بیانگر نوع استفاده از کدها است.
در این حالت می توانید هزینه دسترسی به کدها را پرداخت کنید و از آنها در برنامه تجاری استفاده کنید، زیرا گاهی اوقات نوشتن کدهای پیچیده زمانبر است و نباید به سراغ اختراع دوباره چرخ بروید. کپی برداری قانونی اجازه می دهد معایب کد نوشته شده را برطرف کنید و از کدهای توسعه دهندگان دیگر در پروژه خود استفاده کنید. کدهای به اشتراک گذاشته شده در سایت هایی همچون گیت هاب ماحصل تفکر یک توسعه دهنده یا گروهی از توسعه دهندگان است که راه حلی برای یک مشکل ابداع کرده اند. نگاه ریزبینانه به این کدها کمک می کنند برای حل مشکلات مشابه ایده ای پیدا کنید. کپی کردن کدها با چشمان کاملا بسته یک ایراد بزرگ دارد، ممکن است در کدهای کپی شده اشکالاتی باشد یا فرضیات مختلفی در ارتباط با نقش داده ها در کدها درج شده باشد که شما منطق آنها را به درستی درک نکنید و کدها را تمام و کامل در برنامه خود وارد کنید. در چنین شرایطی زمانی که برنامه با مشکلی روبرو شود و مدیر شرکت یا تیم درباره قطعه کد سوالی بپرسد و خواستار تغییر کدها شود با مشکلی جدی روبرو می شوید.
2- عدم وجود کدهای تابع گرا
دومین عادت اشتباه، عدم وجود کدهای تابع گرا است. در یک دهه گذشته، الگوی کدنویسی تابعی منحنی صعودی داشته است. این پارادایم برنامه نویسی در بیشتر موارد برای ساخت برنامه ها از راهکار فراخواتی متداخل کدها استفاده می کند. توسعه دهندگان مجرب پیش از آنکه شروع به کدنویسی کنند، ابتدا اطمینان حاصل می کنند که تمام داده ها از طریق کانال های درستی انتقال پیدا می کنند.
3- بکارگیری فاصله گذاری استاندارد
سومین عادت اشتباه عدم به کارگیری فاصله گذاری استاندارد است. در بیشتر زبان های برنامه نویسی بکارگیری فضای خالی میان کدها تاثیر منفی روی عملکرد برنامه ها ندارند. به جز چند زبان برنامه نویسی همچون پایتون که از فاصله ها برای نشان دادن بلوکی از کدها استفاده می کند، در سایر زبان ها بکارگیری فضا بر نحوه عملکرد برنامه تأثیر منفی ندارند. هنوز هم برخی برنامه نویسان وسواس عجیبی در این زمینه دارند و حتی در یک مورد مشاهده کردم برنامه نویسی با لحن جدی به مدیر پروژه گفت: من در حال نوشتن کدهای غیر استاندارد هستم. گاهی اوقات فقط باید به چیزی عمیق تر از قرارگیری فضاها فکر کنید. شاید نگران اضافه باری باشید که به پایگاه داده تحمیل می شود. شاید نگران آن هستید که فضاهای خالی زیاد کیفیت کدهای شما را خراب کنند، اما باید بدانید درج فضاهای خالی به همان نسبت کدنویسی با کیفیت اهمیت دارند.
4- استفاده از دستور Goto
چهارمین عادت اشتباه استفاده از دستور Goto است. در زبان های برنامه نویسی قدیمی Goto یک نقش کلیدی داشت و به ندرت برنامه هایی بدون توجه به این دستور نوشته می شدند. با اینحال، دستوراتی شبیه به Goto که ناگهان به شماره خطی پرش می کنند، خوانایی کدها را به شدت کاهش می دهند. توسعه دهندگان کامپایلرها در نهایت به توسعه دهندگان اجازه دادند به جای شماره خط از برچسب استفاده کنند که ویژگی جالب و کاربردی به شمار می آمد، اما بازهم Goto یک اشتباه بزرگ در برنامه نویسی است.
5- تعریف نوع های داده ای
پنجمین اشتباه بزرگ تعریف نوع های داده ای است. افرادی که عاشق زبان های typed هستند به جای تعریف صریح یک نوع داده ای متغیری در برنامه تعریف می کنند و فرآیند تشخیص نوع داده ای را به کامپایلرها محول می کنند. در گذشته این کار باعث می شد تا برنامه ها خطاهای عجیب و غریبی را نشان دهند، اما در عصر جدید که کامپایلرها به اندازه کافی هوشمند شده اند و با مشاهده کدها، نوع آنها را استنباط می کنند، بکارگیری این استراتژی ایرادی ندارد، زیرا اجازه می دهد با کنار گذاشتن ساده ترین اعلان ها، چند بیت را ذخیره کنید. در بیشتر موارد توسعه دهندگان با مشاهده حلقه های for و متغیر i در برنامه شما قادر به تشخیص نوع های داده ای هستند.
6- عدم نوشتن ساختارهای داده ای شخصی
ششمین عادت اشتباه عدم نوشتن ساختارهای داده ای شخصی است. یکی از قوانین نانوشته دنیای برنامه نویسی این است که یک برنامه نویس پس از گذراندن دوره ساختار داده در سال دوم دانشگاه، هرگز نباید کدی برای ذخیره سازی داده ها بنویسد و به جای آن همواره از ساختارهای داده ای از پیش تعریف شده استفاده کند، زیرا شخص دیگری قبلاً ساختارهای داده ای را نوشته و طی سال ها آن را آزمایش کرده است. تنها کاری که شما باید انجام دهید این است که این کدها را به اشکال مختلف استفاده کنید. واقعیت این است که گاهی اوقات ساختار داده ای کمی کند هستند و اگر از این کدها استفاده کنیم در حقیقت یک کدنویسی اشتباه انجام داده ایم. گاهی اوقات کتابخانه ها ما را به پیکربندی مجدد داده هایمان هدایت می کنند به جای این که اجازه دهند از ساختارها استفاده کنیم. گاهی اوقات کتابخانه ها دارای قابلیت هایی همچون قفل کردن ریسمان ها یا فرآیندها هستند، در حالیکه کد ما به این ویژگی ها نیازی ندارد. در چنین شرایطی بهتر است به سراغ نوشتن ساختارهای داده ای مخصوص خود برویم که خواناتر هستند و سریعتر اجرا می شوند. نکات متعدد زیادی وجود دارند که امکان پرداختن به آنها در این یادداشت کوتاه مقدور نیست، اما گاهی اوقات سنت شکنی در دنیای برنامه نویسی پیشرفت را به همراه دارد.