Closed. This question is opinion-based。它当前不接受答案。












想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。

5年前关闭。



Improve this question




我有一个A类,其属性名为prop,类型为int。 Getter和setter的实现通常如下:
class A
{
    void set_prop(int value);   // set
    int get_prop() const;    // get
}

是否有理由更喜欢这种设计,而不是如下使用两个具有相同名称的重载?
class A
{
    void prop(int value);   // set
    int prop() const;    // get
}

我更喜欢最后一种形式(也许只是口味问题)。但是我通常见过第一种形式。因此,我想知道是否有深层原因优先选择一个?也就是说,这仅仅是样式问题,还是有一个面向对象的原则说一个优于另一个?

最佳答案

选择第一种样式的基本原理是一种语义。 (在这种情况下为成员)函数表示一个 Action ,调用函数的含义是请求执行关联的 Action 。因此,它们通常以动词命名:

  • get_property()
  • create_foo()
  • compute_bar()
  • show_button()

  • 在某些情况下(例如获取成员函数的地址时),您也将更清楚地知道自己在做什么:
    auto foo = &A::property;
    // Is property a member function or a member variable here?
    

    没有人会阻止您使用第二个选项,实际上很多人都是use a mix of both,但是第一个选项绝对可以更好地与函数或方法在编程语言中表示的内容保持一致。

    关于c++ - 单一方法的重载与C++中属性的获取/设置? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31711020/

    10-11 04:52