(void方法类型vs返回的方法)用于更改私有全局变量

时间:2015-07-01 18:18:11

标签: java c# c++ oop

假设我们有一个名为x的全局变量,如下所示:

public class test
{
    private int x = 0;
    //lots of code here...
}

现在假设我们想要在某个任意点改变类测试中的x值(而不是在类外部)。

有两种方法可以做到这一点:

使用void方法:

public class test
{
     private int x = 0;
     //lots of code here...
     changeX();

     private void changeX()
     {
         // calculate stuff
         this.x = newXValue;
     }
}

使用int类型方法:

public class test
{
     private int x = 0;
     //lots of code here...
     x = changeX();

     private int changeX()
     {
         // calculate stuff
         return = newXValue;
     }
}

有什么理由说我为什么要选择一个而不是另一个?安全原因?可读性?

我在整个程序中都发生了这种情况,并且无法决定使用哪种约定。

2 个答案:

答案 0 :(得分:1)

如果我们在这里谈论私有东西(私有方法和私有字段),那么我几乎总是更喜欢该方法的功能版本:返回值。

如果您可以将所有计算封装在此方法的主体中,那么我认为没有理由强制它更新私有字段。这些方法应该做一件事,做得好。只需计算并返回该值,并让调用代码在您的类中的其他地方做任何它喜欢的事情,因为该代码将知道一般情况。

但是,您显然会将方法名称更改为calculateY(),其中Y not 引用您的字段名称,而不是它所拥有的数据(字段) X将被命名为描述它如何对类有用,而Y将描述它是如何计算的,根据用例,它可能是也可能不是2种不同的东西。

答案 1 :(得分:0)

只要您的代码对该类保密,我认为没有理由存在安全问题。我个人会选择该方法的void版本,因为任何调用changeX()方法的人也可以直接访问x(所有这些都在同一个类中)。返回int打开了一个局部变量在其上执行操作的可能性,该变量应该在类变量上执行。