2011-08-11 43 views
15

我來自java世界,在我的理解中,文件/類應該在包/文件夾中良好地結構化。Xcode 4中是否有組織的「最佳實踐」?

Xcode4的最佳實踐是什麼?我還沒有找到蘋果的指導方針。如果有人能把我推薦給正確的文件,我會很高興。

如果沒有文件:最好怎麼辦?我覺得把一個項目文件夾中的所有類放在Xcode視圖或文件結構內(奇怪的是,文件結構看起來不像Xcode中的可視化結構)有點奇怪。當然,該項目將在版本控制(在GitHub上)。

非常感謝提前!

+4

對,Xcode 4中的項目導航器並不是實際的文件結構。我認爲這個想法是讓你在項目導航器中安排你的文件,並讓Xcode擔心實際的文件系統。您在代碼中引用文件的方式始終只是使用文件名而沒有任何文件系統路徑。我假設編譯器在編譯時將結構變得平坦些。至於最佳實踐......我不確定是否有任何Apple開發者指南。我從來沒有見過他們,請選擇最適合您項目的東西。 – mattacular

+0

感謝Moshe特別編輯這個主題,也感謝所有其他人爲您的偉大答案!非常非常有幫助。看起來,Xcode在處理文件時的工作方式類似於iTunes:文件可以位於磁盤上的任何位置,但您可以按照您希望的方式在Xcode中組織它們。 – brainray

+0

此外,請儘量避免使用C#ifdef來避免重構代碼模塊或項目的誘惑。你做代碼越複雜,就越有可能有人會絆倒它,並破壞別的東西......特別是在時間壓力下有很多分心。 – 2012-07-05 13:44:19

回答

9

首先,我喜歡分類消防控制器和相關類別。但不只是在XCode中創建的組中,也是在真實文件夾中。所以,當創建一個組而不是在XCode中創建它時,首先在Finder中創建它,然後將該文件夾拖到XCode中並將其組成一個組。現在,當您在該組中添加新文件時,它們也將進入磁盤上的該文件夾。

其他一些隨機的想法:

命名:因爲你沒有命名空間,則必須使用前綴兩個或三個字母前綴的類(蘋果建議爲三個)。即使起初看起來很奇怪,也要這樣做。

資源:默認項目喜歡將xib文件從視圖控制器中分離出來。在任何尺寸的應用程序中,我都非常喜歡將視圖控制器和xib文件分組在一個位置。你甚至可以用這種方式來完成圖像,但通常只有很少的數據,只是將它們分組在一個地方。

應用程序的東西:我喜歡將列表頂部的一個應用程序組中的所有其他應用程序特定文件(應用程序委託,info.plist,pch文件,main.m等)分組,以使這些位易於使用找到。

+0

非常感謝肯德爾,非常感謝。 – brainray

+0

您提到,您首先在Finder中創建一個組,然後在Xcode中創建一個組。但是,以後最好的移動文件的方式是什麼?在Finder中做這件事會在Xcode的firebox中產生一個「resave file」問題。如果我然後重新保存到已將文件放入Finder的文件夾中,則必須覆蓋文件(因爲它已經存在)。這有效,但似乎有點不雅。有更好的方法嗎?再次感謝! – brainray

+0

我通常從XCode中刪除它(僅刪除引用),在Finder中移動文件,然後將它們拖回到XCode中。它有點快,避免了重新保存文件的問題。 –

2

當談到如何在XCode中組織項目時,我還沒有遇到任何具體的do/do操作。我可能是錯的,但我相信任何你自己創建的文件夾和佈局在編譯時都會被徹底清除。例如,如果你有一個嵌入到Resources/Images/Background/image.png中的圖像,你仍然只引用.png文件名而不是文件夾結構。

我不得不說你仍然可以組織你的項目,只要你認爲合適。借用一些來自Java的東西,然後把它放在最好的地方。

7

首先,看看默認的項目結構。雖然它不完美,但Xcode中有一些默認的「組」。將這些用作一般準則。 (正如您所提到的,羣組不是文件系統文件夾,但是當您導入資源時,系統會提示您選擇爲文件夾創建羣組。)

雖然關於文件的結構化並沒有太多正式的約定,像我一樣,你可以像組織一樣搔癢。我在我的磁盤上的項目目錄中創建了一些子文件夾。下面是其中一些:

  • 音頻:音頻文件也可能會得到他們自己的組。

  • 外部庫:如果我輸入別人的代碼,我將做一個所謂的「庫」組中,然後爲每一個分組。

  • 圖片:在那裏,你可以創建子文件夾/子組,如果你喜歡。 (一個圖標,一個用於主菜單等)

  • 管理對象:當我在我的項目中使用的核心數據,我會經常產生通過Xcode的建模工具的子類。我喜歡將它們保存在一個單獨的組和一個單獨的文件夾中。

  • 視圖控制器:根據項目的不同,我可能會對視圖控制器進行不同的分組。例如,我可能會將所有「編輯」和「觀看者」保留在不同的組中。

最終,組則是爲使您的項目管理更加容易和文件夾是使文件管理更容易。這完全取決於你如何做到這一點。正如Bill Brasky指出的那樣,在編制時,組織沒有任何真正有效的區別。(如果你想瘋了,看一下Xcode 4中的「Build Phases」屏幕。複製階段是所有相關文件的混亂。)

1

這真的是你喜歡的。組織者不反映實際的文件結構。最後,源文件只是被編譯成一個二進制文件,資源都被轉儲到應用程序包的「Resources」文件夾中。我只是擴展默認設置 - 我將資源放入資源文件夾中,根據需要分組。在遊戲中,我可能會有圖標​​,背景,精靈,音頻和其他的組。對於生產力應用程序,我可能只有紋理和圖標。外部庫和框架都進入框架組(我很少費心組織這些組件,除非像Dropbox SDK或GData這樣的庫已經進入了一個整潔的組,通常它只是一個文件)。在Sources組中,我可以按照功能視圖進行分組,例如Document Library,Editing View或Utilities(用於文檔編輯程序)或Main Menu和Gameplay。對於較小的項目,我可以按照控制器分組(根據需要分爲視圖控制器和模型控制器),模型和視圖。如果您來自Java項目,保留現有組織沒有任何問題;實際上,默認情況下,當您添加到Xcode時,它將根據磁盤上的文件夾創建新組。

無論如何,一切都會在最終捆綁包中變得平坦起來,而且您的組織對文件系統沒有影響。使用該項目所需的任何東西 - 不要使用與Tetris克隆相同的結構,因爲您需要專業醫療應用程序或其他東西。