在Android中将类放在包名下的最佳做法是什么?

ant*_*009 10 java android packages

Android Studio 0.8.11
Run Code Online (Sandbox Code Playgroud)

你好,

我刚刚在Android上完成了一项测试,即构建一个带有实时新闻源的应用程序并显示它们.但是,由于我将所有课程都放在一个包装下,因此教师非常关键.

我只是想知道包装类的最佳实践是什么.对于我的特定测试,我在此包名下有以下类:

com.viewsys.ncon

我的课程是:

DBHelper          <-- database creating and ugprading
DetailActivity    <-- activity that add the NconDetailFragment
NconContract      <-- properties of the database schema columns, table name
NconDetailFragment <-- detail fragment
NconListFragment  <-- list fragment
NconViewPager  <-- just the view pager
JsonNewsFeed   <-- class that downloads and parses the json format
MainActivity   <-- Main activity
NewsFeed       <-- class of properties getters/setters for news feed
NewsFeedDB     <-- simple array list to store all the object from the sqlite3 DB
SplashActivity <-- activity that add the splashFragment and the NconListFragment
SplashFragment <-- splash fragment
Utilities <-- just some simple utility functions
Run Code Online (Sandbox Code Playgroud)

非常感谢任何建议,

Sim*_*ant 21

首先,您可以通过Model(包含数据的类)和视图(显示的所有内容)进行分离,然后您可以为不同类型的类创建子包.

例如:

com.viewsys.ncon

Utilities
Run Code Online (Sandbox Code Playgroud)

com.viewsys.ncon.model

NconContract
JsonNewsFeed
NewsFeed
Run Code Online (Sandbox Code Playgroud)

com.viewsys.ncon.model.db

DBHelper
NewsFeedDB
Run Code Online (Sandbox Code Playgroud)

com.viewsys.ncon.view

NconViewPager
Run Code Online (Sandbox Code Playgroud)

com.viewsys.ncon.view.activities

DetailActivity
MainActivity
SplashActivity
Run Code Online (Sandbox Code Playgroud)

com.viewsys.ncon.view.fragments

NconDetailFragment
NconListFragment
SplashFragment
Run Code Online (Sandbox Code Playgroud)

您应该尝试最小化包依赖性循环.这意味着一个包可以依赖于另一个(或多个其他)包并使用它们的类,但是所需的包应该最小化对第一个包的依赖性.因此,依赖性调用应该只进入一个方向.

  • @AlexK当然包括后缀'会帮助代码在项目结​​构之外的可读性,不是吗? (2认同)

Nee*_*kla 9

好吧,我使用以下包裹 -

  1. project.activity - 放置所有活动
  2. project.fragment - 碎片
  3. project.broadcastReceiver
  4. project.databaseHelpers - 放置用于处理各个表的数据库助手类以及用于创建所有数据库表的主SqliteHelper类.
  5. project.networkTasks - 所有对不同服务的不同API的调用都在这里.
  6. project.services - 包括作为服务运行的类.有时它们与网络任务重叠.
  7. project.general - 包括一般课程.例如,假设您将学生数据存储在表格中.然后你可以有一个学生班.当您创建并填充它的实例时,您可以清楚地传递与学生相关的数据.
  8. project.utils - 包括实用程序类.这些类主要有静态方法.例如,将HttpResponse作为字符串获取的方法将放在其中一个类中.

作为一般规则,史蒂夫所说的是正确的,应用凝聚力和耦合的原则.


Cha*_*kle 5

我按照Simulant的建议构建我的包,我发现这是维护结构良好的项目的最佳方法.

但是,我还为扩展您自己的对象的对象创建子包.例如:

com.viewsys.ncon.view.fragments 
ViewPagerFragment


com.viewsys.ncon.view.fragments.viewpagerfragments
YourViewPagerFragment1 extends ViewPagerFragment
YourViewPagerFragment2 extends ViewPagerFragment
YourViewPagerFragment3 extends ViewPagerFragment
Run Code Online (Sandbox Code Playgroud)

这种特殊方法对于在项目变得更大时导航项目非常有用,特别是如果您要扩展自定义对象的许多先前功能.