چرا از فرمتدهنده اسکالای ما استفاده کنیم
- فوراً کد اسکالای بدون ساختار یا ناهمتراز را فرمت کنید
- فاصلهگذاری اطراف انواع، پارامترها و عملگرها را اصلاح کنید
- سبک براکتها را برای کلاسها، آبجکتها، صفتها و متدها نرمال کنید
- شکستن خطوط سبک scalafmt را برای عبارات طولانی و زنجیرههای متد اعمال کنید
- از فایلهای `.scala`، اسکریپتهای `.sc` و فایلهای ساخت `.sbt` پشتیبانی میکند
- کد از طریق یک بکاند امن فرمت میشود – به اشتراک گذاشته یا ایندکس نمیشود
- رابط کاربری ویرایشگر واکنشگرا که روی لپتاپ، دسکتاپ و تبلت کار میکند
🛠️ نحوه فرمت کردن کد اسکالا به صورت آنلاین for scala-formatter
۱. کد اسکالای خود را پیست یا بارگذاری کنید
📥 کد اسکالای خود را در ویرایشگر پیست کنید یا یک فایل `.scala`، `.sc` یا `.sbt` را کشیده و رها کنید. ویرایشگر برجستهسازی نحو اسکالا را اعمال میکند تا بتوانید به سرعت کد خود را مرور کنید.
۲. کلیک کنید "فرمت"
⚙️ دکمه **فرمت** را بزنید. کد شما از طریق HTTPS به یک فرمتکننده با سبک scalafmt ارسال میشود که فاصلهها، تورفتگیها و شکستن خطوط را بدون تغییر معناشناسی بازآرایی میکند.
۳. نتیجه را مرور کنید
🔍 نسخه تمیز شده را با نسخه اصلی خود مقایسه کنید. آکولادها، فاصلهها و خطوط خالی نرمال شدهاند تا ساختار کد شما آسانتر دنبال شود.
۴. کپی یا دانلود کنید
📤 کد فرمت شده اسکالا را به IDE خود برگردانید، یا آن را به عنوان یک فایل `.scala` آماده برای commit، بازبینی کد یا استقرار دانلود کنید.
مشخصات فنی
رفتار استایلدهی (سبک Scalafmt)
فرمتکننده هدفش بازتاب قراردادهای رایج scalafmt است تا کد شما در پروژههای مدرن اسکالا اصیل به نظر برسد.
| جنبه | رفتار | یادداشتها |
|---|---|---|
| تورفتگی و آکولادها | تورفتگی یکنواخت برای `class`، `object`، `trait`، `def`، `if`، `match` و `for` | جریان کنترل تودرتو و تطابق الگو را آسانتر برای خواندن میکند. |
| فاصلهگذاری نوع و پارامتر | فاصلههای اطراف دونقطه، فلشها و لیست پارامترها را نرمال میکند | برای مثال: `def f(x: Int): String` به جای `def f(x:Int):String`. |
| واردات و بستهها | بلوکهای package و import را ساختارمند و جدا از تعاریف نگه میدارد | پیمایش و یکنواختی در بین فایلها را بهبود میبخشد. |
| خطوط خالی | خطوط خالی اطراف تعاریف سطح بالا را استاندارد میکند | بخشهای منطقی مانند مدلها، سرویسها و کمککنندهها را جدا میکند. |
| همتوانی | اجرای فرمتکردن چندین بار نتیجه یکسانی میدهد | امن برای قالببندی مجدد به هر تعداد که بخواهید بدون انحراف از سبک. |
سازگاری نسخه اسکالا
قالببند برای هر دو نحو اسکالا ۲ و اسکالا ۳ طراحی شده است.
| ویژگی | پشتیبانی | یادداشتها |
|---|---|---|
| اسکالا ۲.x | ✅ بله | با الگوهای رایج مانند implicitها، اشیاء همراه، و for-comprehensionهای کلاسیک کار میکند. |
| اسکالا ۳ (Dotty) | ✅ بله | given/using، متدهای توسعه، enumها و سایر ساختارهای اسکالا ۳ را درک میکند. |
| فایلهای ساخت SBT | ✅ بله | فایلهای `.sbt` مورد استفاده در ساختها و تعاریف وابستگی را قالببندی میکند. |
ورودیهای پشتیبانیشده و محدودیتها
بهینهشده برای فایلهای پروژه واقعی، نه فقط قطعات کد کوچک.
| پارامتر | محدودیت / رفتار | یادداشتها |
|---|---|---|
| پسوند فایلها | .scala, .sc, .sbt | فایلهای منبع، اسکریپتها و تعاریف ساخت. |
| انواع MIME | text/x-scala | برای برجستهسازی نحو به صورت داخلی استفاده میشود. |
| حداکثر اندازه ورودی | ≈ ۲ مگابایت کد منبع | کدهای بسیار بزرگ تولیدشده بهتر است از طریق scalafmt محلی قالببندی شوند. |
| رمزگذاری | UTF-8 توصیه میشود | محتوای غیر UTF-8 باید قبل از قالببندی تبدیل شود. |
اجرا و امنیت
قالببندی از طریق یک بکاند خصوصی و امن به جای سرویسهای عمومی و شخص ثالث انجام میشود.
| جنبه | رفتار | یادداشتها |
|---|---|---|
| انتقال | تماسهای HTTPS با API قالببندی اسکالا | کد شما به صورت امن منتقل میشود و به صورت عمومی در معرض دید قرار نمیگیرد. |
| زماناتمام | ~۲۵ ثانیه برای هر درخواست | از اجرای طولانیمدت یا گیر کردن کارهای قالببندی روی ورودیهای مشکلدار جلوگیری میکند. |
| معناشناسی | تبدیلهای فقط مربوط به چیدمان | قالببند فقط فاصلههای سفید و چیدمان را تغییر میدهد، نه منطق برنامه شما. |
استفاده از Scalafmt در گردش کار محلی شما
برای کنترل کامل و قالببندی در سطح مخزن، scalafmt را نصب کرده و در خط ساخت یا خط لوله CI ادغام کنید:
جهانی (از طریق sbt)
افزودن scalafmt به پروژه شما
addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.2")پلاگین sbt را اضافه میکند تا بتوانید scalafmt را از پوسته sbt اجرا کنید.
قالببندی تمام منابع
sbt scalafmtAllتمام فایلهای Scala و sbt در پروژه شما را با استفاده از `.scalafmt.conf` قالببندی میکند.
بررسی قالببندی در CI
sbt scalafmtCheckAllدر صورت قالببندی نادرست فایلها، ساخت را ناموفق میکند.
موارد استفاده متداول
سرویسهای بکاند و FP
بکاندهای بزرگ Scala و پایگاههای کد FP را یکپارچه و آسان برای بازبینی نگه دارید.
- استانداردسازی سبک در پروژههای Akka, ZIO, Cats Effect, یا Play.
- پاکسازی کد قبل از باز کردن درخواستهای pull یا به اشتراکگذاری مثالها.
- نرمالسازی قالب پس از بازطراحیهای بزرگ یا مهاجرتهای کتابخانه.
object A{def main(args:Array[String]){println("hi")}}
object A {
def main(args: Array[String]): Unit = {
println("hi")
}
}
آموزش و یادگیری Scala
به جای جنگهای فاصلهگذاری، بر مفاهیم و انواع تابعی تمرکز کنید.
- قالببندی خودکار ارسالهای دانشآموزان قبل از بررسی منطق و الگوها.
- نمایش مثالهای قبل/بعد قالببندی هنگام آموزش سبک Scala.
- آمادهسازی قطعات کد تمیز برای اسلایدها، مستندات و پستهای وبلاگ.
اسکریپتهای ساخت و ابزارها
فایلهای ساخت `.sbt` و اسکریپتهای کوچک Scala را مرتب نگه دارید.
- قالببندی تنظیمات sbt و بلوکهای وابستگی برای نگهداری آسانتر.
- پاکسازی اسکریپتهای کمکی استفادهشده برای مهاجرت یا ابزارهای داخلی.
❓ Frequently Asked Questions
❓Scalafmt چیست و این ابزار چگونه به آن مرتبط است؟
🔧آیا میتوانم تمام قوانین scalafmt را اینجا سفارشی کنم؟
🌐آیا از سینتکس اسکالا ۳ پشتیبانی میکند؟
🔒آیا کد اسکالای من به سرور عمومی ارسال میشود؟
HTTPS به یک بکاند فرمتکننده خصوصی که مختص این ابزار است ارسال میشود و به اشتراک گذاشته یا ایندکس نمیشود. برای کدهای بسیار محرمانه یا اختصاصی، میتوانید scalafmt را به صورت محلی اجرا کنید.⚙️آیا فرمتکردن رفتار برنامه اسکالای من را تغییر میدهد؟
Pro Tips
یک فایل `.scalafmt.conf` در مخزن خود نگه دارید تا ویرایشگر، CI و `sbt scalafmt` شما همه از یک سبک استفاده کنند.
قبل از بازآراییها، یک کامیت اختصاصی "فقط فرمت" اجرا کنید تا diffهای بعدی بر روی تغییرات واقعی کد متمرکز شوند، نه فاصلهها.
از یک عرض خط حداکثر ثابت در تیم خود استفاده کنید تا از diffهای پرسر و صدا و سبکهای متضاد جلوگیری کنید.
هنگام تدریس، ابتدا اسکالای به هم ریخته را نشان دهید، سپس نسخه فرمت شده را برای برجسته کردن چگونگی بهبود خوانایی توسط چیدمان.
Additional Resources
Other Tools
- زیباکننده CSS
- زیباکننده HTML
- زیباکننده JavaScript
- زیباکننده PHP
- انتخابگر رنگ
- استخراجکننده اسپرایت
- دیکودر Base64
- انکودر Base64
- فرمتدهنده C#
- فرمتدهنده CSV
- Dockerfile Formatter
- فرمتدهنده Elm
- فرمتدهنده ENV
- فرمتدهنده Go
- فرمتدهنده GraphQL
- فرمتدهنده HCL
- فرمتدهنده INI
- فرمتدهنده JSON
- فرمتدهنده LaTeX
- فرمتدهنده Markdown
- فرمتدهنده Objective-C
- Php Formatter
- فرمتدهنده Proto
- فرمتدهنده Python
- فرمتدهنده Ruby
- فرمتدهنده Rust
- فرمتدهنده اسکریپت شل
- فرمتدهنده SQL
- قالببندی SVG
- قالببندی Swift
- قالببندی TOML
- Typescript Formatter
- قالببندی XML
- قالببندی YAML
- قالببندی Yarn
- کوچککننده CSS
- Html Minifier
- Javascript Minifier
- کوچککننده JSON
- کوچککننده XML
- نمایشگر هدرهای HTTP
- PDF به متن
- تستکننده Regex
- بررسیکننده رتبه SERP
- جستجوی Whois