2014-05-06 36 views
1

您使用什麼技術來防止文件變得過大? 你用什麼重構來分解大文件?管理大型文件(代碼行)

我發現我的Android項目中的一些文件由於語言和平臺的性質而變得非常大。例如,我的主要活動爲每個活動欄設置了一個操作欄,一個抽屜,選項菜單和一個點擊監聽器。當然,文件還實現了幾個繼承的方法......接下來的事情你知道的,文件上線結束1500

既然一切我撫養到該文件需要一個具體的實現,我有很難概念化我如何從文件中抽取一些內容。

有一件事我已經試過是一些私有的內部類分隔成一個實現類,只有這樣每個文件更小,更易於管理:

// Instead of putting this inside MainActivity.java 
private class DrawerItemClickListener implements ListView.OnItemClickListener 
{ 
    ... 
} 

// It's now in a separate file as - very specific class 
public class DrawerItemClickListenerImpl implements ListView.OnItemClickListener 
{ 
    ... 
} 

雖然這有助於打破的大小一個文件,它感覺很奇怪創建僅使用一次的類,並且出於一個非常特定的原因...

+5

它的一個噩夢,我同意。這是android編程的難點之一。 – Nazgul

+1

IDE的功能(摺疊,導航器)可以幫助您長時間查看源代碼。然後,只要你想(含包裝訪問級別),以重構代碼了「主」類,你可以使用盡可能多的輔助類。 – PeterMmm

+0

代碼摺疊和其他IDE特定功能的幫助,但不解決問題。在處理文件時,我仍然需要對文件有一個非常複雜的思路,所以如果代碼少的話,效果會更好,而不是更多的方法來暫時隱藏代碼。 –

回答

4

這真的是UI編程的本質它和java swing編程沒有什麼不同。

在這個範例中,你有一個JPanel,帶有一些按鈕,一些組合框和一些監聽器。你必須實現這些元素的監聽器,但只有JPanel才能真正使用它們。因此,您將內部類實現爲偵聽器,以便該面板上的所有內容交互良好。

有類似

public class IpAddressPanelListener implements ActionListener 

爲公共類錯失關鍵。公開課是關於分享可用性的。內部類是關於作業超級特定的類。在UI的情況下,通常是你所擁有的

如果你真的需要將它們分解出來,因爲你不能將它全部概念化,那麼你可以做的就是把它們(和Activity類impl)放入它們的自己的包裝和申報所有類別和方法包裝範圍。現在你可以有你的文件爆發而沒有讓他們提供給廣大市民

1

一個好的Android設計模式是使用片段:http://developer.android.com/guide/components/fragments.html

在很高層次上,片段是Android應用程序中可重用組件的類。片段還提供其他好處。其中最值得注意的是能夠構建自適應用戶界面 - 即充分利用可用屏幕空間的用戶界面。當您用碎片設計您的應用程序時,您的活動的角色成爲這些碎片的管理(例如提供數據,詢問用戶輸入的數據等)。

有許多很好的教程片段設計。

+0

我正在使用片段。這並不會影響我的場景,因爲我仍然需要編寫代碼來啓動和管理這些片段。正如+ ChristianBongiorno所指出的那樣,這個問題更多的是關於UI編程而不是管理活動。 –

+0

簡單管理片段的活動中的1500行代碼聽起來過多。大多數關於用戶界面的問題都應該包含在你的片段中。 FWIW,當我開始使用片段時,我注意到我的活動類的大小/複雜性顯着減少。 – EJK

+0

1500 loc不會簡單地管理片段。它管理我原來的發佈後操作欄,抽屜,活動方法以及啓動器活動期望的所有其他內容。我的意思是說,儘管我使用了碎片,但我的文章中描述的問題仍然存在。 –