当前位置:  开发笔记 > 编程语言 > 正文

哪个更合适:吸气剂和制定者或功能?

如何解决《哪个更合适:吸气剂和制定者或功能?》经验,为你挑选了2个好方法。

如果替代函数名称使API更明显,放弃getter和setter的"getMyValue()"和"setMyValue()"模式是否合适?

例如,假设我在C++中有这个类:

public class SomeClass {
private:
    bool mIsVisible;

public:
    void draw();
    void erase();
}

我可以添加函数来获取/设置"mIsVisible",如下所示:

bool getVisible() { return mIsVisible; };

void setVisible(bool visible) { if (!mIsVisible && visible) { draw(); } else if (mIsVisible && !visible) { erase(); }

mIsVisible = visible;

}

但是,同样可以使用以下方法:

bool isVisible() { return mIsVisible; };

void show() { 
    if (!mIsVisible) {
        mIsVisible = true;
        draw();
    }
}

void hide() {
    if (mIsVisible) {
        mIsVisible = false;
        erase();
    }
}

简而言之,有一个"setVisible(bool)"方法,还是一对"show()"和"hide()"方法更好?有会议,还是纯粹主观的?



1> Rob Wells..:

在Pragmatic Programmers网站上阅读文章" Tell,Do not Ask ",我想你会看到第二个例子是要走的路.

基本上,你不应该通过你的第一个例子隐含的代码传播逻辑,即:

    获得当前的可见性值,

    根据价值做出决定,

    更新对象.



2> Adam Bellair..:

在这个例子中你给,show()hide()让有很大的意义,至少对我来说.

另一方面,如果你有一个属性skinPigment而你决定调用函数tanMe(),makeAlbino()这将是一个非常糟糕,非显而易见的选择.

这是主观的,你必须尝试思考你的用户(使用这个类的人)的想法.无论你决定哪种方式,它都应该是显而易见的,并且有充分的记录.

推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有