آموزش اصولی کد نویسی تمیز - بخش دوم

مجموعه مقالات Clean Code
مجموعه مقالات Clean Code


در ادامه مقاله کد نویسی تمیز برگرفته از کتاب Clean Code به نکات دیگری در خصوص نام گذاری صحیح اشاره میکنم :

1- از اسامی با معنی و مرتبط استفاده کنید

این تکه کد را

 class DtaRcrd102 {
        private Date genymdhms;
        private Date modymdhms;
        private final String pszqint = “102”;
        /\* _...  \*_/
}

مقایسه کنید با کد زیر

class Customer {
        private Date generationTimestamp;
        private Date modificationTimestamp;
        private final String recordId = &quot102&quot
        /\* _...  \*_/
}

در نام گذاری کلاس و اتربیوتها از نامهای کد شده و رمزی و مخفف سازی و اسامی بی معنی استفاده نشده. در نام گذاری های چند کلمه ای CamelCase رعایت شده . اسامی اتریبیوتها و متدها با حرف کوچک شروع شده و کلاسها با حرف بزرگ (البته مایکروسافت در زبانهایش بعضی موارد را نقض کرده مثل نام گذاری متدها با حرف اول بزرگ ، مثال ما از زبان جاواست که این سبک نام گذاری توسط برنامه نویسان آن رعایت میشود)

2- اسامی قابل جستجو انتخاب نمایید

به کد زیر توجه کنید :

for (int j=0; j<34; j++) {
         S+= (t[j]*4)/5;
 }

و حالا پس از تغییر

 int realDaysPerIdealDay = 3;
 int WORK_DAYS_PER_WEEK = 5;
 int sum = 0;
 for (int j=0; j<NUMBER_OF_TASKS; j++) {
         int realTaskDays = taskEstimate[j] * realDaysPerIdealDay;
         int realTaskWeeks = (realdays / WORK_DAYS_PER_WEEK);
         sum += realTaskWeeks;
 }

کد دوم طولانی تر است اما به جای استفاده از مقادیر ثابت عددی آنها در ثابتهایی با نام مشخص قراردادیم. با این کار جستجو در سطح برنامه بویژه زمانی که قرار است محل استفاده آنها را در یک کلاس بزرگ پیدا کنیم کار را به شدت راحت میکنند . ضمن اینکه با این کار خوانایی برنامه را بیشتر کردیم و برای برنامه نویسان دیگر قابل درک است

3- از پیشوندهای خاص برای دسته بندی متغیرها و متدها استفاده نکنید

شاید جالب باشد که مثلا نام همه متغیرهای محلی را با حرف m شروع کنید و یا متدهایی با چند کاراکتر پیشوند دسته بندی کنید. این کار به ظاهر ممکن است جالب باشد اما خوانایی برنامه را کم میکند

همینطور درصورتیکه مثلا همه اتریبیوتهای یک کلاس را با پیشوند atr شروع کنید دیگر نمیتوانید به راحتی از کمک IDE برای پیشنهاد نزدیکترین نام استفاده کنید چرا که همه نامهای شما در یک محدوده هستند.

public class Part {
         private String m_dsc; // The textual description
         void setName(String name) {
                 m_dsc = name;
         }
 }

را به این صورت بنویسیم :

public class Part {
         String description;
         void setDescription(String description) {
                 this.description = description;
         }
}

در این مثال نام گذاری مرتبط با موضوع و بدون پیشوند رعایت شده.

4- نام گذاری واسط‌ها (interface) و پیاده‌سازی‌ها

برای نام گذاری واسطها بعضی برنامه نویسیان واسط را با پیشوند و یا پسوند تعریف میکنند و پیاده سازی را با نام اصلی . از آنجایی که چند پیاده سازی از واسط میتواند وجود داشته باشد بهتر است واسط با نام اصلی و پیاده سازی های آن با نامهای مشابه موضوع و بعضا با پیشوند نام واسط نام گذاری شوند. البته میتوان به نام واسط اصلی اشاره ای نکرد :

نمونه نادرست

interface IShape  , class Circle

نمونه های درست

interface Shape , class Cricle یا CircleImpl
interface DatabaseFactory , class DatabaseFactorySQL , DatabaseFactoryOracle

توجه کنید در نام گذاری کلاسها و واسطها هرگز از کاراکتر '_' برای جداکردن کلمات استفاده نکنید