2011-12-13 33 views
8

Tôi có lớp trừu tượng này được sử dụng làm kho dữ liệu.Tôi có nên sử dụng "get" -prefix trong tên phương thức của mình không?

public abstract class AbstractDataSource { 
    public abstract DataRow getDataRow(Key key); //or just dataRow(Key key)??? 
} 

public class CSVDataSource extends AbstractDataSource { 
    @Override 
    public DataRow getDataRow(Key key) { //or just dataRow(Key key)?? 
     //fetch row from file and return dataRow 
     //.... 
     return dataRow; 
    } 
} 

Các lớp cụ thể khác (tức là lớp con của lớp này) triển khai các phương pháp cho nguồn dữ liệu khác nhau, ví dụ: CSV, ARFF và các định dạng khác.

Tôi đã tự hỏi liệu từ khóa "get" có thích hợp ở đây hay không, vì việc truy xuất dữ liệu không chỉ trả về một biến, mà còn có thể yêu cầu truy cập hệ thống tập tin hoặc bất kỳ thứ gì.

Vì vậy, tôi nên sử dụng "get" -prefix hay không?

Cảm ơn

+0

Tôi khuyên bạn nên sử dụng 'truy xuất' vì điều này cho thấy rằng điều phức tạp hơn đang xảy ra hơn là chỉ nhận được giá trị –

+0

Tôi thích truy xuất ví dụ này. – AHungerArtist

Trả lời

9

Tôi đồng ý rằng việc sử dụng các từ khóa get đôi khi có thể có vẻ phi trực quan khi có luận lý thực sự đằng sau. Trong trường hợp của bạn, tiền tố lookup hoặc find có thể là các biến thế tốt. Ngoài ra còn có retrieve theo đề xuất của @Thomas.

Câu hỏi này có vẻ không có chủ đề lúc đầu. Nhưng đặt tên là, ít nhất là với tôi, một phần không thể thiếu của thiết kế ứng dụng tốt.

+0

+1. Không chỉ logic thực sự, mà còn là cơ hội thực sự để đưa ra một ngoại lệ. – ruakh

+0

Còn về gool boolean thì sao? Những gì để sử dụng thay vì tiền tố là? – user2340939

+0

Điều gì về các thuộc tính được tính toán như kích thước trong 'Danh sách'? Nó không có tiền tố 'get'. – EliuX

2

Bạn có muốn phương pháp này là bean getter, để bạn có thể sử dụng phương pháp này với những thứ như BeanUtils? Cho rằng nó đang làm nặng I/O và một số logic, có lẽ không, vì vậy tôi sẽ đặt tên nó một cách khác nhau.

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