Swift 編程規(guī)范原則

1.類和結(jié)構(gòu)體的選擇

在你的代碼中,你可以使用類和結(jié)構(gòu)體來定義你的自定義數(shù)據(jù)類型。

然而,結(jié)構(gòu)體實例總是通過值傳遞,類實例總是通過引用傳遞。這意味兩者適用不同的任務(wù)。當你在考慮一個工程項目的數(shù)據(jù)結(jié)構(gòu)和功能的時候,你需要決定每個數(shù)據(jù)結(jié)構(gòu)是定義成類還是結(jié)構(gòu)體。

按照通用的準則,當符合一條或多條以下條件時,請考慮構(gòu)建結(jié)構(gòu)體:
  • 該數(shù)據(jù)結(jié)構(gòu)的主要目的是用來封裝少量相關(guān)簡單數(shù)據(jù)值。
  • 有理由預(yù)計該數(shù)據(jù)結(jié)構(gòu)的實例在被賦值或傳遞時,封裝的數(shù)據(jù)將會被拷貝而不是被引用。
  • 該數(shù)據(jù)結(jié)構(gòu)中儲存的值類型屬性,也應(yīng)該被拷貝,而不是被引用。
  • 該數(shù)據(jù)結(jié)構(gòu)不需要去繼承另一個既有類型的屬性或者行為。
舉例來說,以下情境中適合使用結(jié)構(gòu)體:
  • 幾何形狀的大小,封裝一個width屬性和height屬性,兩者均為Double類型。
  • 一定范圍內(nèi)的路徑,封裝一個start屬性和length屬性,兩者均為Int類型。
  • 三維坐標系內(nèi)一點,封裝x,y和z屬性,三者均為Double類型。
在所有其它案例中,定義一個類,生成一個它的實例,并通過引用來管理和傳遞。實際中,這意味著絕大部分的自定義數(shù)據(jù)構(gòu)造都應(yīng)該是類,而非結(jié)構(gòu)體
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容