Có phải là một ý tưởng tốt để định dạng mã trong nhật thực bằng định dạng tự động


20

Tôi sử dụng nhật thực để mã hóa và ngôn ngữ mà chúng ta sử dụng là Java. Một khi ai đó đã đề xuất rằng định dạng mã đúng, sử dụng trình định dạng tự động (CTRL + SHIFT + F) Trong khi lệnh này định dạng mã, nhưng đôi khi tôi cảm thấy rằng nhìn tổng thể trở nên kỳ lạ và thực sự không dễ đọc.

Vì vậy, đây có phải là một điều nên làm? Nếu không, định dạng mã của chúng ta trong nhật thực là gì?


Tôi luôn sử dụng khả năng định dạng tự động của emacs - có khả năng xảy ra va chạm (ví dụ: hợp nhất SC) .. nhưng về tổng thể, việc chuẩn hóa định dạng của bạn là vô cùng hữu ích
warren

Câu trả lời:


34

Các quy tắc định dạng mã nghiêm ngặt rất hữu ích khi một số nhà phát triển làm việc trên cùng một mã bằng hệ thống kiểm soát phiên bản. Hợp nhất có thể là một nỗi đau nếu các nhà phát triển khác nhau có các quy tắc định dạng khác nhau vì cùng một mã sẽ trông khác nhau đối với công cụ hợp nhất.

Eclipse (hoặc bất kỳ IDE tốt nào cho vấn đề đó) có các quy tắc định dạng mã có thể được tùy chỉnh trong phần tùy chọn (Java> Kiểu mã> Trình định dạng). Chọn những gì bạn thích nhất, nhưng cũng phải xem các quy ước mã tiêu chuẩn Java . Nhiều dự án nguồn mở cũng có các quy ước mã riêng có thể được thi hành bằng trình định dạng Eclipse.

Ngoài ra, còn có các công cụ tiêu chuẩn như CodeStyle, PMD và Findbugs thực thi các quy tắc bổ sung và giúp tránh các lỗi và lỗi phổ biến (cấp thấp).


4
Khi bạn đã thiết lập định dạng của mình theo cách bạn muốn. Có nút "Xuất" sẽ cho phép bạn lưu nó vào tệp .xml. Chúng tôi đưa nó vào Kho lưu trữ SVN của chúng tôi, vì vậy mọi người đều có quyền truy cập vào nó khi họ kiểm tra dự án.
Chris

Tôi đồng ý với điều này, và sử dụng PMD và FindBugs và tất cả. Nhưng đây chỉ là một ý tưởng tốt nếu mọi người trong nhóm tuân theo và sử dụng các quy tắc định dạng mã. Nếu không, bạn kết thúc với các cam kết là thay đổi + định dạng của một số nhà phát triển chứ không phải các nhà phát triển khác và rất khó để thấy các thay đổi "thực". Nói cách khác, nếu mã cũ chưa được định dạng bằng trình định dạng tự động, đừng định dạng mã với các thay đổi bổ sung trong một lần xác nhận.
Mufasa

2
Nếu bạn tùy chỉnh cài đặt định dạng mã, hãy đẩy các cài đặt đó vào kiểm soát nguồn để tất cả các nhà phát triển có được chúng hoặc xuất bản chúng trong một số loại tài liệu wiki hoặc nhà phát triển để mọi người có thể đồng ý về kiểu dáng.
Mufasa

24

Tôi đã tìm thấy tự động định dạng rất hữu ích. Thay vì liên tục thực hiện các phân đoạn vi mô về cách mã được định dạng - thứ gì đó dễ bị lỗi và gây ra "ma sát nhận thức" - bạn có thể thiết lập quy tắc định dạng và để định dạng mã cho bạn (lý tưởng là tự động sử dụng "Lưu hành động" ). Tất nhiên, điều này đòi hỏi bạn phải có một cơ sở mã với định dạng nhất quán hoặc bạn có nhiệm vụ định dạng lại mã theo các quy tắc bạn thiết lập.

Có bật "autoformat-on-save" giống như việc biên dịch gia tăng, nó cho phép bộ não của bạn tập trung vào chính mã, thay vì quan tâm đến các vấn đề tầm thường như định dạng mã hoặc cú pháp.

Nhưng vâng, đôi khi trình tự động định dạng sẽ làm rối tung một số bảng được định dạng độc đáo mà bạn có. Trong những trường hợp như vậy tôi sử dụng "thẻ bật / tắt". Chúng được cấu hình trong tab "bật / tắt thẻ" trong cấu hình định dạng mã. Sử dụng chúng, bạn có thể loại trừ các vùng trong mã của bạn được tự động định dạng:

// @formatter:off

... my nicely formatted table here ...

// @formatter:on

5
+1: Tôi chưa bao giờ biết về (hoặc chính xác hơn, tôi không bao giờ bận tâm tìm hiểu về) các thẻ bật / tắt.
Paul Cager

1
Autoformat-on-save là tốt nếu mọi người trong dự án sử dụng nó. Nếu chỉ một số nhà phát triển sử dụng nó, thì quá dễ dàng để thực hiện các thay đổi với thay đổi định dạng mã cùng một lúc, điều này gây khó khăn cho việc tìm kiếm các thay đổi "thực" trong một cam kết.
Mufasa

