2010-11-09 5 views
5

Tôi thừa hưởng một dự án JSF được phát triển cách đây một năm bởi một người không làm việc trong công ty của tôi nữa và mã này thực sự khó hiểu. Rất nhiều nó dường như đã được tạo ra tự động bởi IDE, đặc biệt là getters và setters của các lớp. Trong thực tế, mọi trường riêng đều có getter và setter liên kết, ngay cả khi chúng không được tham chiếu ở bất kỳ đâu trong dự án.
Tôi muốn loại bỏ tất cả mã vô dụng này trước khi cố gắng hiểu dự án, nhưng cho rằng đó là dự án JSF, các thuộc tính của bean có thể được tham chiếu trong tệp xhtml và do đó sẽ không hiển thị khi sử dụng "tham chiếu hiển thị" chỉ huy.
Có cách nào để biết phương pháp nào là thực sự vô ích để xóa chúng một cách an toàn?Có cách nào để biết các thuộc tính bean nào được tham chiếu trong các tệp xhtml của một dự án JSF không?

Tôi sử dụng nhật thực nhưng mọi công cụ cho phép thực hiện việc này sẽ là một ưu đãi tuyệt vời!

Trả lời

1

Tôi không nghĩ có cách nào khác ngoài tìm kiếm .fieldname. Nhưng quan trọng hơn - tạo ra setters và getters, nếu chúng được trên các đối tượng dữ liệu chỉ, không phải là một trở ngại nghiêm trọng để hiểu một dự án. Vì vậy, bạn có thể bỏ qua phần dọn dẹp đó.

+0

Ok, tôi sẽ dính vào tìm kiếm văn bản ... Tôi biết các bộ cài đặt tự động và getters không phải là một trở ngại thực sự để hiểu dự án, nhưng tôi nghĩ rằng tôi có thể loại bỏ rất nhiều mã không sử dụng một cách nhanh chóng. Nếu tôi phải thực hiện tìm kiếm văn bản cho mọi người tìm kiếm để biết tôi có thể xóa nó hay không thì tôi nghĩ tôi sẽ trì hoãn việc dọn dẹp này. –

1

Tôi nghĩ tốt hơn là nên học và chơi xung quanh với JSF trước khi đi sâu vào dự án JSF hiện có. Getters/setters chỉ có ở đó để lấy dữ liệu để hiển thị trong đầu ra HTML và thiết lập các tham số yêu cầu từ đầu vào biểu mẫu HTML. Ví dụ. <h:inputText value="#{bean.foo}" /> trong chế độ xem yêu cầu bean.getFoo() để hiển thị giá trị và bean.setFoo(String value) để đặt giá trị đã gửi. Vì vậy, chỉ cần để chúng ở đó và tập trung vào các phương pháp hành động.

Đối với các công cụ, Eclipse không cung cấp các công cụ/cơ sở cho điều này vì chúng có thể được gọi bởi sự phản chiếu chứ không phải bởi các tham chiếu trực tiếp. Nó gần như không thể phát hiện ra điều đó. Ít nhất, nó là tốt để biết rằng những người định cư không bao giờ được gọi là cho các thành phần chỉ đầu ra, như <h:outputText value="#{bean.foo}" /> hoặc cho đậu lồng nhau như <h:inputText value="#{bean.nested.foo}" />. Tuy nhiên setter là bắt buộc bất cứ khi nào bean lồng nhau được tiêm như là thuộc tính được quản lý.

Bản thân tôi chỉ ẩn bộ thu thập/giải quyết ở xa toàn bộ phần dưới của lớp học. Các phương thức hành động (ít nhất, các phương thức không getter/setter) là đúng ngay sau hàm khởi dựng (s). Bạn thậm chí có thể cấu hình IDE để đặt chúng ở đó trong quá trình tự tạo.