2012-06-04 39 views
10

Tôi đang sử dụng TDD, và có một mẫu mã hóa rất điển hình, sử dụng Eclipse để tự động tạo ra các phương thức và các trường khi tôi viết mã kiểm tra đơn vị. Ví dụ:Eclipse: Làm thế nào để tự động tạo getter khi thêm một trường?

  1. loại tên của phương pháp đó không tồn tại, ví dụ:

    myObj.setValue(someValue);

  2. Bấm vào chút dấu lỗi màu đỏ trong IDE để tạo ra các phương pháp "setValue".

  3. Loại bên trong của phương pháp setValue:

    public void setValue(String value) { this.value = value; }

  4. Nhấp vào dấu lỗi màu đỏ để tự động tạo ra một lĩnh vực tư nhân (gọi là "giá trị trong trường hợp này");

Vì vậy, vào thời điểm này, tôi muốn Eclipse để tự động tạo ra các phương thức getter, mà không cần phải làm điều đó bằng cách sử dụng nguồn -> tạo getter và setter menu.

Tôi thấy câu hỏi này: How do you force Eclipse to prompt you to create a getter and setter when it doesn't do it automatically có vẻ ngụ ý rằng Eclipse thực hiện việc này, nhưng tôi không thể tìm thấy nơi để định cấu hình điều đó.

Có cách nào để định cấu hình Eclipse để tự động thêm setter/getters khi thêm biến riêng tư mới không?

CẬP NHẬT: Để làm rõ hơn nữa, tôi đang tìm một cái gì đó giống như tôi thấy trong tài liệu Spring Roo. Nếu bạn nhìn vào phần "Cách hoạt động", nó mô tả cách khung công tác tự động thêm các phương thức bổ sung vào lớp của bạn, bất cứ khi nào bạn thêm một biến riêng tư. (Sở thích của tôi không phải là để chạy một quá trình như thế, tuy nhiên, và cũng không để có được tất cả các cruft mà nó có vẻ để thêm). Tôi đã hy vọng Eclipse đã có một cái gì đó tương tự.

+2

Ra khỏi tò mò, nếu bạn sử dụng TDD, tại sao tạo ra các getter trước khi nó là cần thiết? Nhưng nếu bạn đặt con trỏ sau (hoặc trước) phương thức thiết lập, viết get và sau đó kiểm soát-không gian bạn sẽ nhận được một gợi ý cho một getter (không chính xác những gì bạn yêu cầu). –

+0

@ RogerLindsjö: Đó thực sự là một câu hỏi hay. Câu trả lời chính là: Tôi đã thêm vào * Preferences/Save Actions * hành động để "Loại bỏ các loại riêng không sử dụng", vì vậy khi tôi lưu (điều này xảy ra khi tôi chạy thử nghiệm đơn vị để xem nó thất bại), Eclipse sẽ loại bỏ trường tôi vừa tạo (vì nó chưa được tham chiếu), làm cho tôi gõ lại nó một lần nữa. Vì vậy, có vẻ như dòng chảy tốt nhất là chỉ cần tạo ra getter tại thời điểm đó. Ngoài ra - thường tôi thấy rằng nếu tôi tạo ra một setter, tôi thường cần getter sau này, vì vậy nó cũng có vẻ giống như một công ước tốt mà tôi tạo ra nó tại thời điểm đó khi tôi tạo ra setter trong mọi trường hợp. –

+0

Điều đó giải thích nó sau đó. Đã có thiết lập đó quá, nhưng không thích nó, vì vậy bây giờ tôi đã không sử dụng thành viên tư nhân như cảnh báo và giữ cảnh báo ở số không trước khi cam kết (nhưng chấp nhận chúng trong khi làm việc). –

Trả lời

16

Khi bạn di chuyển chuột lên trên tên của biến, bạn có thể chọn "Tạo getter và setter cho varname" trong trình đơn bật lên.

Hoặc bạn có thể tự tạo cho mình một lối tắt để làm như vậy. Tùy chọn -> Chung -> Phím. Trong hộp tìm kiếm bạn nhập "getter" và sau đó bạn sẽ tìm thấy nó.

+0

Ít nhất trong Eclipse Helios, bạn không thể chọn tạo getter và setter nếu bạn đã tạo setter khi bạn di chuyển chuột qua biến. – Pablo

3

Hmm ... dunno nếu đây là những gì bạn đang tìm kiếm, nhưng nếu tôi tạo một trường trong một lớp có một cảnh báo rằng trường này không được sử dụng. Nếu tôi bấm vào cảnh báo ký tùy chọn để tạo ra phương thức getter và setter cho lĩnh vực này xuất hiện:

enter image description here

1

Tôi không nghĩ rằng câu hỏi đó ngụ ý rằng, vì tất cả những câu trả lời đã đưa ra một giải pháp thủ công.

AFAIK không thể thực hiện tự động mà không có plugin và tôi không biết plugin nào thực hiện.

Tôi sử dụng mẫu để tạo các tạo phẩm giống như tất cả cùng một lúc, nhưng tôi không theo cùng một đường dẫn - Tôi không chắc một giải pháp mẫu sẽ hoạt động nếu một trình rút gọn hoặc setter đã tồn tại, vì tôi không chắc chắn bạn có thể kiểm tra sự hiện diện của một phương thức và đưa ra các quyết định mẫu dựa trên đó. Có thể bạn có thể.

10

Hãy thử điều này, Nó hoạt động như bơ

Goto Source --> Generate Getter and Setter Methods 

Either select one instance varible, or all ---> Ok 
3

tôi làm hơi khác nhau.

  • Đầu tiên tạo biến: (nói private int threadsInPool = 3).
  • Đặt con trỏ vào tên biến (nói threadsInPool)
  • Áp dụng phím tắt này: Alt + phím Shift + s, r ( Nhấn cuối cùng r sau một chút chậm trễ)
  • Chỉ cần nhấn Enter khi Tạo Getters and Setters hộp thoại xuất hiện và Thì đấy!

EDIT: Bạn cũng có thể thử sử dụng Lombok chú thích:

@Getter @Setter private String value; 
Các vấn đề liên quan