سبک تورفتگی
در برنامهنویسی رایانه، سبک تورفتگی قراردادی است که بر تورفتگی بلوکهای کد برای انتقال ساختار برنامه حاکم است. این مقاله بیشتر به زبانهای نوشتار آزاد مانند سی و زبانهای مشتقشده از آن میپردازد، اما این ممکن است بر اکثر زبانهای برنامهنویسی دیگر (مانند زبانهایی که در خانواده آکولادی قرار میگیرند) که در آنها کاربرد فضای خالی در غیر این صورت ناچیز است نیز اعمال شود (و در بیشتر مواقع نیز اعمال میشود). سبک تورفتگی تنها یکی از جنبههای سبکبرنامهنویسی است.
تورفتگی برای بیشتر زبانهای برنامهنویسی الزامی نیست و معمولاً از آن به عنوان نقطهگذاری ثانویه استفاده میشود. اما در عوض تورفتگی به درک بهتر ساختار یک برنامه از سوی کسانی که کد آن را میخوانند، کمک میکند. بهطور خاص، از تورفتگی برای مشخص کردن رابطهٔ میان ساختارهای کنترل جریان مانند شرطها، حلقهها و کدهای موجود در داخل و خارج از آنها استفاده میشود. با این حال، برخی از زبانهای برنامهنویسی (مانند پایتون و اوکام) بهجای استفاده از پرانتز یا کلمات کلیدی، از تورفتگی برای تعیین ساختار استفاده میکنند. به این قاعده، قاعدهٔ آفساید میگویند. در چنین زبانهایی، تورفتگی برای کامپایلر یا مفسر معنیدار است و چیزی بیش از شفافسازی یا سبک است.
در این مقاله از عبارت قلاب برای اشاره به پرانتز و از واژهٔ براکت برای اشاره به آکولاد یا همان { و } استفاده میشود.
قرار دادن براکت در عبارتهای مرکب
[ویرایش]تفاوت اصلی بین سبکهای تورفتگی در قرار دادن پرانتزهای دستورهای مرکب ({...}
) است که اغلب بعد از یک دستور کنترل مانند (if
، while
، for
) میآیند. در جدول زیر این نحوهٔ قرارگیری برای سبکهای مختلف تورفتگی در عبارتهای مورد بحث در این مقاله نشان داده شدهاست. سبک نشاندهندهٔ توابع با این مورد متفاوت است. سبک قرار دادن براکت در عبارتها ممکن است با سبک قرار دادن براکت برای تعریف تابع متفاوت باشد. برای ثبات، بدون توجه به عمق تورفتگی ترجیحی برای هر سبک، عمق تورفتگی در ۴ فاصله ثابت نگه داشته شدهاست.
قرارگیری براکت | سبکها |
---|---|
while (x == y)
{
something();
somethingelse();
}
|
آلمن |
while (x == y)
{
something ();
somethingelse ();
}
|
گنو |
while (x == y)
{
something();
somethingelse();
}
|
وایتاسمیتز |
while (x == y) {
something();
somethingelse();
}
|
کیاندآر |
while (x == y) {
something();
somethingelse();
}
|
رتلیف |
while (x == y)
{ something();
somethingelse();
}
|
هورسمان |
while (x == y)
{ something();
somethingelse(); }
|
پیکو |
while (x == y)
{ something();
somethingelse(); }
|
لیسپ |
#define W(c,b) {while(c){b}}
W(x==y,s();se();)
|
ایپیال |
جهش، فاصله و اندازه تورفتگی
[ویرایش]در بیشتر ویرایشگرهای برنامهنویسی از جمله نتپد++ (ویندوز)، تکستادیت (مکاواس/ایکس)، ایمکس (یونیکس)، ویآی (یونیکس) و نانو (یونیکس)، میتوان عرض نمایشدادهشده برای جهش را روی مقادیر دلخواه تنظیم کرد. علاوه بر این، این ویرایشگرها را میتوان به گونهای پیکربندی کرد که ترکیبی از جهشها و فاصلهها را ایجاد کنند یا به تبدیل میان جهشها و فاصلهها بپردازند تا با طرحهای تورفتگی خاصی مطابقت داشته باشند. در یونیکس، پهنای جهش را نیز میتوان در پیجرها، مانند less، تنظیم کرد و در همان لحظه با فیلترهایی مانند اکسپند/آناکسپند تبدیل کرد.
ویرایشگرهای یونیکس بهطور پیشفرض برای تعیین موقعیت جهشها در فواصل هشت ستونی تنظیم شدهاند، در حالی که محیطهای مکینتاش و مایکروسافت ویندوز بهطور پیشفرض چهار ستونی هستند. این تفاوت هنگام نمایش تورفتگی مرکب از جهشها و فاصلهها تحت پیکربندی تنظیمشده برای نمایش جهشها بهشکل متفاوت با پیکربندی نویسنده، باعث عدم تراز کد منبع میشود.
بحثهایی پیرامون انتخاب بین جهشهای سخت و فاصلههای سخت در میان برنامهنویسان در جریان است. بسیاری از برنامهنویسان اولیه بهمنظور سهولت بیشتر تایپ و همچنین کاهش حجم فایل منبع، از کلید جهش برای ایجاد تورفتگی استفاده میکردهاند. برخی برنامهنویسان نظیر جیمی زاوینسکی معتقدند که استفاده از فاصله بهجای جهش باعث افزایش انتقالپذیری چندسکویی میشود.[۱] سایر برنامهنویسان مانند نویسندگان استانداردهای کدنویسی وردپرس دارای عقیدهٔ عکس این قاعده هستند: آنها معتقدند که استفاده از جهش سخت باعث افزایش انتقالپذیری میشود.[۲] یک نظرسنجی انجامشده از ۴۰۰٬۰۰۰ مخزن برتر در گیتهاب نشان دادهاست که استفاده از فاصله رایجتر است.[۳]اندازهٔ تورفتگی معمولاً از سبک مستقل میباشد. آزمایشی که در سال ۱۹۸۳ روی کد پاسکال انجام شد، نشان داد که اندازهٔ تورفتگی بهطور قابل توجهی بر درک بهتر کد اثر میگذارد. این موضوع ثابت شدهاست که اندازهٔ تورفتگی بین ۲ تا ۴ نویسه، سطح بهینهای از تورفتگی است.[۴]
جستارهای وابسته
[ویرایش]منابع
[ویرایش]- ↑ Zawinski, Jamie (2000). "Tabs versus Spaces: An Eternal Holy War". Retrieved 6 June 2016.
- ↑ "WordPress Coding Standards". Retrieved 6 June 2016.
- ↑ Hoffa, Felipe (2017-07-26). "400,000 GitHub repositories, 1 billion files, 14 terabytes of code: Spaces or Tabs?". Medium (به انگلیسی). Retrieved 2019-07-09.
- ↑ Miara, Richard J.; Musselman, Joyce A.; Navarro, Juan A.; Shneiderman, Ben (November 1983). "Program Indentation and Comprehensibility" (PDF). Communications of the ACM. 26: 861–867. doi:10.1145/182.358437. Retrieved 3 August 2017.
پیوند به بیرون
[ویرایش]- C Style: Standards and Guidelines: Defining Programming Standards for Professional C Programmers, Prentice Hall, شابک ۰−۱۳−۱۱۶۸۹۸−۳ / شابک ۹۷۸−۰−۱۳−۱۱۶۸۹۸−۵ (full text is also online). Straker, David (1992).
- Contextual Indent
- GNU Coding Standards
- Source Code Formatters در کرلی