2

I have a class (Android Activity) which handles start-up of my application. The application has some pretty complex start-up rules. Right now it looks like a bunch of spaghetti and I'm looking for strategies for refactoring it.

It's honestly such a mess I'm having problems hacking it down to provides pseudo code. In general there are some rules for start-up that are basically codified in logic:

Steps:

  1. Check for error on last exit and flush local cache if necessary
  2. Download settings file
  3. Parse settings and save settings to local native format
  4. Using the values in settings, do a bunch of 'house keeping'
  5. Using a value in settings, download core data component A
  6. Parse component A and load up local cache

During this logic, its also updating the user interface. All of this is handled in a zig-zagging, single monolithic class. Its very long, its got a bunch of dependencies, the logic is very hard to follow and it seems to touch way too many parts of the application.

Is there a strategy or framework that can be used to break up procedural start-up code?

4

2 回答 2

2

嗯。根据您的步骤,我看到了各种不同的“担忧”:

  1. 读取和保存设置。
  2. 从服务器下载设置和组件(不确定这里的“组件”是什么)。
  3. 读取和实例化组件。
  4. 刷新和读取缓存。
  5. 家政服务(不太确定这一切意味着什么)。
  6. UI 更新(也不确定这需要什么)。

您可以尝试按照上述方式将代码拆分为各种对象,例如:

  1. 设置阅读器
  2. 服务器通信管理器 (?)
  3. 组件阅读器
  4. 缓存

不确定 5 和 6,因为我没有太多的事情要做。

关于框架,有各种各样的框架,比如前面提到的 Roboguice,可以帮助进行依赖注入。这些可能会派上用场,或者手动执行此操作可能更容易。不过,我认为在考虑依赖注入之前,您需要解开代码。依赖注入框架所做的只是为您初始化对象——您必须首先确保对象有意义。

于 2013-02-22T02:38:12.740 回答
0

没有更多细节,我能想到的唯一建议是将结构良好的功能背后的各个步骤分组,这些功能只做一件事和一件事。

您的 6 个步骤看起来是您的 init 函数应该具有的 6 个函数的良好开端。如果#2 是同步的(我对此表示怀疑),我会将#2、#3 合并到一个getSettings函数中。

于 2013-02-22T02:29:17.080 回答