موضوع مقاله: قرارداد نام‌گذاری | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # قرارداد نام‌گذاری | مقدمه: قرارداد نام‌گذاری (برنامه‌نویسی) مجموعه‌ای از قواعد برای انتخاب رشتهٔ نویسه‌هایی است که به‌عنوان شناسه برای نام‌گذاری متغیرها، انواع داده، توابع و سایر موجودیت‌ها در کد منبع و مستندسازی نرم‌افزار به کار می‌رود. | ## بخش 1: قرارداد نام‌گذاری | در برنامه‌نویسی رایانه‌ای، استفاده از قراردادهای نام‌گذاری به‌جای آنکه برنامه‌نویسان آزادانه هر نامی را انتخاب کنند به خوانایی کد، یکپارچگی پروژه و کاهش خطا کمک می‌کند. انتخاب قرارداد نام‌گذاری گاه موضوعی بحث‌برانگیز است و هواداران هر سبک آن را برتر می‌دانند. بسیاری از شرکت‌ها و سازمان‌ها نیز مجموعه قراردادهای اختصاصی خود را تدوین کرده‌اند. این قراردادها ممکن است بخشی از مجموعهٔ گسترده‌تری از قواعد کدنویسی باشند که مستندسازی، قالب‌بندی و حتی ویژگی‌های مجاز و ممنوع زبان را نیز پوشش دهند. حتی با وجود قراردادهای مشخص و مدون، برخی سازمان‌ها ممکن است نتوانند به‌طور پیوسته از آن‌ها پیروی کنند که این امر به ناسازگاری و سردرگمی می‌انجامد. این مشکلات هنگامی تشدید می‌شوند که قواعد نام‌گذاری ناسازگار، دل‌بخواهی، دشوار برای به‌خاطرسپاری یا سنگین‌تر از فایدهٔ آن‌ها به نظر برسند. خوانایی شناسه‌هایی که به‌خوبی انتخاب شده باشند درک سیستم و نگهداری کد منبع را برای توسعه‌دهندگان بسیار آسان‌تر می‌کنند. برای نمونه، گرچه عبارت زیر ممکن است هدف موردنظر را برآورده سازد: a = b * c; اما مقصود آن آشکار نیست. پژوهش‌ها نشان می‌دهند که سبک شناسه بر یادآوری و دقت تأثیر می‌گذارد و آشنایی با یک سبک خاص سرعت یادآوری را افزایش می‌دهد. عناصر مشترک طول شناسه‌ها یکی از عناصر بنیادین هر قرارداد نام‌گذاری، قواعد مربوط به طول شناسه (تعداد نویسه‌های مجاز) است. ملاحظات اصلی عبارتند از: شناسه‌های کوتاه‌تر تایپ آسان‌تری دارند (هرچند بسیاری از محیط‌های توسعه تکمیل خودکار ارائه می‌دهند) شناسه‌های بسیار کوتاه (مانند i یا j) با ابزارهای جست‌وجو و جایگزینی دشوار یافت می‌شوند (مگر با عبارت باقاعده) شناسه‌های بلندتر اطلاعات بیشتری منتقل می‌کنند اما ممکن است شلوغی بصری ایجاد کنند از نظر تاریخی، کوتاهی نام متغیرها تا حدی ناشی از محدودیت‌های پیونددهنده‌های اولیه بود که نام متغیر را به ۶ نویسه محدود می‌کردند. همچنین نمایشگرهای کم‌وضوح نخستین (مثلاً ۸۰ ستونی) و ریشه‌های ریاضیاتی علوم رایانه که در آن متغیرها معمولاً تک‌حرفی‌اند در این امر نقش داشتند. | ## بخش 2: قرارداد نام‌گذاری | حروف بزرگ و کوچک و ارقام برخی قراردادها تعیین می‌کنند که آیا حروف می‌توانند بزرگ یا کوچک باشند. قراردادهای دیگر بزرگی و کوچکی حرف را آزاد می‌گذارند اما تفسیر مشخصی بر اساس حالت حرف ارائه می‌دهند. برخی قراردادها نیز مشخص می‌کنند که آیا نویسه‌های الفبایی، عددی یا الفبایی-عددی مجاز هستند و در چه ترتیبی. شناسه‌های چندکلمه‌ای از آنجا که بیشتر زبان‌های برنامه‌نویسی فاصله را در شناسه‌ها مجاز نمی‌دانند، روشی برای جداسازی واژهها لازم است. از نظر تاریخی برخی زبان‌های اولیه مانند الگول (۱۹۵۸) و فورترن (۱۹۵۵) فاصله را درون شناسه‌ها مجاز می‌دانستند، اما این رویکرد به دلیل دشواری تجزیهٔ واژگانی (tokenization) در زبان‌های بعدی کنار گذاشته شد. دو نویسه‌ای که معمولاً برای این منظور به کار می‌روند خط پیوند (-) و زیرخط (_) هستند. خط پیوند تقریباً در همهٔ برنامه‌های نوشته‌شده به کوبول (۱۹۵۹)، فورث (۱۹۷۰) و لیسپ (۱۹۵۸) به کار می‌رود و همچنین در دستورات و بسته‌های یونیکس و CSS رایج است. در مقابل، زبان‌هایی از سنت فورترن/الگول به‌ویژه خانوادهٔ سی و پاسکال از خط پیوند به‌عنوان عملگر تفریق در نشانه‌گذاری میانوندی استفاده می‌کنند و چون زبان نوشتار آزاد هستند نمی‌خواهند فاصله در اطراف آن الزامی باشد؛ بنابراین خط پیوند در شناسه‌ها ممنوع است. روش جایگزین استفاده از زیرخط است که در خانوادهٔ سی (از جمله پایتون) با حروف کوچک رایج است. زیرخط با حروف بزرگ (مانند UPPER_CASE) معمولاً برای ماکروهای پیش‌پردازندهٔ سی و متغیرهای محیطی در یونیکس به کار می‌رود. نماد موقعیتی سبکی که برای نام‌های بسیار کوتاه (هشت نویسه یا کمتر) به کار می‌رود. طرح واژهٔ ترکیبی (زبان OF) «زبان OF» آی‌بی‌ام در راهنمای سامانهٔ مدیریت اطلاعات (IMS) مستند شده بود. | ## بخش 3: قرارداد نام‌گذاری | واژه‌های CLASS معمولاً فهرستی کمتر از دو دوجین اصطلاح بودند و از نظر کارکرد مشابه پیشوندهای نماد مجارستانی عمل می‌کردند. قراردادهای ویژهٔ زبان‌های برنامه‌نویسی اکشن‌اسکریپت قراردادهای کدنویسی ادوبی برای اکشن‌اسکریپت عمدتاً با استانداردهای اکما اسکریپت سازگار است و سبک شناسه‌ها مشابه جاوااسکریپت است. سی و سی‌پلاس‌پلاس در سی و C++، واژه‌های کلیدی و شناسه‌های کتابخانه استاندارد سی عمدتاً با حروف کوچک هستند. نام‌هایی که ماکروهای پیش‌پردازنده را نمایش می‌دهند طبق قرارداد تنها با حروف بزرگ و زیرخط نوشته می‌شوند (مانند NULL و EINVAL). نام‌های دارای دو زیرخط متوالی یا آغازشده با زیرخط و حرف بزرگ برای پیاده‌سازی (کامپایلر، کتابخانهٔ استاندارد) رزرو شده‌اند. سی در پایگاه‌های کد قدیمی‌تر مانند استانداردهای کدنویسی گنو یا سبک هستهٔ لینوکس، همهٔ نمادها به‌صورت نوشته می‌شوند (به‌جز ماکروها و شمارشی‌ها که هستند). پایگاه‌های کد جدیدتر مانند اس‌دی‌ال، وولکان و Raylib از برای نمادها استفاده و از پسوند _t اجتناب می‌کنند. سی‌پلاس‌پلاس در C++ چندین سبک نام‌گذاری وجود دارد و هیچ‌یک غالب نیست: در راهنماهای سبک قدیمی‌تر و متأثر از سی، برای انواع به کار می‌رود. در راهنماهای سبک جدیدتر مانند گوگل، متا یا POCO، انواع به‌صورت و متدها و متغیرها به‌صورت نام‌گذاری می‌شوند. بی‌یارنه استراس‌تروپ، خالق سی‌پلاس‌پلاس، در کتاب خود سبکی به نام «PPP» را اتخاذ کرده که حرف نخست نوع را بزرگ می‌نویسد و اجزای نام را با زیرخط جدا می‌کند (مانند My_vector). جاوا قراردادهای نام‌گذاری جاوا از آغاز پیدایش این زبان الزامات دقیقی برای بزرگ‌نویسی کلاس‌ها و متغیرها تعیین کرده‌اند. استاندارد ایزو/آی‌ئی‌سی ۱۱۱۷۹ استاندارد ISO/IEC 11179-5 دربارهٔ ثبت فراداده شامل قراردادهای نام‌گذاری برای مفاهیم عناصر، حوزه‌های مفهومی و حوزه‌های مقداری است. | ## جمع‌بندی | این استاندارد همهٔ زبان‌های نشانه‌گذاری (HTML، XML و غیره) و نیز داده‌هایی را که از طریق عناصر فراداده توسط زبان‌های دیگر استفاده می‌شوند پوشش می‌دهد.