2016-08-09 39 views
0

是否有标准的惯例或约定在哪里声明只在另一个方法内使用(或调用)的方法?为了证明这种假设如下:关于如何组织方法的最佳做法?

public class MyClass{ 
    methodA(); 
    methodB(); 
    methodC(); 

    public void methodA(){ 
     methodA1(); 
     methodA2(); 
    } 
    public void methodB(){ 
     methodB1(); 
     methodB2(); 
    } 
    private void methodA1(){ 
     do something; 
    } 
    private void methodA2(){ 
     do something; 
    } 
} 

或者,有没有作弄不同的方式,可以改善上述的可读性?我已经阅读了类似主题的其他问题,但他们没有解决我在其他方法中使用的具体方法问题。您可以假设methodA,methodB和methodC对于特定任务具有逻辑和有意义的顺序。我的问题是其他方法(methodA1,methodA2,..)在这个任务中没有意义,它们仅在它们被调用的方法内部才有意义。或者,我应该不打扰方向声明的放置位置吗?

+0

代理模式?先https://en.wikipedia.org/wiki/Proxy_pattern – Stefan

+1

公共方法,然后保护,然后私人。使它更容易阅读。 – pecks

+0

在最近一项关于程序理解的研究中,结果表明答案可能是:任何一致的排序。 – Elazar

回答

1

方法应该以这样的方式,让他们念想不引起读者需要跳跃的代码太多

罗伯特·Ç·马丁(又名叔叔的故事进行排序Bob)

这意味着什么(简而言之),就是你的methodA1,methodA2应该放在methodA(使用它们)之后。与methodB methodB1,methodB2一样。我希望看到这样的事情:

public class MyClass{ 
methodA(); 
methodB(); 
methodC(); 

public void methodA(){ 
    methodA1(); 
    methodA2(); 
} 

private void methodA1(){ 
    do something; 
} 
private void methodA2(){ 
    do something; 
} 

public void methodB(){ 
    methodB1(); 
    methodB2(); 
} 

public void methodB1(){ 

} 

public void methodB2(){ 

} 
} 

它也建议你把你的成员变量在顶部(因此不会根据访问修饰符的位置决定)。

您可能想要检查Bob叔叔的booksvideos以获得一些关于编写干净代码的非常好的建议。

+0

您在methodA之前放置了methodA1和methodA2之前。 – Addis

+0

对不起@Addis错字。我编辑了我的答案。 MethodA1和methodA2应放在methodA之后(即使用它们) – sestus

0

如果您只是使用文本编辑器来读取和更改代码,那么考虑您声明方法的顺序可能是有意义的,但通常您会使用像Eclipse这样的现代工具,它给你一个方法的概述,并允许你遵循调用层次结构,所以它们所在的位置并不重要。

最好集中精力使自己的代码尽可能独立和抽象,只用做一件事的方法,以及具有非常明确功能的类,并且不惜一切代价避免使用应该由另一个对象完成。

呵呵,写出好评。这意味着解释为什么而不是什么你在做什么。

0

如果只有一个函数调用一个方法,并且它只调用一次,则可以使用一个函数。

如果它多次调用它,请将它放在“父”函数之前,而不要在它们之间有任何换行符。如果可读性会受到影响(例如的javadoc将得到搞砸了一千没用的功能)考虑隐藏它们都放在私人用util_/internaluse_//ZZZ前缀或parentname_像methodA_methodA1

如果它是由几个称为它的功能更多的是实用功能。所以对待它就是这样。这些实用功能中的一些可以成为实用类。

另外,我个人使用C++风格。所以会员,那么A1,A2,A,B1,B2,B

相关问题