کتاب کدنویسی تمیز کتابی است که اصول نوشتن نرم افزار تمیز، خوانا و قابل نگهداری را ترویج میدهد. این کتاب توسط رابرت سی مارتین، که متخصص در زمینه توسعه نرم افزار است، نوشته شده است. نویسنده استدلال می کند که نوشتن کد تمیز برای موفقیت هر پروژه نرم افزاری ضروری است و این مهارتی است که می توان آن را در طول زمان آموخت و بهبود بخشید. خواندن این کتاب به افرادی که در مسیر توسعه حرفه ای نرم افزار قرار دارند، توصیه میشود. در ادامه به برخی از نکات مهمی که در این کتاب گفته شده است، اشاره میکنیم.
نام های معنی دار و توصیفی: انتخاب نام مناسب برای متغیرها، توابع و سایر عناصر یک برنامه بخش مهمی از نوشتن کد خوب و تمیز است. از نام های توصیفی و معنی دار برای متغیرها، توابع و کلاس ها استفاده کنید. از نامهایی استفاده کنید که عملکرد یک تابع یا متغیر را به جای نحوه انجام آن توصیف میکنند.
توابع و کلاس ها باید کوچک باشند: توابع باید یک کار را انجام دهند و آن را به خوبی انجام دهند. آنها باید به اندازه کافی کوچک باشند تا روی یک صفحه نمایش قرار گیرند. توابع و کلاس های کوچک بیشتر قابل استفاده مجدد هستند، زیرا بیشتر بر روی یک کار یا مسئولیت خاص متمرکز هستند. درک، آزمایش و نگهداری توابع و کلاسهای کوچک آسانتر است.
آرگومان های تابع: تعداد آرگومان هایی که یک تابع می گیرد را محدود کنید. درک و نگهداری تابعی با آرگومان های زیاد سخت است. همچنین پیشنهاد میشود که توابع در صورت امکان به جای متغیرهای جداگانه از پارامترهای شی استفاده کنند.
از توضیحات (Comments) واضح و مختصر استفاده کنید: از توضیحات واضح و مختصر برای تشریح هدف و رفتار کد استفاده کنید. توضیحات برای غیرفعال کردن بخشی از کد ها مناسب نیستند، از این کار خود داری کنید.
کار تکراری نکنید (Don't Repeat Yourself): از نوشتن کدهای تکراری و یا کپی/پیست آن ها خودداری کنید. در عوض، عملکرد مشترک را در توابع پیاده سازی کنید. با این کار قابلیت استفاده مجدد در کد های شما افزایش مییابد.
کد را ساده نگه دارید (KISS): از مهندسی بیش از حد خودداری کنید و کد را تا حد امکان ساده نگه دارید. مسائل بزرگ را به بخش های کوچک تر تقسیم کنید. ریفکتور توابع کوچک، ساده تر از ریفکتور یک تابع عظیم است.
توسعه تست محور (TDD): توسعه تست محور کمک می کند تا اطمینان حاصل شود که کد به طور کامل تست شده است و نیازهای نرم افزار را برآورده می کند. این امر میتواند به بهبود کیفیت کلی کد کمک کند. همچنین زمانی که برای عیب یابی صرف میکنیم را کاهش میدهد.
ریفکتور به طور منظم: به طور منظم کد را ریفکتور کنید تا آن را تمیز نگه دارید. ریفکتور کردن کد سبب افزایش کیفیت کد میشود. همچنین میتوانیم در هر بار ریفکتور کردن، مسئله را به روش های بهینهتری حل کنیم که به افزایش کارایی برنامه کمک میکند.
اصل مسئولیت منفرد یا تک وظیفه ای (SRP): یک کلاس یا تابع باید تنها یک دلیل برای تغییر داشته باشد. توابع و کلاس هایی که مسئولیت رسیدگی به یک وظیفه را دارند، راحت تر درک میشوند. همچنین با توجه به اینکه تک وظیفهای هستند، تغییر پذیر تر و تست پذیز تر هستند.
اصل باز/بسته (OCP): موجودیت های نرم افزار (کلاس ها، ماژول ها، توابع و غیره) باید برای توسعه باز باشند اما برای اصلاح بسته باشند. به بیانی دیگر، زمانی که قصد افزودن قابلیتی جدید به برنامه داریم، نباید کد های قبلی دچار تغییر شوند.
اصل جایگزینی لیسکوف (LSP): کلاس های مشتق شده باید به جای کلاس پایه خود بدون ایجاد رفتار غیرمنتظره قابل استفاده باشند. قابلیت چندریختی که یکی از مفاهیم مهم برنامه نویسی شئ گرا هست، در پی رعایت اصل جایگزینی لیسکوف محقق میشود.
اصل جداسازی رابط (ISP): کلاینت ها نباید مجبور باشند به رابط هایی که از آنها استفاده نمی کنند وابسته شوند. به بیانی دیگر، رابط ها(Interfaces) باید فقط شامل متد هایی شوند که کلاینت به آن ها نیاز دارد. برای اعمال این اصل، باید رابط های بزرگ با متد های متنوع، به چند رابط کوچک و متمرکز تقسیم شوند.
اصل وارونگی وابستگی (DIP): ماژول های سطح بالا نباید به ماژول های سطح پایین وابسته باشند. هر دو باید به انتزاعات وابسته باشند. انتزاعات نباید به جزئیات وابسته باشند. بلکه جزئیات باید به انتزاعات وابسته باشد. با تکیه بر انتزاعات، می توان وابستگی را کاهش داد و قابلیت استفاده مجدد را بوجود آورد. در نهایت میتوان کد ها را به راحتی تغییر داد یا جایگزین کرد بدون اینکه بر سایر قسمت های سیستم تأثیر بگذارد.
توجه به بوی کد(Code Smells): بوی کد به مناطق بالقوه مشکل ساز کد اشاره دارد که ممکن است نگهداری یا اصلاح آنها در طول زمان دشوار باشد. بوی کد لزوماً خطا یا اشکال نیست، بلکه نشانهای از این است که ممکن است مشکلی در طراحی یا سازماندهی کد وجود داشته باشد. اگر به بوی کد توجه نشود، در بلند مدت منجر به خسارات سنگینی خواهد شد.
نکات ذکر شده برخی از نکات مهم کتاب کدنویسی تمیز است که درک آنها در مسیر حرفه ای هر برنامه نویس تاثیر ویژه ای میگذارد.
اگر نکته ای هست که از قلم افتاده و در لیست قرار نگرفته، لطفا آن را در کامنت ها بنویسید.
من محمدرضا باباخانی هستم، توسعه دهنده نرم افزار. در اینجا تجربیات، نظرات و پیشنهادات خودم رو درباره تکنولوژی مینویسم. امیدوارم مطالبی که مینویسم بدردتون بخوره.
ثبت دیدگاه