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