重构包以匹配 UI 层次结构



目前我的应用程序主要是.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

开始重构时,我收到了消息

Error:(260, 50) error: m_strTitle is not public in My_0_ApplicationState.TopicObject; cannot be accessed from outside package

这是因为My_0_ApplicationState ,它在.app包中包含一个名为 TopicObject 的类,该类具有一个名为 m_strTitle 的私有成员,我正在从这个新包center.pager.MainFragment访问该成员,它曾经是.app包中My_0_ApplicationState的同级,名为 My_1_1_CenterPagerFragment。以前,虽然它们都在同一个包中,但这不是一个错误。

将 TopicObject 的成员更改为公共可以解决此问题,但这让我思考我是否可能使这种重构错误。

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

在代码中使用适当的包可以使以后更清晰,更易于阅读。您唯一应该注意向外界公开的内容,请使用适当的访问修饰符或提供访问数据的替代方法。

相关内容

最新更新