У меня есть программа 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() {.........}
}
- создание класса без элемента данных.
- всякий раз, когда мне нужно вызвать эту операцию, я должен создать объект и вызвать его (статические методы внутренних классов не будут работать, потому что вспомогательные методы обращаются к данным внешнего класса.)