2011-10-27 27 views
8

Khi nói đến các phương thức thứ tự/thứ tự trong lớp java. Bạn mong đợi ở đâu/thích xem phương thức main()?Vị trí thích hợp của phương thức main() trong tệp lớp Java

  • ở phía trên trước mỗi lĩnh vực (để sử dụng căng thẳng tồn tại và lực lượng của ông để sử dụng nó)
  • ở phía dưới (để cho phép người dùng nhìn thấy các lĩnh vực đầu tiên và sau đó khám phá chính)
  • sau khi c -tor
    hoặc ....

Hãy chia sẻ suy nghĩ của bạn, đây là loại câu hỏi phong cách/triết học. Vui lòng không đề xuất giữ main() trong riêng tệp.

+2

Tại sao * không * giữ chính() trong tệp riêng của nó? Nếu bạn không muốn sử dụng OOP thì không sử dụng java ... – bdares

+0

Đây là kiểu kiểu để tránh trộn lẫn các đối số phân tích cú pháp và bất kỳ kiểu chuẩn bị nào trước khi gọi như "job.doAll()". –

+0

cảm ơn tất cả vì ý kiến ​​của bạn. Nhóm của chúng tôi đã quyết định đặt chính vào đầu lớp vì nó là điểm vào của lớp chức năng. –

Trả lời

2

Tôi luôn đặt nó vào cuối, bởi vì đó là cách họ làm điều đó trong C. "Truyền thống". Điều này có thể không tốt vì lý do. :-)

+0

Java dựa trên C ... đó là một lý do chính đáng. – Bohemian

3

Sun Microsystems xuất bản Quy ước mã cho Ngôn ngữ lập trình Java nhiều năm trước và nhiều tổ chức theo dõi nó theo các mức độ khác nhau.

Trong this section, họ đề xuất đặt phương thức ở cuối tệp. Và như bạn đã biết, main là "chỉ là một phương pháp khác" mặc dù một phương pháp lớp thay vì một phương pháp thể hiện.

Trong khi không ai buộc bạn tuân theo quy ước của Sun, có thể có một lợi thế nhỏ trong việc gắn bó tương đối gần với họ vì có một mức độ quen thuộc với nó. Hầu hết (nếu không phải tất cả) của các thư viện JDK tiêu chuẩn sẽ theo nó.

Đây là IMHO một lý do chính đáng để đi theo phương pháp tiếp cận phương pháp cuối cùng. Về vị trí của main trong số các phương pháp, đặt nó đầu tiên hoặc cuối cùng sẽ hoạt động. Nếu bạn tìm thấy nó "đặc biệt" theo một cách nào đó, sau đó đặt nó chết cuối cùng trong tập tin.

7

Đây chỉ là suy nghĩ của tôi:

main() là phương pháp tĩnh không liên quan đến trường hợp đối tượng. Chúng ta biết rằng nó tồn tại như một điểm vào, điều đó làm cho chương trình/lớp thực thi của chúng ta.

Điều này là trong Java, mọi thứ (nhưng nguyên thủy) là một đối tượng, vì vậy chính() phải được khai báo trong một số lớp ở đâu đó. Mã như một phương thức tĩnh có thể thực hiện được quan tâm nhiều hơn với việc thiết lập chương trình để thực thi, và ủy quyền cho logic nghiệp vụ của chúng ta (các đối tượng thực sự làm điều gì đó) để chạy ứng dụng. Như vậy, mối quan tâm của nó là khác biệt với phần còn lại của lớp của chúng tôi (trong đó xác định một số dữ liệu và hành vi mà chúng tôi đang cố gắng đóng gói).

chính() không thực sự thuộc về dữ liệu và hành vi của các lớp học hàng ngày của chúng tôi, vì tôi nghi ngờ rằng mỗi lớp cần phải được thực thi một mình. mối quan tâm chính của() là chạy chương trình của chúng tôi. Như vậy, nó phải được khai báo khỏi các đối tượng nghiệp vụ của chúng ta, trong một mô-đun của dự án liên quan đến việc khởi chạy/thực thi ứng dụng. Vì vậy, như bạn có thể đoán, tôi đang đề xuất chính xác những gì bạn đã nói không đề xuất - giữ chính từ các lớp học và logic của bạn càng nhiều càng tốt, và chỉ tuyên bố nó trong bối cảnh của một điểm vào ứng dụng của bạn.

Đối với vị trí trong một tệp, tôi không thực sự nghĩ nó quan trọng - miễn là rõ ràng mã trong tệp đó có liên quan đến việc thiết lập và chạy chương trình.

+0

cảm ơn, chúng tôi giữ main() là các lớp khởi chạy đặc biệt, nhưng chúng tôi có một dự án có chứa các lớp utils số có thể được khởi chạy từ chính() - nó rất tiện lợi. Nhưng việc tạo lớp riêng biệt/bổ sung để cấu hình và khởi chạy lớp nghiệp vụ sẽ tăng gấp đôi số lớp và sẽ làm cho mã dễ dàng hơn. Vì vậy, chúng tôi tìm kiếm sự thỏa hiệp để giữ cho chính() trong cùng một lớp nhưng vẫn giữ cho lớp dễ dàng để ream và hiểu làm thế nào để làm việc với anh ta. –

1

Tôi giả sử bạn không đặt một phương thức main() một cách có hệ thống trong mọi lớp bạn viết (trong trường hợp sau này, bạn phải hình dung để viết các bài kiểm tra đơn vị thay thế).

Miễn là lớp của bạn chứa phương thức main(), và do đó là điểm vào của ứng dụng của bạn, lớp này sẽ không có bất kỳ hành vi nào khác ngoài khởi tạo ứng dụng. Thực hành tốt này được gọi là "Tách mối quan tâm": một lớp = một trách nhiệm.

Nếu đúng như vậy, bạn không nên có nhiều phương pháp trong lớp học của mình. Tôi personnaly luôn luôn sắp xếp phương pháp theo tầm quan trọng: phương pháp quan trọng/hữu ích/trung tâm là trên tất cả các phương pháp khác, mà không thêm bất kỳ công việc thực sự (setters và getters là loại đó với tôi).

Bằng cách này, người đọc có quyền truy cập vào thông tin quan trọng nhất trước tiên.

Tất nhiên, mã hóa bằng cách sử dụng Java Convention, mà tôi recommand, ngụ ý bạn đầu tiên khai báo các trường lớp của bạn, trước khi khai báo các phương thức của bạn.

Các vấn đề liên quan