Bạn có thể biết điều đó nhưng tôi chỉ đơn giản làm như sau:
class Person {
public:
std::string name() {
return _name;
}
void name(std::string value) {
_name = value;
}
private:
std::string _name;
};
Cách tiếp cận này rất đơn giản, không sử dụng thủ thuật thông minh và nó sẽ hoàn thành công việc!
Mặc dù vậy, vấn đề là một số người không thích đánh dấu gạch dưới trước các trường riêng tư của họ và vì vậy họ không thể thực sự sử dụng cách tiếp cận này, nhưng may mắn thay cho những người này, nó thực sự đơn giản. :)
Các tiền tố get và set không thêm rõ ràng cho API của bạn nhưng làm cho chúng dài dòng hơn và lý do tôi không nghĩ rằng họ thêm thông tin hữu ích là vì khi ai đó cần sử dụng một API nếu API có ý nghĩa thì cô ấy có thể sẽ nhận ra nó là gì không có tiền tố.
Một điều nữa, thật dễ hiểu rằng đây là những thuộc tính vì name
không phải là một động từ.
Trường hợp xấu nhất, nếu các API nhất quán và người đó không nhận ra đó name()
là trình truy cập và name(value)
là kẻ đột biến thì cô ấy sẽ chỉ phải tra cứu nó một lần trong tài liệu để hiểu mẫu.
Tôi yêu C # nhiều như vậy, tôi không nghĩ C ++ cần thuộc tính gì cả!