2010-04-08 31 views
18

Có tốt hơn không (thực hành tốt nhất) để tạo các phương thức với một danh sách dài các thông số hoặc bọc các tham số vào một đối tượng là gì?Có tốt hơn khi tạo các phương thức với một danh sách dài các tham số hoặc bọc các tham số vào một đối tượng không?

Tôi muốn nói rằng tôi có loại dữ liệu Khách hàng với danh sách dài các thuộc tính và tôi muốn cập nhật tất cả các thuộc tính cùng một lúc. là nó tốt hơn để làm điều gì đó như

public int Update(int id, string name, string surname, string streetAddress, string streetAddress2, string postcode, string town, string city, string nationality, string age, string gender,string job) 
{ } 

hoặc quấn tất cả các thuộc tính trong một đối tượng và làm điều gì đó như

public int Update(Client client) 
{ } 

nhờ

+2

sử dụng phương pháp thứ hai. Phút bạn viết một cuộc gọi để cập nhật, bạn sẽ không nhớ bằng cách xác định từng thông số. IntelliSense có thể giúp đỡ, nhưng vẫn còn, nó là khủng khiếp khi cố gắng hiểu mã của bạn khi liếc qua nó. – Abel

+0

có thể trùng lặp của http://stackoverflow.com/questions/439574/whats-the-best-way-to-refactor-a-method-that-has-too-many-6-parameters –

Trả lời

21

Trong cuốn sách của ông Refactoring, Martin Fowler một cách rõ ràng các cuộc gọi ra thông số dài liệt kê ở dạng mã số và đề xuất tái cấu trúc các phương pháp như vậy để sử dụng một đối tượng tham số Parameter.

Biến thể là để xác định cách nhiều tham số tự nhóm và tạo nhiều đối tượng tham số đại diện cho từng nhóm như vậy.

Ưu điểm của một đối tượng Parameter là mã trở nên dễ đọc hơn khi bạn có thể cung cấp cho các Parameter Object một Tên giao. Có thể là đối tượng tham số đại diện cho Domain Concept thực và điều tiếp theo bạn có thể làm là bắt đầu di chuyển hành vi vào đó.

+0

+1 gọn gàng và cho điểm! – Abel

1

Tôi sẽ nói tốt hơn là nên sử dụng một đối tượng. Nếu bạn tìm kiếm Stack Overflow có rất nhiều bài viết khác liên quan đến chủ đề này

0

Bạn nên thường sử dụng một đối tượng. Thông thường khi bạn có một số lượng lớn các tham số trên một phương thức, các tham số đó mô tả một "trạng thái" cụ thể. Mã ví dụ của bạn chỉ ra chính xác những gì tôi có ý nghĩa.

0

Điều gì về việc sử dụng Nhà cung cấp giá trị cho mỗi thành phần so với thông số đầu vào (trong trường hợp này được nhóm).

Cảm ơn

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