Android 重构包以匹配UI层次结构

Android 重构包以匹配UI层次结构,android,refactoring,Android,Refactoring,目前我的应用程序主要是.app包中的一堆Java文件。我通过给类起奇数的名字来模拟层次结构 My_0_MainActivity.java My_0_CenterLayout.java My_1_1_0_CenterPageOptionsFragment.java My_1_1_1_CenterPageGridFragment.java My_1_1_CenterPagerFragment.java My_1_2_CenterSettingsFragment.java My_2_DrawerLef

目前我的应用程序主要是.app包中的一堆Java文件。我通过给类起奇数的名字来模拟层次结构

My_0_MainActivity.java
My_0_CenterLayout.java
My_1_1_0_CenterPageOptionsFragment.java
My_1_1_1_CenterPageGridFragment.java
My_1_1_CenterPagerFragment.java
My_1_2_CenterSettingsFragment.java
My_2_DrawerLeftBaseFragment.java
My_3_0_DrawerRightDatePickerFragment.java
My_3_1_DrawerRightOptionsFragment.java
My_3_DrawerRightBaseFragment.java
...
应该反映

MainActivity.java
 +-CenterFragment.java
 |  +-CenterPagerFragment.java
 |  |  +-CenterPageOptionsFragment.java
 |  |  +-CenterPageGridFragment.java
 |  +-CenterSettingsFragment.java
 +-DrawerLeftBaseFragment.java
 +-DrawerRightBaseFragment.java
   +-DrawerRightDatePickerFragment.java
   +-DrawerRightOptionsFragment.java
所以我想我会创建子包,比如

 .app.MainActivity.java
 .app.center.BaseFragment.java
 .app.center.pager.MainFragment.java
 .app.center.pager.page.OptionsFragment.java
 .app.center.pager.page.GridFragment.java
 .app.center.settings.MainFragment.java
 .app.drawer.left.MainFragment.java
 .app.drawer.right.MainFragment.java
 .app.drawer.right.page.DatePickerFragment.java
 .app.drawer.right.page.OptionsFragment.java
在开始重构时,我得到了信息

错误:(260,50)错误:m_strtite在My_0_应用程序state.TopicObject中不是公共的;无法从软件包外部访问

这是因为.app包中的
My_0_ApplicationState
包含一个名为TopicObject的类,该类有一个名为m_strtite的私有成员,我正在从这个新包
center.pager.main fragment
访问该成员,该成员以前是.app包中的
My_0_ApplicationState
的兄弟,命名为My_1_1_CenterPagerFragment。以前,虽然它们都在同一个包中,但这不是一个错误

将TopicObject的成员更改为public解决了这个问题,但这让我想到,我是否可能使这种重构出错


进行这种重构是好的,还是应该使用另一种方法?这种重构会让我的代码更干净,还是会引入一种不应该这样做的方法?

在代码中包含适当的包会使代码更干净,更易于以后阅读。您唯一应该注意的是向外界公开的内容—使用适当的访问修饰符或提供其他访问数据的方式。

那么您的意思是更改此布局是明智之举?当查看丢失的GoogleI/O应用程序时,它的ui文件夹中有大量文件,没有任何层次结构。我的意思是,我已经到了一个包只包含一个片段而没有其他内容的地步,这样可以吗?一个包包含一个片段有点太多层次结构。通常我遵循的是所有片段都放在一个frgament包中,所有util放在utils包中。这样管理100个源文件就容易多了。