قوانین مشترک در قواعد نامگذاری زبانهای برنامه نویسی
معرفی چند روش نامگذاری
چه زمانی از چه شیوه ی نامگذاری باید استفاده کرد؟
قواعد نامگذاری در برخی از زبانهای برنامه نویسی
جمع بندی
قواعد نامگذاری در برنامه نویسی نحوه ی نوشتن و نامگذاری اسامی پوشه ها، متغیرها، متدها، توابع، کلاس ها، پکیجها و ... را تعیین میکند. برنامه نویسان از انواع مختلفی از روشها برای نامگذاری موجودیتهای مختلف در کدهای خود استفاده میکنند. از معروفترین قواعد نامگذاری میتوان Camel Case، Snake Case، Kebab Case و Pascal Case را نام برد.
انتخاب قواعد نامگذاری میتواند موضوع بحث برانگیزی باشد و هر کدام از روشهای ارائه شده برای آن کاربران و طرفداران خود را دارد. برخی از شرکتها نیز قواعد خاصی برای نامگذاری تدوین کرده اند. در این مقاله با قواعد نامگذاری و روشهای معروف آن بیشتر آشنا خواهیم شد. اگر شما قصد یادگیری برنامه نویسی را دارید یا اینکه برنامه نویسی بلد هستید ولی با قوائد نامگذاری آن آشنا نیستید این مقاله برایتان مفید خواهد بود.
چرا باید از قواعد نامگذاری پیروی کرد؟
برنامه نویسان برای بهبود کارکرد خود در ایجاد کدهایی بهینه با قابلیت خوانایی، عیب یابی و استفاده ی مجدد بالا باید مهارتهای گوناگونی را بیاموزند که یکی از این مهارتهای ضروری یادگیری مجموعه قواعد کدنویسی است تا بتوان کدهایی با انسجام بالا در قالب و استایلی استاندارد ایجاد کرد. یکی از این قواعد، قواعد نامگذاری است.
در برنامه نویسی کامپیوتر قواعد نامگذاری مجموعه ای از قوانین برای انتخاب دنباله ای از کاراکترهاست بطوریکه بتوان با آن نام متغیرها، توابع، کلاسها و سایر موجودیتها در کدها و مستندات را نمایش داد. دلایل استفاده از قواعد نامگذاری و ضرورت رعایت کردن آن توسط برنامه نویسها به جای استفاده از اسامی دلخواه با دنباله ای بدون قاعده ای خاص از کاراکترها، شامل موارد زیر است:
خوانایی کد منبع افزایش مییابد.
برنامه نویسان حین مرور کد بر موضوعاتی مهمتر از نام متغیرها متمرکز میشوند.
نحوه ی نامگذاری متغیر میتواند اطلاعات اضافی درخصوص آن متغیر در اختیار استفاده کنندگان آن کد قرار دهد.
رعایت این قواعد میان اعضای تیم توسعه دهنده باعث تولید کدهایی با کیفیت و استاندارهای بالاتر میشود.
بازسازی، جستجو و جایگزینی توسط ابزار خودکار را با حداقل خطا ممکن میسازد.
وضوح کد افزایش مییابد.
ظاهر کد را زیباتر میکند. برای مثال زمانیکه برنامه نویس نباید از نامهای طولانی برای نامگذاری استفاده کند، ظاهر کدها تمیزتر میشود.
رعایت قواعد نامگذاری از بروز تداخل حین ترکیب کدها از بخشهای مختلف با هم، جلوگیری میکند.
می توان کدهایی با دادههای معنی دار تولید کرد. این امر بخصوص زمانیکه باید کدها و مستندات را تحویل دیگران داد بسیار مهم است.
استفاده مجدد کد و درک کارکرد آن بخصوص هنگام مرور آن پس از مدت زمان طولانی از ایجاد آن راحتتر میشود.
چالشهای انتخاب قواعد نامگذاری در برنامه نویسی
از آنجاییکه افراد مختلف در یک تیم توسعه ممکن است سلیقه و نقطه نظرات متفاوتی داشته باشند، انتخاب روشی واحد گاه چالش برانگیز است. همچنین گاهی علیرغم قواعد تعریف شده برای نامگذاری در یک سازمان، این قواعد خارج از سازمان شناخته شده نیست و حین تبادل برنامه بین سازمانها ، سردرگمی در خوانایی برنامهها ایجاد میشود. حال اگر بخشهای مختلف یک سازمان قواعد نامگذاری مختلف به کار ببرند و یا بخشی از آنها از قواعد خاصی پیروی نکنند تجمیع و یکپارچه سازی کدها و برنامههای بخشهای مختلف با مشکل مواجه خواهد شد.
قوانین مشترک در قواعد نامگذاری زبانهای برنامه نویسی
قوانین دقیق برای قواعد نامگذاری متغیرها، توابع، کلاسها و ... بستگی به متن و محتوایی دارد که در آن به کار گرفته شده اند. با این وجود، چندین قاعده ی مشترک وجود دارد که در همگی آنها بهتر است رعایت شوند.
1. ثبات در نامگذاری یا Consistency
برای هر مفهوم یک کلمه ی مشخص انتخاب کنید و از آن کلمه در طول کد برای آن مفهوم استفاده کنید. برای مثال سه عبارت زیر را برای متد درخواست داده به صورت غیرمحلی (request data remotely) میتوان در نظر گرفت:
اگر واژه ی fetch را برای اینکار انتخاب کردید، باید برای سایر درخواستهای راه دور و غیر محلی برنامه از این واژه استفاده کنید. برای مثال fetchPermissions و fetchUserDetails.
2. استفاده از اسامی معنی دار یا Meaningful
نویسنده ی اصلی و اولیه کد با مدل فکری و پیشینه ی ذهنی خود از کلیات برنامه یک کد را مینویسد. از این رو شاید خواننده ی دیگر کد، مدل ذهنی دیگری داشته باشد و کد نوشته شده برایش مبهم باشد. برای درک بهتر فرض کنید در بخشی از کدمان برای اشاره به تعداد کاربران از واژه ی users استفاده کرده ایم و طبق مدل ذهنی ما برای این برنامه، این واژه برای ما کاملاً ملموس و یادآورنده ی تعداد کاربران است. اما بهتر است برای معنی دار بودن توسط بقیه از عبارت numberOfUsers استفاده کنیم تا بدون پیشینه ی ذهنی راجع به کد هم بتوان درک درستی از قسمتهای مختلف آن داشت.
3. تمایزات معنادار یا Meaningful Distinctions
باید برای اهداف یکسان از اسامی یکسان استفاده کرد. در غیر اینصورت اگر هدف و کارکرد آن اسامی متفاوت بود نباید آن اسامی مشابه باشند. برای مثال هر سه عبارت getUserDetails، getUserInfo و getUserData یک مفهوم را دارند و نباید برای سه کار مختلف به کار گرفته شوند.
همچنین فرض کنید دو کلاس A و B را داریم. در هر دوی آنها تابع ()add را تعریف کرده ایم. در کلاس A این تابع دو عدد را با هم جمع میکند و در کلاس B ورودی را به انتهای لیست از قبل تعریف شده ای میافزاید.
// Function in Class A
function add(x, y) {
return x + y;
}// Function in Class B
function add(x) {
this.items.add(x);
}
به کار بردن نام add برای هر دوی این توابع سبب ابهام میشود. پس بهتر است از addNumbers(x,y) در کلاس A و از insertElement(x) در کلاس B استفاده کرد.
4. اجتناب از رمزگذاری یا Avoid Encoding
از رمزگذاری غیر ضروری متغیرها کنار نام متغیرها اجتناب کنید. به مثال زیر توجه کنید:
string urlString;
int numberOfMembersInt;
Array<string> namesArray;
اگرچه گذاشتن اطلاعات درخصوص نوع داده در کنار نام متغیر در ظاهر میتواند مفید باشد اما این را در نظر داشته باشید که باید نام گذاری در سطحی انتزاعی رخ دهد و درگیر مفاهیم کدنویسی نشود.
5- استفاده از نامهای قابل تلفظ یا Pronounceable names
زبان یا کلماتی که جستجوی آنها در کد سخت باشد، مورد پسند کسی نخواهد بود. به مثال زیر توجه کنید:
const lblFName; //first name label
const nowTsMs; //now date timestemp since 1970 in milliseconds
اسامی متغیرهایی مانند مثال بالا از نظر تلفظ روان نیستند و از این رو بخاطر سپاری آنها نیز دشوار است. علاوه بر آن کد باید قابلیت جستجوی عبارات را داشته باشد. هرچه تعداد خطهای کد افزایش یابد نیاز به جستجو نیز بیشتر میشود و نامگذاری هایی این چنین، کار جستجو را سختتر میکنند.
6- نامگذاریها نباید توهین آمیز و یا غیررسمی باشد Don’t be Offensive/Cute
پروژهها و کدها ممکن است اوپن سورس باشند و یا در یک زمینه ی فرهنگی خاص نشر پیدا کنند. از این رو کدهای شما را افراد مختلف با پیشینههای فرهنگی متفاوت ممکن است ببینند. پس باید در نامگذاری حواس تان به تعابیر و برداشتهای مختلف و گاه متضاد از اسامیها باشد.
بطور کلی طبق قواعد نام گذاری در برنامه نویسی اسامی باید عمومی، مرتبط به موضوع و به دور از هر گونه لغات عامیانه در یک فرهنگ باشند.
7- استفاده از اسامی با مفهوم مثبت یا Positive
سعی کنید از مفاهیم مثبت در نامگذاری استفاده کنید. به طور مثال برای یک مقدار بولین به جای isDisabled از isEnabled، به جای isUndefined از isDefined و ... استفاده کنید.
به عنوان توصیه ی نهایی و جمع بندی در این بخش به خاطر بسپارید که استفاده از کاراکترها و تایپ آنها بدون قاعده ی خاصی جهت نامگذاری اگرچه در ظاهر هزینه ای برای کدنویس ندارد، اما یک کد ناخوانا در آینده قطعاً هزینه بر خواهد بود. پس همواره فراموش نکنید که:
شما تنها کسی نیستید که قرار است این کد را بخواند.
حال و هوای ما نباید در کدی که مینویسیم تأثیر بگذارد.
انسانها قرار است کد ما را بخوانند، نه ربات ها. پس خوانایی آن و اسامی معنادار باید برایتان مهم باشد.
حتماً کد خود را پس از نوشتن مرور کنید و به جزئیات دقت کنید.
معرفی چند روش نامگذاری
در طی سالیان مختلف برنامه نویسان شیوههای مختلفی را برای چگونگی تایپ نامهای مختلف مانند متغیرها، توابع، کلاسها و ... به کار گرفته اند. از میان این شیوههای مختلف چهار مورد مشهورترند و بیشتر استفاده میشوند:
Camel Case
Snake Case
Kebab Case
Pascal Case
شیوه ی تایپ Camel Case
در این روش نوشتاری نامها با حرف کوچک شروع میشوند. اگر نامی از چند کلمه تشکیل شده باشد، ابتدای کلمات دیگر با حرف بزرگ تایپ میشوند. برای مثال عبارات firstName و lastName به شیوه ی Camel Case هستند.
شیوه ی تایپ Snake Case
در این روش نوشتاری نیز نامها با حروف کوچک نوشته میشوند و اگر نامی از چند کلمه تشکیل شده باشد، کلمات با علامت آندرلاین (_) از هم جدا میشوند. برای مثال عبارات first_name و last_name به شیوه ی Snake Case هستند. شیوه ای تحت عنوان Screaming Snake Case هم داریم که در آن تمامی حروف با حرف بزرگ نوشته میشوند و نامهای چندکلمه ای با آندرلاین از هم جدا میشوند.
شیوه ی تایپ Kebab Case
این روش نوشتاری نیز مشابه Snake Case است با این تفاوت که به جای آندرلاین از علامت خط تیره یا hyphen (-) برای جداسازی کلمات استفاده میکنند. برای مثال عبارات first-name و last-name به شیوه ی Kebab Case هستند.
شیوه ی تایپ Pascal Case
برخلاف تمامی شیوههای قبلی در این روش نوشتاری شروع نامها با حرف بزرگ است و اگر نامی از چند کلمه تشکیل شده باشد، هر کلمه با حرف بزرگ تایپ میشود. برای مثال FirstName و LastName به شیوه ی PascalCase نوشته شده اند.
پاسخ این سوال به زبان برنامه نویسی که شما با آن کار میکنید و نیز نوع موجودیتی که در آن زبان میخواهید نامگذاری کنید بستگی دارد. برای مثال در زبان برنامه نویسی پایتون نام متغیرها و توابع به شیوه ی Snake Case است اما در زبان جاوااسکریپت متغیرها و توابع به شیوه ی Camel Case نامگذاری میشوند. برای مثال در زبان پایتون داریم:
در زبان جاوا اسکریپت هم مثال مشابهی به شکل زیر داریم:
const userName = "Farhan";
function reverseName(name) {
return name.split("").reverse().join("");
}
با وجود اینکه در هر دوی زبانها برای نامگذاری متغیرها و توابع شیوه ی مختلفی به کار گرفته شده است اما در هردو برای نامگذاری موجودیت کلاس از شیوه ی Pascal Case استفاده میکنند. اینکه در هر زبانی از چه قانونی برای نامگذاری باید پیروی کرد بستگی به داکیومنت آن زبان در باره ی قواعد نامگذاری دارد. در ادامه به این موضوع بیشتر پرداخته ایم.
قواعد نامگذاری در برخی از زبانهای برنامه نویسی
زبانهای برنامه نویسی هر کدام از قواعدی برای نامگذاری استفاده میکنند که برای نوشتن کدهای حرفه ای رعایت این قواعد کمک کننده است. برای مثال در برخی از زبانها به سبک زبان C یا همان C-Styled مانند جاوااسکریپت، تایپ اسکریپت و جاوا از روش Camel Case برای نامگذاری متغیرها، توابع، متدها و ویژگیهای اشیا استفاده میکنند و Pascal Case را برای نامگذاری کلاس ها، interfaceها و namespaceها به کار میبرند.
این به آن معنی نیست که شما نمیتوانید از شیوههای نامگذاری دیگر در این زبانها استفاده کنید. حتی میتوانید از روشهای غیر مرسوم نیز برای نامگذاری استفده کنید، اما توجه داشته باشید که رعایت قوانین نامگذاری هر زبان خوانایی کد و نگهداری آن را آسانتر میکند.
در جدول زیر قواعد نامگذاری برای زبانهای پایتون، پی اچ پی، سی شارپ، جاوا و جاوااسکریپت آورده شده است. برای مطالعه ی بهتر این قواعد میتوانید به لینک داکیومنتهای هریک مراجعه کنید.
جمع بندی
در زبا نهای برنامه نویسی قراردادهای نامگذاری برای خوانایی، درک، جستجو و نگهداری کدهای نوشته شده توسط هر زبان تعریف شده اند. اگرچه عدم رعایت آنها در نامگذاری موجودیتهای زبان برنامه نویسی موجب خطای کامپایلری کد نمیشوند، اما به عنوان یک برنامه نویس که با تیمی متشکل از برنامه نویسان دیگر همکاری میکند، دانستن و رعایت این قوانین جزو ملزومات است. یک برنامه نویس باید همواره به فکر خوانایی و قابلیت استفاده ی مجدد کدهای خود باشد و با رعایت اصول کدنویسی بتواند امتیاز کدهای تمیز و خوانا را به برنامههای خود اختصاص دهد.
مختصر و مفید و کاره راه بنداز و بهینه. من کلی گشتم اکثرا دوره ی ویدیوییی گذاشته بودن که اینو توضیح بدن(کلی هم وقت گیر) اما شما با یه جدول خلاصه کلام رو گفتین. مرسی
۰۳ تیر ۱۴۰۲، ۰۰:۱۰
سلام خسته نباشید. به نظر شما تو کورسهای برنامه نویسی مثل جاوا اسکریپت ، ریکت و یاحتی نود از بین maximilian و jonas کدومشون بهتره؟
ممنون میشم اگر تجربه ای دارید در اختیارم بذارید.
نازنین کریمی مقدم۰۹ تیر ۱۴۰۲، ۱۹:۳۸
درود
هر دو عالی هستند و مزایای خودشون رو دارند.
توصیه شده برای جاوا اسکریپت و نود جی اس جوناس و برای ری اکت و تایپ اسکریپت مکس انتخاب بشه.
<a href="https://www.quora.com/Which-ones-is-the-best-JavaScript-course-between-Maximilian-Schwarzmuller-or-Jonas-Schmedtmann-on-Udemy-com" target="_blank" rel="noopener nofollow ugc">مکس یا جوناس؟</a>
شروع رایگان یادگیری برنامه نویسی
کلیک کنید 👇
دوره الفبای برنامه نویسی با هدف انتخاب زبان برنامه نویسی مناسب برای شما و پاسخگویی به سوالات متداول در شروع یادگیری موقتا رایگان شد: