کدنویسی تمیز چیست؟ | مزایا و اصول Clean Code❤️
کدنویسی تمیز چیست؟ شاید تا به حال اصطلاح برنامه نویسی «کد تمیز» را شنیده باشید اما نمیدانید که کد تمیز چیست؟ اگر بخواهیم کدهای تمیز و قابل خوانایی داشته باشیم، باید از اصول کلین کد (Clean Code) در برنامه نویسی استفاده کنیم. در این مقاله از آموزش برنامه نویسی، کدنویسی تمیز (Clean Code) را با مثال ساده برای شما بیان میکنیم تا در نهایت بدانیم که مزایای Clean Code چیست؟ و چگونه از کد تمیز در برنامه نویسی استفاده کنیم؟
موضوعاتی که در این مقاله بررسی خواهیم کرد:
- کد تمیز چیست؟
- کد کثیف چیست؟
- معایب کد کثیف چیست؟
- کدنویس تمیز کیست؟
- مزایای کدنویسی تمیز چیست؟
- اصول کدنویسی تمیز چیست؟
- معرفی بهترین کتابها برای کدنویسی تمیز
- سخن بزرگان برنامه نویسی درباره Clean Code چیست؟
کد تمیز چیست؟
کد تمیز (Clean Code)، کدی است که قابلیت خوانایی بالایی داشته، مقیاسپذیر، قابل نگهداری و بازسازی باشد. همچنین کد تمیز باید عملکرد خودش را حفظ کند. به بیان ساده، کدهای تمیز، کدهایی هستند که برای همه، حتی برای مبتدیان نیز قابل درک باشند تا بتوانند در صورت نیاز تغییراتی در آن ایجاد کنند.
کد کثیف چیست؟
کد کثیف (Dirty Code) نیز متضاد کد تمیز (Clean Code) است. به عبارت سادهتر، کد کثیف کدی است که قابلیت خوانایی پایینی دارد، پیچیده و غیرقابل درک است و نمیتوان به سادگی در آن تغییراتی ایجاد کرد. در اصطلاح به کد کثیف، اسپاگتی کد (Spaghetti Code) نیز میگویند چون مانند ماکارونی درهم برهم و پیچیده است. تکرار مجدد و بیرویه کد در برنامه نویسی باعث به وجود آمدن کد کثیف میشود.
معایب کد کثیف چیست؟
در قسمت بالا دانستیم که کد تمیز چیست و با تعریف کد کثیف نیز آشنا شدیم. در این قسمت خواهیم دانست که معایب کد کثیف چیست؟
- افزایش تعداد خطوط کد و حجم برنامه
- کاهش سرعت برنامه
- کاهش خوانایی کد (پیچیدگی در تحلیل)
- کاهش فرآیند بازبینی و اصلاح کد
- افزایش هزینه و زمان
- و...
از آنجایی که این مقاله درباره کد تمیز است، به مفهوم کد کثیف در همین حد بسنده میکنیم و ادامه مقاله بیشتر به اصول و قواعد کدنویسی تمیز میپردازیم.
کدنویس تمیز کیست؟
کدنویس تمیز (The Clean Coder)، شخصی است که بتواند کد تمیز (Clean Code) بنویسد. کدنویسی تمیز باعث میشود که کدها ساده باشند تا همه بتوانند آن را به سادگی درک کنند و تغییراتی در آن ایجاد کنند. یک کدنویس تمیز باید مهارت بالایی در کدنویسی داشته باشد و با اصول کدنویسی تمیز و قواعد آن آشنا باشد.
مزایای کدنویسی تمیز چیست؟
در قسمتهای قبلی دانستیم که کد تمیز چیست؟ در این قسمت از مقاله، خواهیم دانست که چرا باید کد تمیز بنویسیم؟ پس در ادامه با ما همراه باشید تا بدانیم که مزایای کدنویسی تمیز چیست؟
- کاهش تعداد خطوط کد و حجم برنامه
- افزایش سرعت برنامه
- افزایش خوانایی و قابلیت تحلیل کد
- تسهیل فرایند بازبینی و اصلاح کدها
- صرفهجویی در هزینه و زمان
- و...
کاهش تعداد خطوط کد و حجم برنامه
چرا باید کد تمیز بنویسیم؟ اولین مزیت کلین کد (Clean Code) یا کد تمیز در برنامه نویسی این است که تعداد خطوط کد در برنامه کاهش مییابد. به عبارت سادهتر، کد تمیز باعث میشود که از تکرار کدهای زاید و بیمورد در برنامه نویسی جلوگیری کنیم. بگذارید با یک مثال سادهتر این موضوع را بیان کنیم.
متغیرهای زیر در جاوا اسکریپت را در نظر بگیرید که هر کدام مسئول ذخیره یک نوع داده هستند.
کد کثیف:
let firstName = 'Reza';
let lastName = 'Asgharzadeh';
let job = 'Programmer';
let birthAge = 1994;
همانطور که میبینید متغیر let در چند خط تکرار شده و باعث شده تعداد خطوط افزایش پیدا کند. برای رفع این مشکل، از کد یک خطی زیر استفاده میکنیم که نتیجه آن دقیقا مانند کد بالا است اما در یک خط نوشته شده است.
کد تمیز:
let [firstName,lastName,job,birthAge] = ['Reza','Asgharzadeh','Programmer',1994];
افزایش سرعت برنامه
چرا باید کد تمیز بنویسیم؟ دومین مزیت کدنویسی تمیز (Clean Code) این است که سرعت برنامه افزایش پیدا میکند. یعنی در اکثر موارد اگر تعداد خطوط برنامه کاهش یابد، کامپایلر یا مفسر مدت زمان کمتری را برای ترجمه به کد ماشین (سطح پایین) صرف خواهد کرد پس در نتیجه سرعت برنامه افزایش پیدا خواهد کرد. برای اطلاعات بیشتر در مورد زبانهای سطح بالا و پایین و همچنین کامپایلر و مفسر، مقالات زیر را مطالعه کنید:
افزایش خوانایی و قابلیت تحلیل کد
چرا باید کد تمیز بنویسیم؟ یکی دیگر از مزایای کدنویسی تمیز این است که خوانایی و قابلیت تحلیل کد افزایش پیدا میکند. یعنی برنامه نویس به راحتی از روی کد میتواند وظیفه و عملکرد آن را تشخیص دهد. برای مثال کد زیر در جاوا اسکریپت را در نظر بگیرید.
کد کثیف:
const o = new Date();
const y = dateObj.getFullYear();
این کد یک object را در ثابت یا const o ذخیره میکند و در const y از این object استفاده میکنیم تا «سال کنونی» را در آن ذخیره کنیم. اما مشکلی که کد بالا دارد این است که با یک نگاه از روی نام const نمیتوانیم وظیفه کد را تشخیص دهیم چون نام o و y برای ما قابل درک نیستند. برای رفع این مشکل از کد زیر استفاده میکنیم.
کد تمیز:
const dateObj = new Date();
const getCurrentYear = dateObj.getFullYear();
همانطور که میبینید از روی const dateObj میفهمیم که قرار است یک object از تاریخ (date) برای ما ذخیره کند. و در خط بعدی نیز const getCurrentYear به معنای آن است که میخواهد «سال کنونی» را برای ما ذخیره کند.
پس قرارداد نامگذاری متغیرها (Variable naming convention) در برنامه نویسی، برای درک بهتر وظیفه کد کمک میکنند. نامگذاری اصولی متغیرها باعث افزایش خوانایی و تحلیل کد و در نتیجه باعث رعایت اصول Clean Code میشوند.
تسهیل فرایند بازبینی و اصلاح کدها
چرا باید کد تمیز بنویسیم؟ در این قسمت از مقاله Clean Code چیست؟ مزیت چهارم کد تمیز میپردازیم. فرض کنید قرار است کدی بنویسیم که یک «نام» و «نام خانوادگی» را بگیربد و حروف کوچک اول هر کدام را به حروف بزرگ تبدیل کند. این کد باید برای 10 «نام و نام خانوادگی» بهصورت جداگانه مورد استفاده قرار بگیرد. به کد زیر دقت کنید.
کد کثیف:
const fullName = 'reza asgharzadeh';
const names = fullName.split(' ');
const namesUpper = [];
for (const n of names) {
namesUpper.push(n[0].toUpperCase() + n.slice(1));
}
console.log(namesUpper.join(' '));
کد بالا نام و نام خانوادگی با حروف کوچک «reza asgharzadeh» را به حروف اول بزرگ «Reza Asgharzadeh» تبدیل میکند. حال اگر بخواهیم برای نام و نام خانوادگی «ali alipour» نیز حروف اولشان را به حروف بزرگ تبدیل کنیم، باید دوباره از کد تکراری بالا استفاده کنیم و به جای «reza asgharzadeh»، از «ali alipour» استفاده کنیم. به مثال زیر دقت کنید.
کد کثیف:
const fullName = 'ali alipour';
const names = fullName.split(' ');
const namesUpper = [];
for (const n of names) {
namesUpper.push(n[0].toUpperCase() + n.slice(1));
}
console.log(namesUpper.join(' '));
حال اگر بخواهیم برای 10 نام متفاوت نیز این کار را انجام دهیم باید 10 بار کد بالا را تکرار کنیم و فقط نام و نام خانوادگی آن را تغییر دهیم. این کار، هم باعث تکراری شدن و افزایش تعداد خطوط میشود و هم اگر بخواهیم تغییرات جزئی در عملکرد برنامه ایجاد کنیم، باید هر 10 کد تکراری بالا را تغییر دهیم که فرآیند اصلاح کد طولانی و پیچیده میشود. برای رفع این مشکل از تابع زیر استفاده میکنیم.
کد تمیز:
const capitalizeName = function (fullName) {
const names = fullName.split(' ');
const namesUpper = [];
for (const n of names) {
namesUpper.push(n[0].toUpperCase() + n.slice(1));
}
console.log(namesUpper.join(' '));
};
کد بالا را یکبار برای همیشه بهصورت تابع یا function مینویسیم و هر جا که نیاز بود این تابع را فراخوانی کنیم و نام و نام خانوادگی را به آن پاس دهیم. مثلا برای تبدیل «reza asgharzadeh» به «Reza Asgharzadeh» از کد یک خطی زیر استفاده میکنیم:
capitalizeName('reza asgharzadeh');
برای تبدیل «ali alipour» به «Ali Alipour» از کد یک خطی زیر استفاده میکنیم:
capitalizeName('ali alipour');
برای 10 نام متفاوت نیز میتوان از کدهای تک خطی بالا به جایکدهای تکراری و طولانی استفاده کرد. اگر بخواهیم یک تغییر در برنامه ایجاد کنیم، فقط تابع (function) را تغییر میدهیم و تغییرات به تمام کدهای تک خطی اعمال میشود.
صرفهجویی در هزینه و زمان
چرا باید کد تمیز بنویسیم؟ در این قسمتهای بالا متوجه شدیم که کدنویسی تمیز چیست؟ و در «تسهیل فرآیند بازبینی و اصلاح کدها» مشاهده کردیم که چگونه یکبار کدنویسی کنیم و در همه جای برنامه بدون تکرار کد از آن استفاده کنیم. این کار باعث شد که اگر تغییری در برنامه ایجاد شد، نیاز به تغییر سایر کدها نباشد و تغییرات روی همه چیز اعمال شود. این کار باعث صرفهجویی در زمان و هزینه میشود.
اصول کدنویسی تمیز چیست؟
در قسمت قبل دانستیم که کدنویسی تمیز چیست؟ در این قسمت با اصول کدنویسی تمیز آشنا خواهیم شد. برخی از اصول کدنویسی تمیز عبارتاند از:
- سادگی کدها (KISS)
- عدم تکرار کدها (DRY)
- اجتناب از کدهای غیرضروری (YAGNI)
- خوانایی و قابل فهم بودن کدها
- نامگذاری مناسب
- مدیریت آرگومانها
- عدم کامنتگذاری بیش از حد
- انتخاب زبان مناسب
- بازبینی کدها
- کاهش وابستگیها
- تستپذیری
- کاهش حجم توابع
- و...
سادگی کدها (KISS) در اصول کدنویسی تمیز چیست؟
چگونه کد تمیز بنویسیم؟ یکی از اصول مهم در کدنویسی تمیز، اصل «KISS» مخفف «Keep It Simple, Stupid» است که به اصل «ساده نگه دار» اشاره دارد. این اصل تأکید میکند که کدها باید به سادگی نوشته شوند و پیچیدگیهای غیرضروری را به حداقل ممکن کاهش دهند.
به طور خلاصه، اصل KISS بیان میکند که سادگی در کدنویسی اهمیت دارد و باید تلاش کنید تا کدهای ساده، قابل فهم و آسان قابلیت خواندن و تغییر داشته باشند. با حفظ سادگی، قابلیت نگهداری، تست و توسعه کد بهبود مییابد و کیفیت نرمافزار ارتقا مییابد. از مهمتترین اصول KISS میتوان به موارد زیر اشاره کرد:
- سادگی
- حذف پیچیدگیهای غیرضروری
- استفاده از راهکارهای ساده و مستقیم
- حفظ خوانایی و فهم پذیری کدها
- کاهش تکرارها
- انعطافپذیری در تغییرات
- کاهش ریسک خطاها
- و...
عدم تکرار کدها (DRY) در کدنویسی تمیز چیست؟
چگونه کد تمیز بنویسیم؟ یکی دیگر از اصول کدنویسی تمیز، اصل «DRY» مخفف «Don't Repeat Yourself» است که به اصل «خودت را تکرار نکن» اشاره دارد. این اصل در کدنویسی تمیز به این معنی است که هر قطعه کد باید فقط یک بار و در یک مکان وجود داشته باشد.
به طور خلاصه، اصل DRY بیان میکند که برای جلوگیری از تکرار کدها، باید بخشهای مشابه را با استفاده از توابع، کلاسها، ماژولها و سایر وسایل مورد استفاده قرار دهیم. این اصل اهمیت زیادی به تقسیمبندی منطق کد، استفاده مجدد از قطعات کد و کاهش پیچیدگی و تغییرپذیری کد میدهد. با رعایت اصل DRY، قابلیت خواندن، نگهداری و تست کد بهبود مییابد و احتمال وقوع خطاهای تکراری کاهش مییابد.
اجتناب از کدهای غیرضروری (YAGNI) در کدنویسی تمیز چیست؟
چگونه کد تمیز بنویسیم؟ یکی دیگر از اصول کدنویسی تمیز، اصل «YAGNI» مخفف «You Aren't Gonna Need It» است که به اصل «شما به آن نیازی ندارید» اشاره دارد. این اصل در کدنویسی تمیز بیان میکند که نباید قطعات کدی را پیادهسازی کنید که در حال حاضر نیازی به آنها ندارید و ممکن است در آینده هم نیازی به آنها نداشته باشید.
به طور خلاصه، اصل YAGNI بیان میکند که نباید زمان و انرژی خود را صرف پیادهسازی قابلیتها و قسمتهای کدی کنید که در حال حاضر لازم نیستند. بهجای اینکه تمام حالتها را پیشبینی کنید، باید فقط بر روی موارد فعلی تمرکز کنید و کدها را ساده و قابل فهم نگه دارید. با رعایت اصل YAGNI، کد شما کمتر پیچیده میشود، زمان توسعه کمتری میبرد و ریسک ایجاد اشتباهات و خطاهای ناخواسته کاهش مییابد.
خوانایی و قابل فهم بودن کدها در اصول کدنویسی تمیر چیست؟
چگونه کد تمیز بنویسیم؟ خوانایی و قابل فهم بودن کدها نیز یکی اصول کدنویسی تمیز است. این اصل بیان میکند که کدها باید به گونهای نوشته شوند که برای برنامهنویسان دیگر قابل خواندن و فهمیدن باشند. هرچقدر کدها سادهتر باشند، درک و اصلاح کدها راحتتر خواهد بود.
نامگذاری مناسب در اصول کلین کد چیست؟
چگونه کد تمیز بنویسیم؟ نامگذاری مناسب از جمله اصول مهم در کدنویسی تمیز است. با استفاده از نامهای معنادار و توصیفی برای متغیرها، توابع، کلاسها و سایر عناصر کد، قابلیت خواندن و فهمیدن کد بهبود مییابد. در نامگذاریهای خود نباید از نامهای گنگ و غیرقابل تلفظ استفاده کنیم.
کارکرد یک کد باید از روی نام آن مشخص شود. برای مثال به کد زیر در جاوا اسکریپت توجه کنید:
کد کثیف:
let nnn = 'reza';
متغیر nnn اصلا قابل فهم نمیباشد. اکنون کد خود را به صورت زیر مینویسیم:
کد تمیز:
let firstName = 'reza';
در نگاه اول، هر شخصی متوجه میشود که متغیر firstName نام شخص را در خود ذخیره میکند.
مدیریت آرگومانها در کد تمیز چیست؟
چگونه کد تمیز بنویسیم؟ مدیریت آرگومانها (Argument Management) یکی از اصول مهم در کدنویسی تمیز است که به مدیریت و استفاده بهینه از آرگومانها در توابع و متدها میپردازد. این اصل بر اهمیت استفاده صحیح و بهینه از آرگومانها تاکید دارد تا کد قابل فهم، تست و توسعه باشد. از جمله موارد مهم در مدیریت آرگومانها در کدنویسی تمیز میتوان به موارد زیر اشاره کرد:
- کاهش تعداد آرگومانها: تلاش کنید تا تعداد آرگومانها را کمتر کنید. استفاده از تعداد زیادی آرگومان میتواند پیچیدگی را افزایش داده و خوانایی کد را کاهش دهد.
- استفاده از آرگومانهای انتزاعی: از طریق گروهبندی آرگومانها با استفاده از کلاسها یا ساختارهای داده انتزاعی، میتوانید کد خود را سادهتر و قابل فهمتر کنید.
- استفاده از نامهای معنادار برای آرگومانها: نامگذاری مناسب برای آرگومانها باعث میشود که قصد و عملکرد آنها به راحتی قابل فهم باشد.
- استفاده از آرگومانهای پیشفرض: در صورت امکان، برای آرگومانها مقادیر پیشفرض تعیین کنید. این کار میتواند از ایجاد آرگومانهای اضافی در فراخوانیها جلوگیری کند.
- استفاده از فرمتهای خوانا: توصیف دقیق نوع و ویژگیهای آرگومانها در مستندات کد، میتواند کمک کند تا استفاده از آرگومانها درست و معقولانه باشد.
- و...
عدم کامنتگذاری بیش از حد در کد تمیز چیست؟
چگونه کد تمیز بنویسیم؟ کامنتگذاری یکی از اصول کدنویسی تمیز است. اما نباید بیش از اندازه از کامنتگذاری استفاده کنید. کدهای شما باید به اندازهای ساده و قابل درک باشند که نیازی به توضیح اضافی و کامنت بیش از حد نداشته باشند. نظر استیون مککانل (Steven C. McConnell در این باره میگوید:
کد خوب، بهترین مستندسازی خودش است.
انتخاب زبان مناسب در کدنویسی تمیز چیست؟
چگونه کد تمیز بنویسیم؟ یکی دیگر از اصول کدنویسی تمیز، استفاده از زبان مناسب است. زبانهای برنامه نویسی ابزار هستند. همانطور که پیچگوشتی برای باز و بسته کردن پیچ و چکش برای کوبیدن میخ مناسب است، زبانهای برنامه نویسی نیز کاربردهای خاص خود را دارند.
بازبینی کدها در اصول کدنویسی تمیز چیست؟
چگونه کد تمیز بنویسیم؟ بازبینی کد (Code Review) به عنوان یکی از اصول مهم در کدنویسی تمیز، به معنای بررسی و ارزیابی کد توسط اعضای تیم توسعه است. هدف اصلی بازبینی کد ارائه بازخورد قابل اعتماد و بهبود کیفیت کد است. مواردی که در بازبینی کد مورد توجه قرار میگیرند عبارتند از:
- صحت و عملکرد: بررسی صحت و صحت عملکرد کد و اطمینان حاصل کردن از اینکه کد به درستی عمل میکند و نتایج مورد انتظار را تولید میکند.
- قابلیت خواندن: ارزیابی خوانایی کد و قابلیت درک آن برای سایر برنامه نویسان است که شامل استفاده از نامگذاری مناسب، سازماندهی منطقی، توضیحات کامل و استفاده از الگوهای قابل فهم است.
- عملکرد بهینه: ارزیابی کد به منظور بهبود عملکرد و بهینهسازی عملکرد کد در مواردی که ممکن است موجب افت سرعت یا مشکلات دیگر شود.
- استفاده از اصول و الگوهای طراحی: بررسی اینکه آیا کد با استفاده از الگوها و اصول طراحی مناسب توسعه یافته است یا خیر؟ این شامل جداسازی منطق، اصل تک مسئولیتی و توانایی توسعه و تغییرپذیری است.
- استفاده از بهترین شیوهها و استانداردها: بررسی استفاده از بهترین شیوهها، الگوها و استانداردهای کدنویسی در توسعه کد است.
کاهش وابستگیها در اصول کدنویسی تمیز چیست؟
چگونه کد تمیز بنویسیم؟ کاهش وابستگیها یکی از اصول مهم در کدنویسی تمیز است. وابستگی به معنای وابسته بودن یک قسمت از کد به قسمتهای دیگر است و میتواند به پیچیدگی و دشواری در تغییر و تست کد منجر شود. چون تغییر یک قسمت از کد باعث از کار افتادن عملکرد کد دیگر میشود.
با کاهش وابستگیها در کد، تلاش میشود تا قسمتهای مختلف کد از یکدیگر مستقل شوند و تغییر در یک قسمت تنها تأثیر کمی روی سایر قسمتها داشته باشد. این اصل بهبود قابلیت توسعه، نگهداری و تست کد را بهبود میبخشد. اصول 5 گانه SOLID در کاهش وابستگیها نقش اساسی دارند که در مقاله زیر به طور مفصل به آن پرداختهایم:
تستپذیری در کد تمیز چیست؟
چگونه کد تمیز بنویسیم؟ تستپذیری (Testability) یکی از اصول کدنویسی تمیز است که به معنی قابلیت آسانی تست کردن کد است. هدف از اصل تستپذیری این است که کدی تولید شود که بتواند به راحتی تحت تست قرار بگیرد و به صورت مستمر و قابل اعتماد توسط واحدهای تست (Unit Tests) یا تستهای خودکار (Automated Tests) ارزیابی شود.
کاهش حجم توابع در کدنویسی تمیز چیست؟
چگونه کد تمیز بنویسیم؟ کاهش حجم توابع (Reducing Function Size) یکی از اصول مهم در کدنویسی تمیز است. این اصل بیان میکند که توابع باید به حداقل حجم ممکن باشند و فقط یک کار مشخص را انجام دهند. هدف از این اصل افزایش خوانایی و قابلیت توسعه، تست و نگهداری کد است.
اصل تک مسئولیتی (Single Responsibility Principle) به اصل 1 اصول 5 گانه SOLID اشاره میکند و به این معنی است که هر تابع باید فقط یک مسئولیت داشته باشد و تنها یک کار را انجام دهد. این باعث میشود توابع کوچکتر، خواناتر و قابل توسعهتر باشند.
معرفی بهترین کتابها برای کدنویسی تمیز
در قسمتهای قبلی دانستیم که کدنویسی تمیز چیست؟ و چگونه باید کد تمیز بنویسیم؟ در این قسمت به معرفی بهترین کتابها برای آشنایی با اصول کدنویسی تمیز میپردازیم. کتابهای رابرت سی مارتین (Robert C. Martin) معروف به عمو باب، بهترین منابع برای یادگیری اصول کدنویسی تمیز هستند. از این لیست میتوان به 3 کتاب معروف زیر اشاره کرد:
- کتاب کدنویسی تمیز (Clean Code)
- کتاب کدنویس تمیز (The Clean Coder)
- کتاب معماری تمیز (Clean Architecture)
موضوع کتاب کدنویسی تمیز (Clean Code) چیست؟
کتاب کدنویسی تمیز (Clean Code) نوشته Robert C. Martin یکی از بهترین منابع برای یادگیری اصول کدنویسی تمیز است. این کتاب به بررسی مفهوم و اهمیت کدنویسی تمیز در توسعه نرمافزار میپردازد. هدف اصلی کتاب کدنویسی تمیز، توضیح اصول و روشهایی است که برنامه نویسان را در ایجاد کدی که قابل فهم، خوانا، و قابل نگهداری است، هدایت میکند.
در این کتاب، مفاهیم و اصول کدنویسی تمیز توضیح داده میشوند. نویسنده با استفاده از مثالها و الگوهایی که در صنعت نرمافزار رایج است، تکنیکها و روشهایی را برای بهبود کیفیت کد، خوانایی بالا و کاهش پیچیدگی معرفی میکند.
در محتوای کتاب کدنویسی تمیز، به موضوعاتی مانند نامگذاری مناسب متغیرها و توابع، طراحی کلاسها و ماژولها، اندازهگیری کیفیت کد، استفاده از تستها در کدنویسی و بسیاری از موضوعات دیگر پرداخته میشود.
برخی از موضوعات | توضیحات |
اهمیت کدنویسی تمیز | توضیح در مورد اهمیت و ارزش کدنویسی تمیز و تاثیر آن بر خوانایی، نگهداری و توسعه کد. |
نامگذاری | اهمیت نامگذاری مناسب برای متغیرها، توابع و کلاسها، اصول نامگذاری و راهنماییهای عملی برای انتخاب نامهای صحیح. |
توابع | اصول تکمیلی و کوتاهی توابع، تفاوت بین تابع و روش، تأثیر تعداد ورودیها و خروجیها بر توابع و نحوه نوشتن توابع قابل فهم و خوانا. |
کامنتها | استفاده درست از کامنتها، توصیهها و الگوهایی برای نوشتن کامنتها مفید و قابل فهم. |
طراحی کلاسها | اصول و الگوهای طراحی کلاسها و ارتباطات بین آنها، تجزیه و تحلیل دقیق نیازمندیها قبل از طراحی کلاسها. |
بستهبندی | اصول و روشهای بسته بندی کد و سازماندهی پروژههای بزرگ، مفهوم وابستگی و تلاش برای کاهش وابستگیها. |
اشکالزدایی | تکنیکهایی برای اشکالزدایی (Debugging) و رفع خطا در کد |
تست و ارزیابی | اهمیت تستها در فرآیند کدنویسی، انواع تستها، توصیهها برای نوشتن تستهای قوی و قابل اعتماد. |
اصول سادهسازی کدها | مانند DRY (Don't Repeat Yourself) و KISS (Keep It Simple, Stupid) و (You Aren't Gonna Need It) YAGNI |
موضوع کتاب کدنویس تمیز (The Clean Coder) چیست؟
کتاب کدنویس تمیز (The Clean Coder) نوشته Robert C. Martin، ادامهای بر کتاب کدنویسی تمیز (Clean Code) میباشد. این کتاب بر خلاف کتاب قبلی، به جزئیات بیشتری درباره مهارتها و وظایف یک برنامه نویس حرفهای میپردازد.
موضوع کتاب کدنویس تمیز بر مبنای نقش یک برنامهنویس حرفهای است. نویسنده در این کتاب، مفاهیم و اصولی را ارائه میدهد که یک برنامهنویس حرفهای باید در محیط کاری و با مشتریان و همکاران خود رعایت کند. برخی از موضوعاتی که در کتاب کدنویس تمیز به آن اشاره شده است به شرح زیر است:
برخی از موضوعات | توضیحات |
مسئولیتپذیری شخصی | تعهد و مسئولیت برنامهنویسان درباره کیفیت و تحویل به موقع کدها، انعطافپذیری در مواجهه با تغییرات و اصول اخلاق حرفهای. |
تعاملات حرفهای | تکنیکها و راهکارهای موثر برای ارتباط با مشتریان، همکاران و سایر اعضای تیم. |
مدیریت زمان | مفاهیم مدیریت زمان، برنامهریزی مناسب، تحویل به موقع و مدیریت تعهدات. |
توسعه حرفهای | بروز بودن در مورد فناوریهای جدید، یادگیری مستمر، شرکت در کارگاهها و کنفرانسها. |
کیفیت کد | استفاده از اصول و الگوهای کدنویسی تمیز، خوانایی کد، جلوگیری از بوجود آمدن کدهای تکراری. |
تست و ارزیابی | اهمیت تست کردن کدها، انواع تستها، نحوه نوشتن تستهای قوی و قابل اعتماد، ارزیابی کیفیت کد. |
تشویق به کنترل کیفیت | ارائه استدلالها و اطلاعات برای مدیران و مشتریان درباره اهمیت کیفیت کد و تأثیر آن بر پروژه. |
مشارکت در تیم | همکاری، ارتباط مؤثر، به اشتراک گذاری دانش و تجربه با سایر اعضای تیم. |
مشکلات و راهحلها | رویکردها و راهکارهای موثر برای حل مشکلات متداول در فرآیند کدنویسی. |
موضوع کتاب معماری تمیز (Clean Architecture) چیست؟
کتاب معماری تمیز (Clean Architecture) نیز از کتابهای سهگانه Robert C. Martin به حساب میآید. کتاب معماری تمیز به بررسی و توضیح اصول و الگوهایی میپردازد که در طراحی و ساخت نرمافزارهای قابل نگهداری، تست و توسعه به کار میروند.
معماری تمیز متمرکز بر سازماندهی و تقسیم بندی قابلیتهای نرمافزاری است. این معماری از طریق جداکردن مولفهها و لایههای مختلف سیستم، برنامه نویسان را قادر میسازد که به صورت مستقل تغییرات را اعمال و تست کنند. از اهمیت معماری تمیز میتوان به موارد زیر اشاره کرد:
برخی از موضوعات | توضیحات |
معماری سیستم | بررسی اصول و الگوهای معماری که ساختار و تقسیمبندی قابلیتهای سیستم را تعیین میکنند. |
اصول SOLID | بررسی اصول 5 گانه SOLID در برنامه نویسی شیءگرا و نحوه استفاده از آنها در طراحی سیستم. |
جداسازی لایهها | معرفی و توضیح لایهبندی سیستم به منظور جداسازی منطق دامنه (Domain) از لایههای نمایش (Presentation) و دسترسی به داده (Data Access). |
مدل دامنه (Domain Model) | بررسی رویکردها و الگوهایی برای طراحی و پیادهسازی مدل دامنه که نمایانگر بیزینس و قواعد کسبوکار است. |
معماری Hexagonal (Ports and Adapters) | معرفی الگوی معماری Hexagonal و نحوه جداسازی بخشهای درونی و بیرونی سیستم و ایجاد مرزهای واضح بین آنها. |
تستپذیری | بررسی روشها و اصولی برای طراحی سیستم به منظور ایجاد قابلیت تست و تستپذیری مناسب. |
مدیریت وابستگیها | رویکردها و الگوهایی برای مدیریت وابستگیها در سیستم و کاهش وابستگی به اجزای خارجی. |
اصول معماری تمیز | بررسی اصول و مفاهیم مهمی که در معماری تمیز برای طراحی سیستم رعایت میشوند، از جمله اصل Dependency Rule و اصل Stable Abstractions. |
ارتباط با پایگاه داده | معرفی رویکردها و الگوهایی برای مدیریت ارتباط با پایگاه داده و تأمین جداسازی لایه دسترسی به داده. |
تأثیر معماری تمیز بر کیفیت نرمافزار | بهبود قابلیت نگهداری، تستپذیری و قابلیت توسعه نرمافزار |
سخن بزرگان برنامه نویسی درباره Clean Code چیست؟
در این قسمت از مقاله کد تمیز چیست؟ به نقل قول و سخن بزرگان برنامه نویسی درباره اصول کدنویسی تمیز میپردازیم:
نظر کنت بک (Kent Beck) درباره کد تمیز چیست؟
کدی بنویسید که کار کند، درست و اصولی باشد و سریع اجرا شود.
نظر کوری هاوس (Cory House) درباره کدنویسی تمیز چیست؟
سورسکد مثل یک جوک (لطیفه) است؛ اگه مجبور به توضیح آن شدید، بدانید که اصلاً خوب نوشته نشده است.
نظر مارتین فولر (Martin Fowler) درباره اصول کدنویسی تمیز چیست؟
هر احمقی میتواند کدی بنویسد که کامپیوتر آن را بفهمد. برنامه نویسان خوب کدی را مینویسند که انسان بتواند آن را درک کند.
نظر خیدو فان روسوم (Guido van Rossum) درباره کدنویسی تمیز در پایتون چیست؟
لذت کدنویسی با پایتون، در کلاسهای کوتاه، مختصر و خوانا است. که اقدامات زیادی را با کد کمتر میتوان نوشت؛ نه در مجموعهای از کدهای بیاهمیت که خواننده را تا حد مرگ خسته میکند.
نظر بیل گیتس (Bill Gates) درباره کد تمیز چیست؟
اندازهگیری میزان پیشرفت در برنامه نویسی با تعداد خطوط کد، مانند اندازهگیری میزان پیشرفت در ساخت هواپیما بر اساس وزن است.
نظر جان وودز (John Woods) درباره کدنویسی تمیز چیست؟
همیشه طوری کدنویسی کنید که انگار شخصی که در نهایت کد شما را حفظ میکند، یک روانپریش خشن خواهد بود که میداند کجا زندگی می کنید.
نظر رابرت سی مارتین (Robert Cecil Martin) درباره اصول کدنویسی تمیز چیست؟
صرفاً کار کردن کد به تنهایی کافی نیست.
نظر استیون مککانل (Steven C. McConnell) درباره اصول کدنویسی تمیز چیست؟
کد خوب، بهترین مستندسازی خودش است.
برای مطالعه بیشتر درباره سخن بزرگان برنامه نویسی مقاله زیر را مطالعه کنید:
جمعبندی
کد تمیز چیست؟ در این مقاله به این پرداختیم که مزایای کدنویسی تمیز چیست؟ و با اصول کدنویسی تمیز (Clean Code) آشنا شدیم. کدنویسی تمیز باعث افزایش خوانایی کد، قابلیت نگهداری، افزایش سرعت توسعه، سهولت در تغییر و بازبینی کدها و کاهش زمان و هزینه میشود. اگر شما نیز با اصول کدنویسی تمیز آشنا هستید، لطفا در قسمت نظرات با یک مثال، کد تمیز را برای ما بیان کنید.