@Mufasa Vâng, bạn nói đúng.
JesperE

1
Khi bạn không muốn bình luận định dạng, bạn có thể viết / * - siêu định dạng của tôi * / Eclipse không định dạng bình luận như vậy :)
Dawid Drozd

5

Việc nó có được đề xuất hay không sẽ phụ thuộc vào người bạn hỏi.

Tôi có thể tưởng tượng rằng bạn muốn tự định dạng mã, sau tất cả, bạn biết những gì tốt nhất và dễ đọc nhất cho chính mình. Về mặt tích cực, nếu bạn là một người chu đáo, bạn cũng có thể làm cho nó dễ đọc hơn đối với những người khác.

Các máy không có loại tầm nhìn xa đó và có thể (giống như bạn đã nói) làm cho mã của bạn trông giống như một mớ hỗn độn, ngay cả khi chúng định dạng nó theo các quy tắc nghiêm ngặt.

Một IDE hoặc công cụ tốt thường có thể thực hiện một công việc nửa vời trong việc định dạng mã cho bạn, nhưng sẽ không luôn làm cho nó dễ đọc như bạn có thể.

Vì vậy, lời khuyên của tôi: không sử dụng nó trừ khi bạn nhận được mã từ người khác và đó là một mớ hỗn độn mà bạn không thể đọc được.


5

Bạn nên sử dụng nó mọi lúc để đảm bảo rằng bạn sử dụng một kiểu dáng nhất quán trong tất cả các tệp nguồn của bạn. Điều này cũng sẽ giúp bạn tiết kiệm rất nhiều thời gian mà bạn thường dành để cố gắng điều chỉnh định dạng thủ công.

Trình định dạng Java trong Eclipse thực hiện công việc khá tốt và hoàn toàn có thể tùy chỉnh. Nếu bạn không đồng ý với các cài đặt mặc định (mà tôi hoàn toàn có thể hiểu được), thì bạn nên điều chỉnh trình định dạng theo sở thích kiểu cá nhân của riêng bạn hoặc bất cứ điều gì là tiêu chuẩn bạn sử dụng. Bạn có thể làm điều đó trong các tùy chọn trong Java / Code Style / Formatter.

Formatters thậm chí còn hữu ích hơn khi bạn không làm việc một mình. Rất có khả năng bạn và các thành viên trong nhóm của bạn sẽ không đồng ý với những gì bạn nghĩ là phong cách mã hoàn hảo ™. Trong trường hợp đó, bạn nên đồng ý với một cơ sở chung và một lần và cho tất cả các quy tắc định dạng cho kiểu dáng mã cụ thể này. Sau đó, mọi người chỉ có thể nhấn phím tắt định dạng và mọi thứ phù hợp với kiểu dáng đã thỏa thuận. Bằng cách đó, sở thích cá nhân của bạn (khi viết) sẽ không cản trở bạn. Và lưu ý rằng kiểu dáng của trình định dạng có thể được lưu trữ trong các tệp dự án của Eclipse, do đó, các trình định dạng khác nhau cho mỗi dự án cũng có thể.


0

Mặc dù tôi thích mã được định dạng tự động khi lưu (thực tế tôi đã bật mã trên các dự án cá nhân của mình). Tôi thấy rằng tôi không thể hoàn toàn khuyến nghị thực hành này trong các nhóm dự án sử dụng các sản phẩm dựa trên Eclipse vì trình định dạng Eclipse có một số lỗi nghiêm trọng khiến tôi không thể đề xuất nó.

Cụ thể nếu bạn có "dọn dẹp mã" + "định dạng" cho phép các thụt lề được cố định / không trộn trong mỗi lần lưu.

Mỗi phiên bản mới của Eclipse có thể thay đổi trình định dạng (để tốt hơn) nhưng sẽ đưa ra các thay đổi quan trọng như JavaDocs cuối cùng đã loại bỏ không gian thừa đó sau khi *được giới thiệu sau Helios và rất nhiều doanh nghiệp đang sử dụng phiên bản nhật thực Phần mềm Rational cũ hơn sử dụng Helios làm cơ sở.

Trình định dạng mã được cung cấp bởi Eclipse không thể mở rộng theo API của chúng trong thực tế, nó nói rõ ràng CodeFormatter javadoc

Lớp này không có ý định được phân lớp bởi các khách hàng.

Cấp, tôi chưa tìm thấy bất kỳ sự thay thế phi thương mại khả thi nào. Jalopy đã không được cập nhật trong nhiều năm nay và các nhánh trong github vẫn chưa được tổ chức cho đến khi tôi giới thiệu bất kỳ ai trong số họ. Nó cũng không có bất kỳ trang cập nhật nào cho Eclipse để tích hợp nó. Tôi thực sự đã lên kế hoạch để thực hiện định dạng mã như là một phần của bản dựng giống như tôi đã sử dụng Cleanpom-maven-plugin bằng cách sử dụng Jalopy nhưng ý tưởng đó đã bị bỏ qua do thiếu cập nhật cho Jalopy.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.