2010-11-16 29 views
13

Vì vậy,Biến thể hiện so với biến thông số? Có tranh luận nào không?

Tôi đã làm việc để tính lại một số mã cũ trong thời gian gần đây và đã tự hỏi mình về tính hợp lệ của một số quyết định tái bao thanh toán mà tôi đã thực hiện. Một truy vấn như vậy đã được về việc sử dụng các biến mẫu để chia sẻ đối tượng giữa các phương thức trong một đối tượng.

Cụ thể, có một số nơi mà các phương thức xây dựng & phương pháp đã được chia nhỏ và biến cục bộ được quảng bá cho các biến mẫu, cho phép truy cập từ các phương pháp riêng biệt hiện tại. Điều này, với tôi, có vẻ sai. Nó phá vỡ đóng gói, thay đổi phạm vi và có thể ảnh hưởng đến vòng đời, tuy nhiên, một số lớp này có liên quan đến hiệu năng và do đó tôi tự hỏi ý nghĩa của việc tái sử dụng các phương thức này để sử dụng tham số truyền có thể là gì?

Thêm vào thời điểm tôi tự hỏi liệu giả định của tôi có giữ nước không? Tham số truyền của các đối tượng có thích hợp hơn với các biến mẫu khi nói đến việc chia sẻ giữa các phương thức riêng không?

Trả lời

8

Trên trang web cộng theo cách này, bạn sẽ không phải chuyển các đối số đó cho các phương pháp khác. Khi một phương thức có nhiều hơn ba đối số (theo Robert Martin's Clean Code) khả năng đọc mã của bạn bắt đầu giảm nhanh. Tôi nghĩ bạn nên kết hợp hai phương pháp này để đặt cược kết quả tốt nhất.

Điều bạn có thể làm là xem liệu bạn có thể trích xuất một lớp mới từ một phần của lớp hiện có hay không. Khi chỉ là một phần của các phương thức sử dụng các trường thể hiện này, có lẽ các phương thức đó đang làm một cái gì đó có thể được tóm tắt. Bằng cách này bạn có thể tạo một lớp mới với các trường thể hiện như các đối số của constructor hoặc các thuộc tính và khởi tạo nó.

7

Tôi chắc chắn nghĩ rằng bạn không nên chỉ sử dụng các biến cục bộ và biến chúng thành các biến mẫu chỉ để tránh truyền chúng xung quanh. Đó chắc chắn không phải là một ý tưởng tốt cho các lý do mà bạn đã liệt kê bao gồm cả thực tế là nó bloats lên lớp chính nó.

Cho dù biến thể hiện đại diện là thuộc tính của lớp đó hay không không phải là thứ có thể được giải quyết chung. Nó sẽ phụ thuộc vào thực thể mà lớp đó đại diện. Tuy nhiên, thiết kế này được liên kết với thiết kế của chính lớp và có thể là thiết kế tổng thể của lớp cần được sửa lại.

Nếu có thể bạn cung cấp ví dụ về việc tái cấu trúc mà bạn đang đề cập đến, nó có thể giúp cung cấp câu trả lời tốt hơn trong ngữ cảnh đó

+0

+1, nó thực sự giống như mã nguồn. –

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