Xung đột các kiểu Java trong một nhóm


12

Tôi là thành viên của nhóm phát triển Java với thời hạn 6 tuần. Điều này đòi hỏi phải viết một mã tốt rất rất nhanh chóng. Tuy nhiên, nhóm phát triển của chúng tôi có các phong cách mã hóa khác nhau. Tất cả mọi thứ từ quy ước tên đến phương pháp trừu tượng đều khác nhau giữa nhóm chúng tôi. Có ai biết bất kỳ tài liệu nào ra lệnh "tiêu chuẩn" cho java không?

Để làm rõ, tôi đã tự hỏi nếu có một tổ chức sẽ ra lệnh quy ước đặt tên thích hợp cho các biến và hàm chẳng hạn. Điều này là tối quan trọng vì với thời hạn ngắn như vậy, chúng tôi không thể dành thời gian cố gắng để hiểu mã của nhau.

Câu trả lời:


18

Có một tổ chức như vậy: Sun / Oracle chính nó. Tài liệu này được gọi là Quy ước mã cho ngôn ngữ lập trình Java và nó mô tả hầu hết các quy ước bạn cần. Chỉ cần mọi người đồng ý đọc nó và làm theo khuyến nghị của nó.


3
Đây là một tiêu chuẩn nổi tiếng, nhưng đừng sợ đi chệch khỏi nơi mà nhóm đồng ý. Ví dụ, bị giới hạn ở 80 ký tự có thể gây đau đớn.
Martijn Verburg

1
@MartijnVerburg giới hạn có thể nhắc tái cấu trúc vào các phương thức và các lớp để tránh thụt sâu.

Đây là một quy ước và có thể là một dự phòng hợp lý, nếu bạn không thể tìm thấy một thỏa thuận riêng, nhưng như tên gọi, nó không sai khiến - đó là một quy ước.
người dùng không xác định

@userunknown Bạn nói đúng. Tôi thậm chí không đồng ý với tất cả các quy ước. Nhưng đó là một sự thỏa hiệp tốt với khung thời gian của OP.
Andres F.

8

Tôi thực sự gắn thẻ vào câu trả lời của Andres và tập trung vào khía cạnh định dạng thống nhất mã java.

Nếu bạn đang sử dụng Eclipse, bạn có thể đặt bộ định dạng Java của nó thành định dạng tự động theo tiêu chuẩn Java. Trình định dạng Eclipse cũng có các cài đặt hữu ích khác, chẳng hạn như các ký tự trên mỗi dòng (nghĩa là có bao nhiêu ký tự trên mỗi dòng trước khi nó bị ngắt thành một dòng mới) và nhiều ký tự khác. Chuẩn hóa các ký tự trên mỗi dòng giúp mã khác biệt được viết bởi các nhà phát triển khác nhau mà không có nhiều khác biệt chỉ từ khoảng cách và ngắt dòng.

Cuối cùng, với Eclipse, sau khi bạn đã thiết lập tất cả các cài đặt bạn muốn, sau đó xuất bộ định dạng của bạn dưới dạng tệp có thể được nhập bởi mọi thành viên trong nhóm. Vì vậy, nếu bạn đang sử dụng Eclipse, tôi khuyên bạn nên khám phá đầy đủ tất cả các tùy chọn mà nó sẽ tự động định dạng và chỉnh sửa mã cho bạn, sau đó chia sẻ các cài đặt với toàn bộ nhóm.

Tôi sẽ giả sử các IDE java chính khác (IntelliJ và Netbeans) có một tính năng tương tự để xuất các cài đặt định dạng.


2
+1 Câu trả lời tốt là tốt! Bạn cũng có thể cài đặt một plugin như Checkstyle và để nó cảnh báo bạn khi bạn phá vỡ các quy ước.
Andres F.

Chúng tôi cũng làm điều này. Tùy chọn -> Java -> Trình chỉnh sửa -> Lưu tùy chọn và bật định dạng khi lưu. Lý do chính là để đảm bảo rằng các dòng nguồn bị ảnh hưởng bởi một định dạng xảy ra càng sớm càng tốt để có được lịch sử kiểm soát phiên bản càng sạch càng tốt (một lần nữa).

Vâng, tôi cũng bắt đầu làm điều này gần đây. Điều duy nhất tôi không chắc chắn là tôi đã chọn "loại bỏ các biến riêng tư không sử dụng" trên tùy chọn lưu. Vì vậy, trong khi tôi đang làm TDD, tôi thấy rằng thường xuyên, các biến của tôi biến mất vì mã được lưu trước khi tôi sử dụng chúng ... nhưng khác với, tùy chọn này rất tuyệt.
Sam Goldberg

