2013-02-22 71 views
2

我有一個類(Android Activity)處理啓動我的應用程序。該應用程序有一些非常複雜的啓動規則。現在它看起來像一堆意大利麪,我正在尋找重構它的策略。如何重構程序啓動代碼?

老實說,這樣的混亂我有問題的黑客提供僞代碼。一般有開辦一些規則在邏輯基本上編纂:

步驟:

  1. 檢查錯誤在最後的出口,並刷新本地緩存如果有必要
  2. 下載設置文件
  3. 解析設置和設置保存到本地原生格式
  4. 使用設置的值,做了一堆「看家」
  5. 的使用設置的值,下載數據的核心成分A
  6. 解析組分A和加載了本地高速緩存

在這樣的邏輯,其也更新所述用戶界面。所有這些都是在一個曲折的單一整體課堂中處理的。它很長,它有一堆依賴關係,邏輯很難遵循,它似乎觸及了應用程序的太多部分。

是否有可用於分解程序啓動代碼的策略或框架?

+0

你有沒有嘗試將東西提取到一個類中,並使用類似Roboguice的東西注入該類? – smk 2013-02-22 02:24:27

回答

0

沒有更多的細節,我能想到的唯一建議是將完成結構化功能的各個步驟分組,這些功能只完成一件事和一件事。

你的6個步驟看起來是你的init函數應該有的6個函數的一個好的開始。如果#2是同步的(我懷疑它),我會將#2,#3合併到一個getSettings函數中。

2

嗯。根據你的步驟,我看到各種不同的「關注」:

  1. 閱讀和保存設置。
  2. 從服務器下載設置和組件(不知道這裏是什麼「組件」)。
  3. 讀取和實例化組件。
  4. 刷新並讀取緩存。
  5. 管家(不知道這一切是什麼)。
  6. 用戶界面更新(不太確定這需要什麼)。

你可以嘗試分裂的代碼轉換成各種物體沿着上述的線路,例如:

  1. SettingsReader
  2. ServerCommunicationManager(?)
  3. ComponentReader
  4. 緩存

不知道約5和6,因爲我沒有太多去那裏。

關於框架,好吧,有各種各樣的,如前面提到的Roboguice,可以幫助依賴注入。這些可能會派上用場,或者只是手工操作可能更容易。我認爲,在你考慮依賴注入之前,你需要解開代碼。所有依賴注入框架所做的就是爲你初始化你的對象 - 你必須首先確定這些對象是有意義的。

+0

感謝您的深思。我想我有點想知道是否有一些策略來包裝程序規則並將它們轉化爲對象? – 2013-02-23 01:44:46

+0

當然。我要做的是看看程序正在處理的事物的類型。例如,您以「動詞名詞」(「刷新緩存」,「下載設置」等形式)列出了一堆內容。你的[名詞](http://steve-yegge.blogspot.com/2006/03/execution-in-kingdom-of-nouns.html)是一個類:因此,緩存,設置等有時你有應用一層抽象並組合功能 - 例如,您可能不希望您的設置直接下載(或者您可能會這樣做)。也許有一些處理所有下載的通用代碼。 – 2013-02-23 14:47:18