اولین تمرین در هر مسیر، یک تمرین بسیار سادهی «Hello, World!» است.
هدف تمرین این است که سریع مطمئن شویم همهچیز درست به هم متصل شده است. این کار تأیید میکند که کاربر محیط برنامهنویسی را درست نصب کرده است، میداند testها را چطور اجرا کند و میتواند آنها را پاس کند. علاوه بر این، برای کلاینت خط فرمان Exercism (CLI) هم تضمین میکند که کاربر CLI را درست نصب و پیکربندی کرده است و اینکه سایت فایلهای درست تمرین را تحویل میدهد و هیچ فایل جانبی نالازمی ارسال نمیکند. در آخر هم تضمین میکند که کاربر با چرخهی دانلود یک تمرین با CLI، حل مسئله در محیط توسعهی محلی و ارسال راهحل به سایت آشناست.
به بیان دیگر، اینجا هنوز واقعاً بحث یادگیری چیزی دربارهی خود زبان مطرح نیست. هدف ما چیزی بسیار ساده است.
این احتمالاً سختترین بخش راهاندازی درست مخزن مسیر هم خواهد بود، چون اجزای متحرک زیادی در پیادهسازی یک تمرین دخیلاند.
تمرین «Hello, World!» قواعد ویژهی خودش را دارد:
prerequisites نداردpractices نداردتمرین «Hello, World!» (و در واقع، همهی تمرینهای Exercism) به مجموعهی مشخصی از فایلها نیاز دارد:
پیش از آنکه بتوانیم تمرین «Hello, World!» را بسازیم، باید دربارهی نامها و مسیرهای فایل مخصوص مسیر تصمیمهایی بگیرید (مجموعهی test، پیادهسازی stub، پیادهسازی نمونه و هر فایل تکمیلی دیگری).
قاعدهی سرانگشتی این است که نامهایی را به کار ببرید که برای آن زبان طبیعیاند. جایی که ترجیح قویای وجود ندارد، ساختار دایرکتوری کمعمقتر را ترجیح دهید. پیادهسازی نمونه باید برای اسکریپت CI قابلبازشناسی باشد، پس بهتر است یک نام پایهی عمومی انتخاب کنید که همهی تمرینها بتوانند از آن استفاده کنند، مثلاً example، sample یا reference-solution.
پس از انتخاب مسیرهای فایل مخصوص مسیر، باید آنها را در کلید files در فایل config.json ریشه پیکربندی کنید. کلید files بهعنوان قالب همهی تمرینها عمل میکند و به این ترتیب به هر ابزاری (که برخی از آنها را همین الان به کار میبریم) اجازه میدهد بداند فایلها را کجا جستوجو کند. میتوانید از جاینگهدارهای گوناگون استفاده کنید تا پیکربندی اسلاگ تمرین (hello-world در این مورد) راحت شود.
اگر مسیر شما برای فایلهایش از PascalCase استفاده میکند، کلید files ممکن است چنین شکلی داشته باشد:
"files": {
"solution": [
"%{pascal_slug}.cs"
],
"test": [
"%{pascal_slug}Tests.cs"
],
"example": [
".meta/Example.cs"
]
}
فایل(های) نمونه باید داخل دایرکتوری .meta نگهداری شوند.
برای اطلاعات بیشتر، مستندات کلید files را ببینید.
پس از مشخصکردن قالبهای مسیر فایل، میتوانید با اجرای دستورهای زیر از دایرکتوری ریشهی مسیر، فایلهای تمرین «Hello, World!» را بهسرعت بسازید:
bin/fetch-configlet
bin/configlet create --practice-exercise hello-world
برای اینکه وبسایت شما را بهعنوان نویسندهی تمرین فهرست کند، این مراحل را دنبال کنید:
داخل فایل .meta/config.json تمرین:
authors اضافه کنیدبرای اینکه این کار انجام شود، باید حساب Exercism خود را به GitHub متصل کنید. این کار را میتوانید در وبسایت، در بخش «Integrations» صفحهی تنظیمات انجام دهید.
به نویسندگان تمرین اعتبار هم اعطا میشود.
مخزنهای مسیر تازهتر میتوانند برای افزودن تمرینهای جدید از اسکریپت bin/add-practice-exercise (منبع) استفاده کنند:
bin/add-exercise -a <github_username> two-fer
اگر روی مخزن مسیری کار میکنید که این فایل را ندارد، میتوانید آنها را با استفاده از پیوند منبع بالا به مخزن خود کپی کنید.
وقتی فایلهای اسکلتبندیشده ساخته شدند، باید:
بخشی کلیدی از افزودن یک تمرین، افزودن testهاست. بهطور کلی، هنگام پیادهسازی یکی از تمرینهای بالا دو گزینه دارید:
canonical-data.json تمرین استفاده کنید.https://exercism.org/exercises/hello-world بروید تا ببینید کدام مسیرها یک تمرین خاص را پیادهسازی کردهاند).برای تمرین «Hello, World!» فقط یک مورد test وجود خواهد داشت، پس هر دو گزینه خوباند.
فایل پیادهسازی نمونه باید کدی را داشته باشد که برای حل testها لازم است.
فایل stub باید راهحلی تقریباً کارآمد برای testها داشته باشد، اما متن «Hello, World!» در آن با «Goodbye, Mars!» جایگزین شده باشد. نکته: میتوانید راهحل نمونه را کپی، جایگذاری و ویرایش کنید.
وقتی کارتان با تمرین تمام شد، لطفاً نام کاربری GitHub خود را به آرایهی "authors" در فایل .meta/config.json تمرین اضافه کنید. این کار تضمین میکند که ساخت تمرین به نام شما ثبت شود.
برای بررسی اینکه تمرین درست راهاندازی شده است، میتوانید از قابلیت لینت داخلی ابزار configlet استفاده کنید.
اولین قدم دریافت ابزار configlet است که برای آن دو اسکریپت ساختهایم:
bin/fetch-configlet: اگر از *nix یا macOS استفاده میکنید، این را اجرا کنیدbin/fetch-configlet.ps1: اگر از Windows استفاده میکنید، این را اجرا کنیداجرای یکی از این اسکریپتها از دایرکتوری ریشهی مخزن مسیر، باینری bin/configlet یا bin/configlet.exe را دانلود میکند.
سپس میتوانید با اجرای bin/configlet lint درستی تمرین را بررسی کنید.
احتمالاً configlet خطای زیر را گزارش میدهد:
The `tags` array is empty:
/path/to/track/config.json
این خطا در مرحلهی آمادهسازی برای انتشار برطرف میشود، پس یکی از این دو کار را انجام دهید:
گردشکار configlet هر بار که چیزی به main یا به یک pull request ارسال شود، بهطور خودکار configlet lint را اجرا میکند.