6

[Các kiểu mã hóa khác nhau] này là tối quan trọng vì với thời hạn ngắn như vậy, chúng tôi không thể dành thời gian để cố gắng hiểu mã của nhau.

Thực ra. Nó không phải là tối quan trọng.

Sau 30 năm làm tư vấn, tôi đã đọc rất nhiều mã từ rất nhiều khách hàng. Điều quan trọng cần lưu ý là mọi khách hàng (và thường trong tổ chức của khách hàng) có nhiều phong cách khác nhau.

Sau khi đọc rất nhiều phong cách, tôi đã học được điều này.

Phong cách không thành vấn đề

Vui lòng tập trung vào viết mã luôn hoạt động và viết các bài kiểm tra đơn vị chứng minh rằng nó luôn hoạt động.

Sau khi bạn chuyển mã làm việc, bạn có thể chỉnh sửa mã nếu bạn hết lỗi để sửa và cải tiến để cài đặt.


có thể nó không thành vấn đề, nhưng nó cũng rất hay để làm và rất dễ làm.
Kevin

1
Phong cách không quan trọng, nhưng vấn đề nhất quán. Phong cách không nhất quán làm cho việc bảo trì phần mềm khó khăn hơn rất nhiều.
Jesper

5
@Jesper: "Phong cách không nhất quán làm cho việc bảo trì phần mềm trở nên" khó hơn một chút ". Nó không khó hơn nhiều bởi bất kỳ sự kéo dài nào. Mã mờ, xấu, lỗi khó bảo trì hơn rất nhiều. Các kiểu không nhất quán trong mã làm việc chỉ là các kiểu không nhất quán. Một số người có giọng, và bạn phải lắng nghe cẩn thận hơn. Phong cách không nhất quán ít hơn một giọng khu vực (hoặc quốc gia) khác nhau.
S.Lott

1
Phong cách không quan trọng theo nghĩa toàn cầu, nhưng phong cách nhất quán trong một đội bóng duy nhất không vấn đề. Nó sẽ không thực hiện hoặc phá vỡ một dự án, nhưng nếu nó dễ dàng nhất quán như không, tại sao không đi trước và nhất quán? Mã của bạn sẽ ít nhất là tốt hơn một chút.
Bryan Oakley

1
"Mã của bạn sẽ ở mức" tốt nhất "tốt hơn một chút". Và vâng, nó gần như bằng không và chi phí chắc chắn bằng không. Nhưng. Bảo hiểm kiểm tra 100% là rất xa, có giá trị hơn nhiều mà tính nhất quán.
S.Lott

2

Đừng lo lắng về việc chọn một số tiêu chuẩn phổ quát hoàn hảo. Tất cả những gì bạn cần là nhóm của bạn đồng ý với một tiêu chuẩn và tuân thủ nó. Trang điểm của riêng bạn nếu bạn muốn, nhưng phải nhất quán.

Tính nhất quán cải thiện sự hợp tác, cộng tác cải thiện mã.

Ngay cả khi tính nhất quán thực tế không có ích, thì thực tế là nhóm của bạn đã làm việc cùng nhau để đi đến thỏa thuận là một điều tốt. Họ không có khả năng đồng ý với một cái gì đó đơn giản như các công ước mã hóa nói rằng có thể có những vấn đề làm việc nhóm lớn hơn ẩn giấu dưới bề mặt.


0

Sun Java CC được đề cập ở trên không chỉ 13 tuổi và một số quy tắc của nó đã lỗi thời (như 80 ký tự trên mỗi dòng), nhưng nó cũng không định nghĩa các quy ước đặt tên, ngoại trừ các quy tắc chung nhất (vỏ lạc đà cho các lớp, khối chữ hoa cho các biến cuối cùng tĩnh và tương tự).

Bạn cần xác định các tiêu chuẩn của riêng mình cho các loại lớp khác nhau , như DAO, EJB, thực thể, bất cứ thứ gì bạn sử dụng. Sun Java CC giống như một lớp cơ sở trừu tượng có nghĩa là để mở rộng :)


Tôi đồng ý Java CC của Sun hơi cũ, nhưng nó chỉ có ý nghĩa như một điểm khởi đầu. Tôi cho rằng OP không có nhiều thời gian để lãng phí khi xác định CC của chính mình, hoặc anh ta sẽ nói vậy! (BTW, nơi tôi hiện đang làm việc, họ sử dụng plugin Sonar được định cấu hình để thực thi giới hạn 80 ký tự - vì vậy quy tắc này vẫn còn tồn tại và đá trong một số cửa hàng).
Andres F.

