Tại Sao Sử Dụng Công cụ Định dạng Scala của Chúng tôi
- Định dạng ngay lập tức mã Scala không cấu trúc hoặc lệch hàng
- Sửa khoảng cách xung quanh kiểu, tham số và toán tử
- Chuẩn hóa phong cách dấu ngoặc cho lớp, đối tượng, đặc tính và phương thức
- Áp dụng ngắt dòng kiểu scalafmt cho biểu thức dài và chuỗi phương thức
- Hỗ trợ tập tin `.scala`, kịch bản `.sc` và tập tin bản dựng `.sbt`
- Mã được định dạng qua backend bảo mật – không được chia sẻ hoặc lập chỉ mục
- Giao diện trình soạn thảo đáp ứng hoạt động trên máy tính xách tay, máy tính để bàn và máy tính bảng
🛠️ Cách Định Dạng Mã Scala Trực Tuyến for scala-formatter
1. Dán hoặc Tải Mã Scala Của Bạn
📥 Dán mã Scala của bạn vào trình soạn thảo hoặc kéo và thả tệp `.scala`, `.sc`, hoặc `.sbt`. Trình soạn thảo áp dụng tô sáng cú pháp Scala để bạn có thể quét mã nhanh chóng.
2. Nhấp "Định Dạng"
⚙️ Nhấn nút **Định dạng**. Mã của bạn được gửi qua HTTPS đến một trình định dạng kiểu scalafmt để sắp xếp lại khoảng trắng, thụt lề và ngắt dòng mà không thay đổi ngữ nghĩa.
3. Xem Xét Kết Quả
🔍 So sánh phiên bản đã làm sạch với bản gốc của bạn. Các dấu ngoặc nhọn, khoảng cách và dòng trống được chuẩn hóa để cấu trúc mã của bạn dễ theo dõi hơn.
4. Sao Chép hoặc Tải Xuống
📤 Sao chép mã Scala đã định dạng trở lại IDE của bạn, hoặc tải xuống dưới dạng tệp `.scala` sẵn sàng để commit, xem xét mã hoặc triển khai.
Thông Số Kỹ Thuật
Hành Vi Tạo Kiểu (Kiểu Scalafmt)
Trình định dạng nhằm phản ánh các quy ước scalafmt phổ biến để mã của bạn trông giống với các dự án Scala hiện đại.
| Khía cạnh | Hành vi | Ghi chú |
|---|---|---|
| Thụt lề & Dấu ngoặc nhọn | Thụt lề nhất quán cho `class`, `object`, `trait`, `def`, `if`, `match` và `for` | Giúp luồng điều khiển lồng nhau và khớp mẫu dễ đọc hơn. |
| Khoảng cách Kiểu & Tham số | Chuẩn hóa khoảng trắng xung quanh dấu hai chấm, mũi tên và danh sách tham số | Ví dụ: `def f(x: Int): String` thay vì `def f(x:Int):String`. |
| Nhập khẩu & Gói | Giữ các khối gói và nhập khẩu có cấu trúc và tách biệt với các định nghĩa | Cải thiện điều hướng và tính nhất quán giữa các tệp. |
| Dòng Trống | Chuẩn hóa các dòng trống xung quanh các định nghĩa cấp cao nhất | Tách các phần logic như mô hình, dịch vụ và công cụ hỗ trợ. |
| Tính Bất Biến | Chạy định dạng nhiều lần cho cùng một kết quả | An toàn để định dạng lại bao nhiêu lần tùy thích mà không bị trôi kiểu. |
Tương thích Phiên bản Scala
Trình định dạng được thiết kế cho cả cú pháp Scala 2 và Scala 3.
| Tính năng | Hỗ trợ | Ghi chú |
|---|---|---|
| Scala 2.x | ✅ Có | Hoạt động với các mẫu phổ biến như implicit, đối tượng đồng hành và for-comprehensions cổ điển. |
| Scala 3 (Dotty) | ✅ Có | Hiểu given/using, phương thức mở rộng, enum và các cấu trúc Scala 3 khác. |
| Tệp xây dựng SBT | ✅ Có | Định dạng các tệp `.sbt` được sử dụng trong xây dựng và định nghĩa phụ thuộc. |
Đầu vào được Hỗ trợ & Giới hạn
Tối ưu hóa cho các tệp dự án thực tế, không chỉ các đoạn mã nhỏ.
| Tham số | Giới hạn / Hành vi | Ghi chú |
|---|---|---|
| Phần mở rộng tệp | .scala, .sc, .sbt | Tệp nguồn, script và định nghĩa xây dựng. |
| Loại MIME | text/x-scala | Được sử dụng nội bộ để tô sáng cú pháp. |
| Kích thước đầu vào tối đa | ≈ 2 MB mã nguồn | Mã được tạo cực lớn nên được định dạng tốt hơn qua scalafmt cục bộ. |
| Mã hóa | Khuyến nghị UTF-8 | Nội dung không phải UTF-8 nên được chuyển đổi trước khi định dạng. |
Thực thi & An toàn
Việc định dạng được thực hiện thông qua một backend riêng tư, được bảo mật thay vì các dịch vụ công cộng của bên thứ ba.
| Khía cạnh | Hành vi | Ghi chú |
|---|---|---|
| Truyền tải | Gọi HTTPS đến API định dạng Scala | Mã của bạn được truyền an toàn và không bị công khai. |
| Thời gian chờ | ~25 giây mỗi yêu cầu | Ngăn chặn các công việc định dạng chạy lâu hoặc bị kẹt trên các đầu vào bất thường. |
| Ngữ nghĩa | Chỉ biến đổi bố cục | Trình định dạng thay đổi khoảng trắng và bố cục, không thay đổi logic chương trình của bạn. |
Sử dụng Scalafmt trong Quy trình Làm việc Cục bộ
Để kiểm soát hoàn toàn và định dạng toàn bộ kho lưu trữ, hãy cài đặt scalafmt và tích hợp nó vào quy trình xây dựng hoặc CI của bạn:
Phổ quát (qua sbt)
Thêm scalafmt vào dự án của bạn
addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.2")Thêm plugin sbt để bạn có thể chạy scalafmt từ shell sbt.
Định dạng tất cả nguồn
sbt scalafmtAllĐịnh dạng tất cả các tệp Scala và sbt trong dự án của bạn bằng `.scalafmt.conf`.
Kiểm tra định dạng trong CI
sbt scalafmtCheckAllLàm hỏng bản dựng nếu các tệp không được định dạng đúng cách.
Các Trường hợp Sử dụng Phổ biến
Dịch vụ Backend & FP
Giữ cho các backend Scala lớn và codebase FP nhất quán và dễ xem xét.
- Chuẩn hóa kiểu trên các dự án Akka, ZIO, Cats Effect, hoặc Play.
- Dọn dẹp mã trước khi mở pull request hoặc chia sẻ ví dụ.
- Chuẩn hóa định dạng sau các lần tái cấu trúc lớn hoặc di chuyển thư viện.
object A{def main(args:Array[String]){println("hi")}}
object A {
def main(args: Array[String]): Unit = {
println("hi")
}
}
Học & Dạy Scala
Tập trung vào khái niệm và kiểu hàm thay vì tranh cãi về khoảng cách.
- Tự động định dạng bài nộp của sinh viên trước khi xem xét logic và mẫu.
- Hiển thị ví dụ trước/sau khi định dạng khi dạy kiểu Scala.
- Chuẩn bị các đoạn mã sạch cho slide, tài liệu và bài đăng blog.
Kịch bản Xây dựng & Công cụ
Giữ các tệp xây dựng `.sbt` và kịch bản Scala nhỏ gọn gàng.
- Định dạng cài đặt sbt và khối phụ thuộc để bảo trì dễ dàng hơn.
- Dọn dẹp kịch bản hỗ trợ được sử dụng cho di chuyển hoặc công cụ nội bộ.
❓ Frequently Asked Questions
❓Scalafmt là gì và công cụ này liên quan như thế nào?
🔧Tôi có thể tùy chỉnh tất cả quy tắc scalafmt ở đây không?
🌐Nó có hỗ trợ cú pháp Scala 3 không?
🔒Mã Scala của tôi có được gửi đến máy chủ công cộng không?
HTTPS đến một backend định dạng riêng tư dành riêng cho công cụ này và không được chia sẻ hoặc lập chỉ mục. Đối với mã bảo mật cao hoặc độc quyền, bạn có thể chạy scalafmt cục bộ thay thế.⚙️Định dạng có thay đổi cách chương trình Scala của tôi hoạt động không?
Pro Tips
Giữ tệp `.scalafmt.conf` trong kho của bạn để trình soạn thảo, CI và `sbt scalafmt` đều sử dụng cùng một phong cách.
Thực hiện một commit "chỉ định dạng" chuyên dụng trước khi tái cấu trúc để các diff sau tập trung vào thay đổi mã thực sự, không phải khoảng trắng.
Sử dụng chiều rộng dòng tối đa nhất quán trong nhóm của bạn để tránh diff ồn ào và phong cách xung đột.
Khi giảng dạy, hãy hiển thị Scala lộn xộn trước, sau đó là phiên bản đã định dạng để làm nổi bật cách bố cục cải thiện khả năng đọc.
Additional Resources
Other Tools
- Bộ Làm Đẹp CSS
- Bộ Làm Đẹp HTML
- Bộ Làm Đẹp Javascript
- Bộ Làm Đẹp PHP
- Bộ Chọn Màu
- Bộ Trích Xuất Sprite
- Bộ Giải Mã Base64
- Bộ Mã Hóa Base64
- Bộ Định Dạng Csharp
- Bộ Định Dạng CSV
- Dockerfile Formatter
- Bộ Định Dạng Elm
- Bộ Định Dạng ENV
- Bộ Định Dạng Go
- Bộ Định Dạng GraphQL
- Bộ Định Dạng HCL
- Bộ Định Dạng INI
- Bộ Định Dạng JSON
- Bộ Định Dạng Latex
- Bộ Định Dạng Markdown
- Bộ Định Dạng ObjectiveC
- Php Formatter
- Bộ Định Dạng Proto
- Bộ Định Dạng Python
- Bộ Định Dạng Ruby
- Bộ Định Dạng Rust
- Bộ Định Dạng Tập Lệnh Shell
- Bộ Định Dạng SQL
- Trình Định Dạng SVG
- Trình Định Dạng Swift
- Trình Định Dạng TOML
- Typescript Formatter
- Trình Định Dạng XML
- Trình Định Dạng YAML
- Trình Định Dạng Yarn
- Bộ Thu Nhỏ CSS
- Html Minifier
- Javascript Minifier
- Bộ Thu Nhỏ JSON
- Trình Thu Nhỏ XML
- Trình Xem Tiêu Đề HTTP
- PDF Sang Văn Bản
- Bộ Kiểm Tra Regex
- Bộ Kiểm Tra Xếp Hạng SERP
- Tra Cứu Whois