در مقالات قبلی درباره چیستی کدنویسی تمیز و اهمیت اون و همچنین درباره یه سری راهکارهای کلی برای نوشتن کدهای خوانا صحبت کردیم.
همچنین در قسمت صفرم از سلسله آموزشهای کدنویسی تمیز به اهمیت سادهنویسی در کدنویسی تمیز پرداختیم.
در این قسمت قصد داریم تا یه سری نکات برای نامگذاریها رو با هم دیگه بررسی کنیم.
یکی از موارد تاثیرگذار در خوانایی کدها، انتخاب نامهای صحیح هستش. قبل از اینکه وارد بحث نامگذاری در کدنویسی بشیم، بیاین به صورت کلیتر فلسله نامگذاری رو برررسی کنیم.
ما در دنیای واقعی برای اینکه بتونیم با هر آنچیزی که در پیرامون ما هستش از اشیاء گرفته تا اشخاص، دسترسی داشته باشیم، روی آنها نامگذاری میکنیم.
یه سری نکات وجود داره از جمله اینکه:
هر چه قدر نامهای ما یکتاتر باشند اسامی ما خاصتر میشند و از حالت عمومی بودن خارج میشند.
هر چقدر نامهای ما دقیقتر باشند و ابهام نداشته باشند باعث شفافیت بهتر میشند، مثلا توی دنیای واقعی یه سری کلمات چند پهلو هستند و دارای چند معنی هستند مثل کلمه شیر. آیا منظور از شیر، حیوان درنده شیر، یا شیر آب یا شیر گاو هستش؟
نامها بسته به موقعیت مکانی که قرار دارند دسترس پذیر میشند. مثلا توی یه خانواده اسم یه نفر علی هستش، وقتی یکی از اعضای خانواده نام علی رو صدا می کنه مشخصه که منظور کیه. اما توی یه فضای بزرگتری مثل مدرسه، اگه معلم اسم علی رو صدا کنه اینجا ممکنه چندین شخص با نام علی وجود داشته باشند. در اینجا هستش که برای دقیقتر شدن از نام خانوادگی شخص استفاده میشه. به عبارتی در بعضی جاها برای اینکه نامها دقیقتر بشند مجبوریم از توضیحات بیشتری استفاده کنیم.
و چندین نکتهی دیگه برای نامگذاری وجود داره که توضیح دادن اونا در این پست نمیگنجه. حالا که این موارد رو گفتم بیاین در دنیای برنامهنویسی، نامگذاری و اهمیت اونا رو بررسی کنیم.
نامها، همان کامنتهای کوچک هستند
اگه بخوایم یه تعریف جالبی از نامگذاری در برنامهنویسی داشته باشیم، بهتره که بگیم نامها در واقع یه سری کامنتهای خلاصه شده هستند. برای اینکه این موضوع روشنتر بشه بیان دو تا مثال زیر رو بررسی کنیم.
// 1
int d; // day
// 2
int day;
در مثال بالا یک متغیر با دو نام تعریف شده. یکی با نام d به همراه یک کامنت و دیگری با نام day و بدون کامنت.
به نظر شما کدوم یک از این دو متغیر خواناتر هستند؟ بله پاسخ day هستش. چون در اینجا دیگه نیازه به کامنت نیست.
به عبارت دیگه شما باید سعی کنید که نامگذاریهاتون به گونهای باشه که نیازی به کامنت نباشه و هرآنچیزی که نیازه در خود نام قرار داده بشه.
در نامگذاریها دقیق باشید
همیشه سعی کنید که نامهای دقیقی برای متغیرها و سایر موارد دیگه انتخاب کنید و از اسامی عمومی حتی الامکان پرهیز کنید. مثلا کلمه get یه کلمه خیلی عمومی هستش و دقیق نیست. مثلا توی برنامه آیا منظور از get ، دانلود (Download) یک فایل هستش؟ یا fetch کردن یه سری اطلاعات از پایگاه داده یا موارد دیگه؟
از دیکشنری استفاده کنید
به عنوان یه برنامهنویس، همیشه سعی کنید که برای انتخاب کردن نامهای دقیق در برنامهتون از دیکشنری استفاده کنید. یه نمونه از دیکشنریهای رایج google translate هستش.
از کلمات فینگلیش حتی الامکان پرهیز کنید
در برخی از کدهای افراد آماتور و تازهکار دیده شده که در نامگذاریها از کلمات فینگلیش استفاده شده. مثلا برای تعریف یه متغیر به عنوان اعداد اول، از همچنین چیزی استفاده شده:
List adadAval = [];
تعریف چنین متغیرهایی ممکنه برای اون شخص و یا حتی توسعهدهندگان ایرانی دیگه قابل فهم باشه. اما یه لحظه از خودتون سوال کنید اگه یه توسعهدهنده خارجی زبان دیگه به این خط از برنامه برسه آیا متوجه این بخش میشه؟ بهتره که به جای تعریف این متغیر از متغیری با نام primeNumbers استفاده کنیم.
پس توصیه میشه که به عنوان یه برنامهنویس، همواره از استانداردها و اصول رایج در میان برنامهنویسان استفاده کنیم و اصطلاحا، موارد من در آوردی خودمون رو وارد این حوزه نکنیم 🙂
نامهای ما چه قدر طولانی باشه؟
ببینید برای این مورد نمیشه یه اصل ثابتی رو تعریف کرد، اما اگه بخوایم یه معیاری رو برای میزان اندازه نامها معرفی کنیم می تونیم بگیم:
اندازه نام هر متغیر متناسب با میزان اسکوپ دسترسی پذیری آن تغییر میکند.
حالا اینو که گفتم یعنی چه؟
توی برنامهنویسی یه بحثی هست به نام قابل دسترسی بودن یا متغیرهای محلی و سراسری.
بسته به محل و نوع تعریف متغیرها، بخشهای دیگه از برنامه میتونند به اون متغیر دسترسی داشته باشند. هر چه قدر تعداد خط های بیشتری از برنامه به اون متغیر دسترسی داشته باشند یا به عبارتی اون متغیر گلوبال تر باشه نام اون هم باید با جزییات بیشتری باشه. اگه دقت کرده باشین در ابتدای این پست مثال نامگذاری اشخاص رو زدم. مثلا توی یه مکانی مثل خانواده اشخاص کافیه که تنها اسم کوچک همدیگه رو صدا بزنند مثلا بگن علی. اما توی یه فضای بزرگتر و عمومی تر برای اینکه ابهام پیش نیاد اون شخص رو با نام خانوادگی اش صدا می زنند مثل علی احمدی.
نامهای طولانی دیگر برای IDE ها مسالهای نیست
شاید یه عدهای به دلیل ترس از رخ دادن اشتباه تایپی در نامهای طولانی، از تعریف نامهای طولانی اجتناب کنند. اما امروزه با گسترش یافتن IDE های متنوع مثل vs code ، اندروید استودیو و … به دلیل وجود قابلیت تکمیل خودکار یا Auto Completion این کار خیلی آسون شده. فقط کافیه که چند کاراکتر اول اون متغیری که تعریف کردین رو تایپ کنید تا IDE از لیست پیشنهاداتش اونو براتون تکمیل کنه.
در قالب و فرمت نامگذاریها ثبات داشته باشید
به طور کلی در نامگذاری متغیرها و موارد دیگه یه سری قالبهایی وجود دارند مثل
camelCase
snake_case
و موارد دیگه.
همواره سعی کنید که از یه قالب ثابتی استفاده کنید. مثلا اگه در کل برنامه برای نامگذاری متغیرها از روش camelCase استفاده شده، نباید برای تعریف متغیر جدید از روش snake_case استفاده کرد.
ثابت بودن نوع نامگذاری متناسب با نوع هر مولفه، باعث به وجود آمدن پیوستگی و انسجام میشه و خوانایی برنامه رو افزایش میده
دقیقتر کردن نامگذاریها با افزودن اطلاعات جزییتر
همواره در انتخاب نامها از خودتون این سوال رو بپرسین که آیا در آینده برای خودم و یا سایر کدنویسهای دیگه این متغیر باعث به وجود اومدن ابهام و سوال نمیشه. اگه جواب مثبت هستش، سعی کنید با افزودن اطلاعات اضافهتر دیگه نام خودتون رو شفافتر کنید. برای مثال:
int day;
منظور از متغیر day چی هستش؟ آیا منظور روز در هفته هستش؟ آیا روز در ماه هستش یا روز در سال؟
// which one do you mean?
int dayOfWeak;
int dayOfMonth;
int dayOfYear;
سخن پایانی
در این پست برخی از نکات مربوط به نامگذاریها رو بیان کردیم. به طور کلی همواره تلاش کنید تا نامهای دقیق و شفافی رو انتخاب کنید. قبل از نامگذاری هرچیز همواره این سوال رو از خودتون بپرسید که آیا در آینده این نام باعث برداشت اشتباه نمیشه؟
در پایان امیدوارم که از این مقاله نکات آموزشی جالبی فرا گرفته باشین. خوشحال میشم که نظرات خودتون رو درباره این پست نیز بنویسید.
آشنایی با مفاهیم کدنویسی تمیز + راهکارهای کاربردی برای نوشتن کدهای خوانا