3

我對編程相當陌生,並希望更有效地開始編程。嘗試我可能經常發現自己偏離了MVC模式。在iOS中創建自己的自定義庫?

我想知道是否有任何提示或方法在xcode objc中編碼時保持您的代碼組織?更具體地講(我知道你們這樣的:)我想

  1. 能寫庫或含自代碼,可以把從一個項目到另一個
  2. 分享我的代碼與其他人開放從寫不遵守正確的結構亂碼採購項目
  3. 防止自己
+0

如果您不熟悉編程,您應該首先了解OOP的原則和實踐,而不是跳入深層。 –

+0

感謝您的快速響應。我已經寫了幾個應用程序。我已經閱讀了幾乎所有的蘋果文檔並觀看了WWDC視頻。我認爲我理解了基本原則,但我很難將其付諸實踐。 我想知道是否有一些最好的做法,這裏更有經驗的程序員可以傳遞給像我這樣的新手。 – retrospct

+0

你是指靜態庫嗎? –

回答

5
  • 使用高警告級別。乾淨地建立。
  • 刪除所有靜態分析儀問題。
  • 寫一些單元測試。
  • 保持公共接口小。
  • 指定您的庫的依賴項(例如最小SDK版本和相關庫)。
  • 定期編譯多個/支持的操作系統版本。
  • 學習創建和管理靜態庫目標。這就是你需要在另一個項目中支持和重用庫的全部內容(除非你將外部資源拖入圖片中,這會變得很痛苦)。
  • 沒有全局狀態(例如單例,全局變量)。
  • 準確地說明多線程環境下的支持(更常見的情況是併發應該是客戶的責任)。
  • 記錄你的公共接口(也許你的私人接口...)。
  • 定義一個精確且均勻的誤差模型。
  • 您永遠不能有足夠的錯誤檢測。
  • 設置非常高的標準 - 構建它們以便作爲參考實現重用。
  • 儘早確定庫的粒度。這些應該非常小而且集中。
  • 考慮使用C或C++實現爲您的後端/核心庫(這些東西可以被剝離)。
  • 請爲您的圖書館的objc類和類別建立並指定任何前綴。也使用好的前綴。
  • 最大限度地減少可見的依賴關係(例如,不要將可能隱藏的大量框架放在#import噸之內)。
  • 確保它編譯時客戶端不需要添加額外的#import s。
  • 不要依賴客戶把東西放在特定的地方,或者資源會有特定的名稱。
  • 對內存消耗和執行成本要保守。
  • 沒有泄漏。
  • 沒有殭屍。
  • 主線程沒有緩慢的阻塞操作。
  • 不要發佈的東西,直到它已經過良好測試,並已穩定了一段時間。錯誤會破壞客戶的代碼,那麼如果它繼續破壞他們的程序,他們不太可能重用你的程序庫。
  • 學習,使用和學習好的庫。
  • 詢問某人(理想情況下,誰比你更有經驗)來檢查你的代碼。
  • 請在項目的適當位置使用/鍛鍊圖書館。
  • 修復添加功能前的錯誤。

不要讓這嚇倒你 - 它可以很有趣,你可以在這個過程中學到很多東西。

+0

謝謝!我在筆記本上寫下了每一個點,並且詳細闡述了這些內容以幫助我記住這個令人敬畏的清單。編碼和看到一個應用程序聚集在一起非常有趣(它可能非常令人生氣)。我想退後一步,檢查自己的習慣,看看我可以改進的地方。乾杯。 – retrospct

+0

@ a4suited不用客氣。學習編寫好的庫可能需要幾年的時間,但是在許多情況下可以可靠地工作的程序是很好的 - 只需留意代碼重複,並考慮重複的代碼屬於庫庫:) – justin

4

有許多的方法可以重用代碼:

  • 將代碼存儲在通用目錄中,並將該目錄包含在項目中。很簡單,但可能有版本問題。
  • 創建一個單獨的項目,它構建一個靜態iOS庫,然後創建一個框架。設置更復雜,因爲它涉及腳本來構建框架目錄結構。但易於在其他項目中使用,並且可以處理版本控制和設備/模擬器組合庫。
  • 創建一個單獨的項目,它將構建一個靜態iOS庫,然後將其作爲子項目包含在其他項目中。避免必須構建框架,並且可以更加優化結果。

這是基本的3,當然有一些這些變化和你如何去了解它們。你決定做的很多事情都會歸結爲你將要做的事情。例如,我喜歡我自己的代碼的子項目,但對於我想爲其他人提供的代碼,我認爲框架更好。即使他們創造更多的工作。另外,我可以將它們與api文檔的docsets一起包裝起來,然後將整個作品作爲DMG上傳給github供其他人下載。

+0

謝謝!當你提出框架建議時,我相信你是對的,但這可能是我將要解決的問題。我盡我最大努力編寫乾淨的代碼,更不用說腳本化的框架。儘管如此,這絕對是我期待解決的問題。感謝您的提示。 – retrospct