Хранение вспомогательных методов в той же области, что и main_operation_methods, снижает читабельность - PullRequest
1 голос
/ 11 декабря 2011

У меня есть программа MineSweeper, где я сталкиваюсь со сценарием, аналогичным.,

Где моя проблема?

 class operation{

    <Data's needed for all operations> 
    /*(Each operation needs all the datas.)*/

   public  mainOperation(){ // user can call this mainOperation whenever they want to do some work.
       operation_ABC();
       operation_LMN();
    }

    private  void operation_ABC(){
    helper_DEF();  //This helper does partial work of ABC()
    helper_IJK();  //This helper does remaining work of ABC()     
    }

    private void DEF(){..//access and work on data..}
    private void IJK(){..//access and work on data..}       

    private void operation_LMN(){
    helper_OPQ();  
    < some work on data >
    helper_RST();  
    }

    private void helper_OPQ(){..//access and work on data...}
    private void helper_RST(){..//access and work on data...}    
    }

Что мне нужно?

Мне нужен какой-то способ сгруппировать методы и уменьшить видимость helper_DEF и helper_IJK в пределах operation_ABC. Здесь я четко назвал его operation_ или helper_, но реальный сценарий в моей программе ...

private void backEndActionTaker(){
      <type: private void > initializeMinePlacer(); 
      <type: private void > mineValueAssigner();    
}

Проблема читабельности: Разработчикам, которым необходимо читать / расширять этот код, наверняка будет трудно разделить операции и помощники, поскольку все выглядит как операция одним взглядом.

Над чем я работал? Я планировал создать внутренние классы без каких-либо данных, но я почувствовал две неприятности.

 class operation_ABC{
    exec_ABC(){
      helper_1();
      helper_2();
    }
    private helper_1(){......//Access outer class data...}
    private helper_2() {.........}
  }
  1. создание класса без элемента данных.
  2. всякий раз, когда мне нужно вызвать эту операцию, я должен создать объект и вызвать его (статические методы внутренних классов не будут работать, потому что вспомогательные методы обращаются к данным внешнего класса.)

1 Ответ

2 голосов
/ 11 декабря 2011

Иметь закрытые методы, вызывать другие закрытые методы - это нормально. Если вы хотите улучшить читабельность, не используйте префиксы, такие как «helper_» или «operation_», которые не являются стандартными, нарушают соглашения об именах и в любом случае не рассказывают много о методе. Просто выберите понятные имена методов и задокументируйте их, используя комментарии javadoc.

Любой разработчик обслуживания должен знать, как анализировать код, и уметь использовать IDE, чтобы знать, где вызывается метод, если это не очевидно из документации и названия метода.

...