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 - Fatal编程技术网

Oop 这个调用私有方法的公共方法是否包含不必要的冗余?

Oop 这个调用私有方法的公共方法是否包含不必要的冗余?,oop,Oop,假设我有一个公共方法,如下所示: public void startService(int intParam1, int intParam2, boolean booleanParam) { setupService(intParam1, intParam2, booleanParam); // call private method to perform prerequisites // perform remaining logic to start

假设我有一个公共方法,如下所示:

    public void startService(int intParam1, int intParam2, boolean booleanParam) {
        setupService(intParam1, intParam2, booleanParam); // call private method to perform prerequisites

        // perform remaining logic to start service here
    } 
此方法调用同一类中的私有方法,该类与调用它的公共方法具有相同的接口。publicstartService()方法是privatesetupService()方法的唯一使用者


如果去掉私有的setupService()方法调用,并用setupService()的实现替换它,会更好吗?在这种情况下,似乎有一些多余的,可能是不必要的,但我想得到一些专业意见。在我的职业生涯中,我曾多次遇到过这种情况,但通常都会以另一种方式看待,因为我害怕弄坏东西。

我也经常遇到这种情况

我问自己:

  • 私有函数是否做了太多可能进一步分解为函数的事情?如果是这样的话,那么我宁愿放弃单一的私有函数,从公共函数中调用较小的函数。这使代码更具可读性,因为您可以一眼看到公共方法正在做什么。这也有利于代码的自文档化

  • 是否有可能在将来的用例中再次使用单个私有函数?如果没有,那么目前就不需要将其保密。但是,如果您的公共函数中的一部分代码必须由其他函数使用(在转换期间进行更多测试),那么将来可能会变得很困难


总之,它归结为在函数中具有最佳的模块性。如果私有函数不能进一步分解为独立的函数,那么我就把它去掉,把它的代码放在public方法中。

这两个函数有多大?通常情况下,最好将一段长而复杂、自包含的代码重构成一个单独的函数,因为它既长又复杂。这是一个很好的问题——setupService()是50行代码,startService()是25行代码。在这种情况下,我可能至少会分离出两个私有方法。根据经验,我不喜欢方法的长度超过20-25行(尽管这只是一个经验法则;也可能有例外),特别是如果这实际上是25行密集的复杂度,而不是,比如说,在平面视图中添加25个小部件。仅供参考,当有人问一个方法有多大时,代码行是一个非常糟糕的指标。最好是引用圈复杂度(即代码中决策点的数量)。感谢您提供的信息,因为我以前从未这样想过。很好的提示。