Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于私有方法签名是否有OOP约定-直接使用字段或获取参数?_Oop_Methods_Field_Private_Convention - Fatal编程技术网

关于私有方法签名是否有OOP约定-直接使用字段或获取参数?

关于私有方法签名是否有OOP约定-直接使用字段或获取参数?,oop,methods,field,private,convention,Oop,Methods,Field,Private,Convention,我想知道当使用私有方法时,下面哪一项是更好的OOP实践。字段应该直接使用,还是像参数一样提供给方法 class MyClass { private int myNumber; public MyClass(int number) { this.setMyNumber(number); } public void setMyNumber(int number) { this.myNumber = number; }

我想知道当使用私有方法时,下面哪一项是更好的OOP实践。字段应该直接使用,还是像参数一样提供给方法

class MyClass {
    private int myNumber;

    public MyClass(int number) {
        this.setMyNumber(number);
    }

    public void setMyNumber(int number) {
        this.myNumber = number;
    }

    public int getMyNumber() {
        return this.myNumber;
    }

    public int getTransformedNumber() {
        return transformNumberInSomeWay1();
        // OR 
        return transformNumberInSomeWay2(this.getMyNumber());
    }

    private int transformNumberInSomeWay1() {
        int number = this.getMyNumber();

        <... transformation of the number ...>

        return number;
    }

    private int transformNumberInSomeWay2(int number) {
        <... transformation of the number ...>

        return number;
    }
}
class-MyClass{
私有整数;
公共MyClass(整数){
这个.setMyNumber(数字);
}
公共无效setMyNumber(整数){
this.myNumber=number;
}
public int getMyNumber(){
返回此.myNumber;
}
public int getTransformedNumber(){
返回transformnumbersinsomeway1();
//或
返回TransformNumberHomeway2(this.getMyNumber());
}
私有int TransformNumberInHomeWay1(){
int number=this.getMyNumber();
返回号码;
}
专用int TransformNumberHomeway2(int编号){
返回号码;
}
}

如果我对字段myNumber以外的其他内容使用转换数方法,则第二种方法更好。如果我没有将它用于其他任何事情,但我不知道该类的开发将如何进行呢?我应该总是用第二种方式来做,还是让需要的人以后再做改变

我将省略私有TransformNumberSomeway方法,并在getTransformedNumber()方法中实现逻辑。很明显,你必须省略参数并访问函数中的变量。这取决于你,没有硬性的规则,你说第二种方法会使以后更容易抽象/重构/提取它是正确的。但你当然不知道你是否需要这样做。下一件让你抓狂的事情是你应该使用命令模式而不是单个参数。。。