Bên cạnh những lý do khác, khả năng đọc là một yếu tố. Phải quét một khoảng cách xa trên một dòng sẽ kém hiệu quả hơn nhiều so với quét xuống. Với mã được định dạng tốt, bạn có thể nhanh chóng quét qua mã không liên quan.
BillThor

Nếu bạn đang gặp vấn đề với 80 ký tự trên mỗi dòng, thì bạn đã có số nhận dạng dài đáng kinh ngạc hoặc bạn đang đặt nhiều thứ không thể đọc được trên một dòng. Cái trước là ngớ ngẩn (bạn có thể không chắt lọc ý chính xuống ít hơn không?) Và cái sau là một dấu hiệu của một nhu cầu cấp thiết để tái cấu trúc. Tự động định dạng khi lưu là tuyệt vời kể từ đó bạn không còn phải lo lắng về định dạng nữa; phần mềm xử lý nó cho bạn.
Donal Fellows

@DonalFellows Có, trong thời đại ngày nay, giới hạn 80 ký tự là có để nhắc nhở bạn tái cấu trúc, không phải vì màn hình thiết bị đầu cuối nhỏ.
Andres F.

0

Như được đề cập bởi những người khác ở đây, bạn có thể tìm kiếm trực tuyến một trong số ít 'hướng dẫn phong cách' phổ biến cho Java và thuyết phục mọi người trong nhóm gắn bó với họ. Một số công cụ kiểm tra mã trong IDE yêu thích của bạn có thể giúp nhắc nhở bạn khi bạn không làm như vậy.

Tuy nhiên, đôi khi chính trị có liên quan. Tôi đã từng ở trong một tình huống trước khi nhà phát triển cao cấp nhất trong nhóm tiếp tục làm theo cách của mình ngay cả sau khi ai đó đề cập đến nhu cầu tiêu chuẩn hóa. Trong tình huống như vậy, có thể tốt hơn để quan sát phong cách mã của anh ấy và theo dõi anh ấy vì anh ấy có thể có kiến ​​thức nhất về cơ sở mã và các yêu cầu và bạn có thể không muốn lãng phí thời gian dẫm lên ngón chân của mình mặc dù anh ấy đang gặp khó khăn. Đó là những gì phần còn lại của chúng tôi đã làm trong tình huống cụ thể đó và tôi miễn cưỡng làm theo.

Vì vậy, điều quan trọng là phải xem xét tình hình của bạn là tốt.


Đây là đất nước nào? Âm thanh như một điều văn hóa.

@ ThorbjørnRavnAndersen Ông muốn nói rằng mọi người có thể chống lại sự thay đổi khi "những gì họ đã làm trong thời gian dài làm việc". Chính trị theo nghĩa này chỉ là "chính trị văn phòng"
Robotnik

0

Chú Bob cho thấy một phong cách mã hóa hiện đại và hiện đại hơn trong cuốn sách "Clean Code". Thật không may, nó không chứa danh sách các mặt hàng. Bạn phải đọc nó. Anh ta tự nói rằng để xem các quy ước của mình, bạn phải đọc mã của anh ta. Bác Bob chắc chắn là một loại tổ chức. Cuốn sách dù sao cũng là một cuốn sách tuyệt vời, vì vậy ngay cả khi quá muộn để đọc nó, hãy đọc nó càng sớm càng tốt.


0

Điều thực sự quan trọng trong mã là độ phức tạp chu kỳ thấp, phạm vi nhỏ, độ gắn kết cao và sự lựa chọn các định danh biểu cảm. Với những điều đó, mã trở nên dễ nắm bắt và mã như vậy là tốt.

Tôi đề nghị bạn xem xét lập trình Spartan .

Hầu hết các tiêu chuẩn mã hóa cho bạn biết làm thế nào để làm cho mã viết kém trông đẹp mắt và hầu hết các cuộc thảo luận về "phong cách mã hóa" thực sự là về định dạng. Định dạng mã là về trực quan đại diện cho cấu trúc mã của bạn. Nó là tầm thường và tự động hóa và hầu như không làm gì với phong cách mã hóa, bởi vì phong cách mã hóa không phải là về cách bạn biểu diễn cấu trúc mã, mà là về cách bạn cấu trúc mã.
Ngoài ra còn có rất nhiều cuộc chiến tôn giáo về các quy ước đặt tên, mặc dù thực sự chúng chỉ là một bản hack để khắc phục thiết kế kém. Một cái tên là tốt, nếu nó nói những gì nó có nghĩa. Phạm vi của bạn càng nhỏ và rõ ràng, càng dễ dàng để chọn một tên như vậy.

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.