2016-11-25 72 views
1

在swift中,具有多個類的通用幾個函數(這些類之間的繼承不可行)的最佳實踐是什麼?在類之間使用相同函數的最佳實踐

我是新手,所以請不要屈尊。就在我幾個月前第一次開始學習時,我被告知重複代碼的可怕做法,並且當時我正在使用Ruby編寫代碼,在那裏我可以創建一個所有函數都駐留的模塊,然後將模塊包含在任何我想要使​​用這些功能的課程。只要模塊函數中的所有變量都是在代碼工作的類中聲明的。

是否有迅速類似的做法,或者我應該做別的事情喜歡做一堆的全局函數並通過實例變量那些功能呢?請儘可能具體,因爲我將按照您的建議來編寫我快速前進的所有代碼,謝謝!

回答

0

簡單回答你的問題是協議

定義協議

protocol ProtocolName { 
    /* common functions */ 
    func echoTestString() 
} 

extension ProtocolName { 
    /* default implementation */   
    func echoTestString() { 
     print("default string") 
    } 
} 

類符合協議與默認實現

class ClassName: ProtocolName { 

} 

ClassName().echoTestString() // default string 

類符合協議與被覆蓋的實施

class AnotherClass: ProtocolName { 

    func echoTestString() { 
     print("my string") 
    } 
} 

AnotherClass().echoTestString() // my string 
0

雖然意見,我認爲這是正確的路線 - 使用框架的目標。協議也起作用。但隨着一個框架,你可以:

  • 分享跨項目
  • 保留一切局部的範圍,你需要什麼,或者不
  • 是不可知在許多方面

如果你想使用「包括」雨燕動詞(以及所有與它來),你很可能需要使用框架的目標。如果你想要完全分解代碼。當你在單個項目中協議使用,不想「重複」代碼段,要知道,你永遠是局部的。

如果你想要的是(一)跨項目使用的協議,(B)包括真正獨立的代碼,(C)具有全局函數,而(d)通過實例變量...考慮一個單獨的目標。我認爲我會添加一些不會改變我的解決方案但增強了它的功能 - 功能編程意味着您可以「使用相同的功能」傳遞「一個函數作爲參數。我不認爲這就是你所說的,但它是你編碼中另一種Swifty。