اصول برنامه نویسی که همه برنامه نویس ها باید رعایت کنند
همه ی برنامه نویسان می توانند کد بزنند ولی مهم این است که کد ها بهینه باشند. شما با این دیدگاه که کد شما فقط مشکلتان را حل کند و بدون ارور اجرا شود نباید بسمت جلو حرکت کنید. بلکه با این هدف باید بسمت جلو بروید که کد شما نه تنها در حال حاضر بلکه در تمامی شرایط بخوبی کار کند همینطور در مدت زمان طولانی باید بدون هیچ مشکلی اجرا شود. ما در این مقاله به شما ده اصل آموزش می دهیم تا با استفاده از این اصول برنامه نویسی به یک برنامه نویس حرفه ای تبدیل شوید.
KISS :
اصل ” keep it simple, stupid “ نه تنها در زندگی ما کاربرد دارد بلکه استفاده از آن بطور خاص در پروژه هایی با حجم متوسط و یا سنگین بسیار ضروری است. فرض کنید شما یک فرد مبتدی هستید و یک پروژه در ذهن دارید و میخواهید مراحل مختلف انجام آن را تصور میکنید. این اصل به شما میگوید که همیشه از پروژه ها و کار های کوچک شروع کنید. مثلا اگر به طراحی بازی علاقه مندید نیازی نیست که از بازی های بسیار بزرگ مثل GTA شروع کنید. برای همین بهتر است از پروژه های ساده شروع کنید. بدلیل اینکه هرچه پروژه سنگین تر باشد احتمال وقوع ارور ها و باگ ها بیشتر است. همینطور رفع کردن آن ها زمان طولانی تری را از شما میگیرد. برای همین بهتر تر زمانی که به تسلط کافی رسیدید سمت پروژه های بزرگ تر بروید.
DRY :
اصل “ don’t repeat yourself ” به شما کمک می کند تا کد تمیزی داشته باشید و به راحتی بتوانید آن را تغییر دهید. این اصل این گونه رفتار می کند که از تکرار بیهوده data جلوگیری می کند. وقتی یک تکه از کد در جاهای مختلف تکرار شود شما این قانون را نقض کرده اید.
در مقابل این اصل برنامه نویسی، اصل (WET (write everything twice قرار دارد. بهترین کار برای شناسایی نقض شدن این اصل پرسیدن این سوال از خودتان است. برای این که بخواهید طرز رفتار این برنامه را تغییر دهید نیاز دارید چند تکه کد را تغییر دهید.
در واقع این اصل اینگونه عمل می کند که شما به ازای هر تکه کدی که در برنامه خیلی تکرار می شود یک تابع در نظر می گیرید. با این روش، هر زمان که بخواهید تغییری در آن تکه کد ها اعمال کنید به راحتی کافیست آن تابع را تغییر دهید.
همواره پروژه خود را گسترش دهید :
این اصل در تمامی پروژه ها کاربرد دارد ولی بیشتر زمانی شما از آن باید استفاده کنید که می خواهید یک کتابخانه یا فریمورک منتشر کنید. این اصل این گونه عمل می کند که شما وقتی می خواهید مثلا تغییری در کتابخانه خود اعمال کنید بهتر است این تغییرات به نحوی باشد که نیازمند تغییر اساسی در ساختار کتابخانه یا پروژه خود نداشته باشید. همینطور نباید تغییرات به صورتی باشد که نسخه جدید و قدیم ناسازگار باشند مثل مشکلی که هنگام معرفی نسخه سوم پایتون بوجود آمد. بطور خلاصه این اصل مهم در برنامه نویسی می گوید که همیشه پروژه خود را گسترش دهید و از تغییر دادن ساختار آن جلوگیری کنید.
دسته بندی کردن بهتر از ارث بری است.
نحوه ی نگرش این اصل برنامه نویسی به این صورت است که هر یک از اشیا بهتر است جداگانه دسته بندی شوند تا این رفتار ها را از کلاس های دیگر به ارث ببرند.
تاکید بیش از حد روی ارث بری به دو مشکل اساسی منجر می شود. وقتی شما از ارث بری استفاده می کنید ساختار برنامه شما حجیم تر و پیچیده تر می شود. همینطور شما برای تعریف کردن رفتار جدید و یا ارث بردن از یک رفتار در یک کلاس دیگر انعطاف کمتری دارید. در صورتی که اگر تا جایی که امکان دارد آن ها را جداگانه دسته بندی کنید هم کد تمیز تری دارید و هم نگهداری و کنترل برنامه آسان تر می شود و شما انعطاف بیشتری برای انجام تغییرات دارید.
هر بخش مسئولیت مجزایی داشته باشد.
نگرش این اصل به این نحو است که شما هر ماژول یا تابعی برای برنامه خود تعریف می کنید باید تنها برای انجام یک وظیفه طراحی شده باشند. فرض کنید شما می خواهید یک ویژگی جدید به برنامه خود اضافه کنید برنامه شما فقط از چند کلاس اصلی تشکیل شده است. در این مواقع شما باید با هزاران خط کد سروکله بزنید تا قابلیتی که می خواهید را به برنامه تان اضافه کنید. در حالی که اگر برنامه شما از توابع و کلاس های کمتری تشکیل شده باشد، وظیفه هر کدام از آن ها مشخص است و شما دقیقا با تکه کد های خیلی کمتری کار می کنید. همینطور از گیج شدن شما جلوگیری می کند.
همه چیز را به جزئی ترین چیز تبدیل کنید.
این اصل در بسیاری از ویژگی ها شبیه اصل قبلی است ولی با این تفاوت که به جزئیات بیشتری توجه می کند. این اصل این گونه عمل می کند که هر بخش و ماژول برنامه فقط یک مسئولیت دارد و کار مشخصی را انجام می دهد و به سایر ماژول ها و قسمت های برنامه دسترسی ندارد. برای مثال فرض کنید شما می خواهید یک فایل که در دیتابیس است را در سایت بارگذاری کنید. اگر بخواهید طبق این اصل عمل کنید باید از سه ماژول استفاده کنید. یک ماژول برای load کردن فایل از دیتابیس، یک ماژول برای بارگذاری روی سایت و در آخر یک ماژول برای ذخیره سازی تغییرات.
به این نکته باید توجه کنید که هر کدام از این ماژول ها باید به گونه ای طراحی شوند که فقط وظیفه ی خودشون را انجام می دهند و چگونگی انجام سایر مراحل، به آن ها وابسته نباشد. با این کار نگهداری و کنترل برنامه بسیار ساده تر می شود. مثلا اگر شما موقع load کردن فایل ها از دیتابیس به مشکل برخوردید، به ماژول load می روید و اختلالی در عملکرد سایر ماژول ها و ساختار کلی برنامه به وجود نمی آید.
YAGNI
نحوه نگرش اصل ” you aren’t gonna need it ” به این نحو است که شما در پروژه خود، نباید توابع یا متد هایی طراحی کنید که حدس می زنید در آینده به آن نیاز دارید. ممکن اصلا از این متد ها هیچ وقت استفاده نکنید و وقت شما هدر رفته باشد. مهم تر از این ساختار کد شما پیچیده تر می شود.
در واقع این اصل از استفاده بیش از حد از اصل های KISS و DRY جلوگیری می کند. در بعضی موارد افراد بیش از حد نیاز از این اصول برنامه نویسی استفاده می کنند و باعث می شود وقت آنها برای انجام کار های بیهوده تلف شود. مثلا شما زمانی باید از اصل DRY استفاده کنید که واقعا از تکه کد چندین بار استفاده شده است.تاکید بیش از حد روی این اصول برنامه نویسی باعث ناپایداری برنامه شما می شود.
از بهینه سازی زودرس جلوگیری کنید.
این اصل شباهت بسیار زیادی با اصل YAGNI دارد. با این تفاوت که اصل YAGNI از وجود توابع و یا مسئولیت های اضافی جلوگیری می کند. ولی نحوه نگرش این اصل به این صورت است که از بهینه سازی الگوریتم ها در ساختار برنامه، قبل از زمانی که ضروری هستند، جلوگیری می کند.
وقتی شما، قبل از اینکه واقعا نیاز دارید شروع به بهینه سازی الگوریتم های برنامه تان می کنید دو مشکل برای شما به وجود می آید. یکی اینکه شما نقاط ضعف برنامه تان را بخوبی نمی توانید تشخیص بدهید چون شما با بهینه سازی بقیه الگوریتم ها عملا ضعف های دیگر نقاط را پوشش می دهید. مشکل دیگری که به وجود می آید این است که برخی الگوریتم های به اندازه کافی سریع باشند و شما وقتتان را روی این قسمت ها بگذارید در صورتی که اصلا نیازی به بهینه سازی ندارند.
اکنون می خواهیم این اصل برنامه نویسی را با یک مثال شبیه سازی کنیم. فرض کنید برنامه شما در فرایند بارگذاری تصاویر ضعف دارد و این کار را کند، انجام می دهد. شما برای رفع این مشکل الگوریتمی ارائه می دهید که زمان load کردن تصویر از دیتابیس را کاهش می دهد و فرایند بارگذاری تصاویر به خوبی انجام می شود. در صورتی که ضعف اصلی برنامه ما پروسه بارگذاری تصاویر بوده است و load کردن تصاویر در زمان مناسبی انجام می شده است.
Refactor, Refactor, Refactor
یکی از حقایقی که برنامه نویس های بی تجربه به سختی قبول می کنند این است که، یک تکه کد به ندرت در دفعه اول اجرا بدون هیچ نقصی کار میکند و همیشه نیازمند تغییراتی هستند تا آن ها آن طور که می خواهید کار کنند. شاید این حقیقت وقتی شما یک ویژگی خاص به برنامه اضافه می کنید صادق نباشد. هر چه ساختار برنامه شما پیچیده تر شود و یا ویژگی های زیادی به آن اضافه کنید هماهنگ کردن این ویژگی های جدید با ساختار برنامه کار مشکل تری می شوید. به همین دلیل شما نیاز مند تغییرات بیشتری در کد های برنامه هستید.
بنابراین با تحولات سریع تکنولوژی اصلا جای تعجب نیست که پروژه شما همواره تغییرات زیادی کند و یا ویژگی های زیادی به آن اضافه شود. همین طور با دانشی که نسبت به پروژه تان دارید سعی کنید به صورت دوره ای کد هایتان را بروز رسانی کنید.
کد تمیز از کد خلاقانه ارزش بیشتری دارد.
این اصل از مهم ترین اصول برنامه نویسی بشمار میرود .فرض کنید شما با استفاده همزمان از چند اصل منطقی و یا استفاده از پیچدگی های یک زبان یک تکه کد می نویسید که بخوبی کار می کند و هیچ مشکلی ندارد. همین تکه را می خواهید به یک نفر نشان دهید و یا شخصی دیگر می خواهد از آن استفاده کند. مشکلی بوجود می آید این است که کد شما آنقدر پیچیده است که فرد دیگری نمی تواند نحوه ی عملکرد آن را بفهمد.
به همین دلیل بهتر از کد های تمیز استفاده کنید. کد های تمیز بسیار خوانا هستند و نحوه ی نگارش آن ها به گونه ای است که نحوه عملکرد الگوریتم به خوبی قابل تشخیص است. همین طور کد های تمیز بین برنامه نویس های محبوب ترند و بیشتر مورد استفاده قرار می گیرند.
کلام آخر :
رعایت کردن اصول برنامه نویسی به شما کمک می کند تا در هر زمینه ای که کار می کنید حرفه ای تر شوید و با سرعت بیشتری به مسیر خود ادامه دهید و در مدت زمان کوتاهی پیشرفت قابل توجهی بکنید و به برنامه نویس حرفه ای تبدیل شوید. نکته ای که باید به آن توجه کنید این است که در رعایت کردن این اصول برنامه نویسی وسواس نداشته باشید و در حد نیاز از آن ها بهره برداری کنید.
اگر به برنامه نویسی علاقه مندید حتما از وبلاگ تخصصی ما در زمینه برنامه نویسی دیدن کنید.
1 Comment
Join the discussion and tell us your opinion.
امتیاز بینندگان:5 ستاره