不是语言特定的:使用“状态变量”而不是返回状态参数?

时间:2015-08-22 22:10:09

标签: coding-style

这是我多年来一直在思考的问题,请考虑以下所有其他适用的案例:

假设您有一个按钮,根据其可见性,您希望将其更改为其他状态,可见 - >不可见,不可见 - >可见

没有阅读他正在使用的课程文档的人可能会选择

Button button;
bool visible;

public onTouch(){

if(visible){
    button.setVisibility(invisible)
    visible=false;} 
else{
    button.setVisibility(visible)
    visible=true;}
}

哪个会很棒。但是,在大多数语言中,UI类提供类似Button.getVisibility的内容,这将导致以下代码:

Button button;

public onTouch(){

if(button.getVisibility==visible){
    button.setVisibility(invisible)} 
else{
    button.setVisibility(visible)}
}

其中需要较少的线条,如果Visibility是布尔值,onTouch()甚至可以是单行。另一方面,你进行一个方法调用,该方法需要花费时间来返回值,这会大规模地导致一点延迟,从而使GUI稍微没有响应。

你是如何处理的?这是一件值得关注的事情还是我花在写这个问题上的时间已超过用户通过“等待”按钮返回微小参数所经历的所有小CPU周期?

1 个答案:

答案 0 :(得分:1)

我会选择第二种选择,只担心我是否有证据表明这是性能瓶颈。成本可能微不足道,编译器可能无论如何都会优化它。

在性能方面,维护单独的visible变量也需要付出代价,但更重要的是确保它与button保持同步的复杂性

或许Button应该有toggleVisibility()方法。