對ios應用程式進行編碼是一項艱鉅的工作,因此,開發人員想偷工減料並找到使他們的應用程式盡快上線的方法就很有意義。
但是成功的應用程式將存在很長一段時間,這意味著需要多年的錯誤修復,功能增強以及與其他編碼人員的合作。
在本文中,我將分享三個要在ios開發期間避免的事情,這將使您的應用程式更易於構建和維護。
雖然變數似乎比常量更通用,但是當您可以使用常量代替時,預設為變數仍然不是乙個好主意。 那麼常數到底有什麼好呢? 實際上有很多東西!
關於常量的最好的事情之一就是它們的可讀性。 讓我們看乙個例子:您正在編寫乙個電子商務型別的應用程式。 您可能希望將本地銷售稅稅率提高8.75%,但其他開發人員不知道該數字意味著什麼。 讓我們看乙個例子:
一名名為steven的開發人員加入了您的團隊,他是一名忍者,但他居住在國外。 在這個國家,沒有營業稅(幸運的史蒂文)之類的東西,因此,他對此一無所知。
如果您要為銷售稅率使用變數,則他可以只用一行**來更改它,其結果可能會嚴重損害您的應用程式。 只要將關鍵字從var
更改為let
,編譯器就會告訴他該值不能更改,並且他會意識到您希望它是不變的。
let
有用的另一種方法是在**中引用乙個值。 如果要製作應用程式,則可能需要某種配色方案。 您可以使用常量來引用該特定顏色,而不必在需要的地方複製貼上顏色。
這樣,如果您要更改顏色,則只需要在乙個地方進行更改,而不必查詢每個與顏色有關的參考,而是多次更改。
建立單例時,還需要建立該類的共享例項。 通常,您可以通過在類宣告中宣告乙個static let
來做到這一點。 之後,您將命名該常量並將其分配給該類的例項,並在整個應用程式中使用它。
除此之外,如果您需要例項化乙個常規類(建立乙個例項),也許在viewcontroller.swift中,您將建立乙個常量並將其分配給所需類的例項,從而為您提供乙個引用,您可以輕鬆地利用整個檔案。 這是常量的另一種很好的用法。
如您所見,常量很大的原因很多。 它們提高了**的可讀性,對於儲存不可變值很有用,並且顯然,它們並沒有您想像的那樣無用。 通過養成盡可能使用常量的習慣來幫自己乙個忙,只有在絕對需要改變它們的值時才將它們更改為變數,這將使您成為更好的程式設計師。
可選選項是swift的一項非常強大的功能。它們只是int
和string
之類的型別,在型別宣告後帶有問號。 如果要將變數宣告為可選字串,則只需編寫:
var somevariable: string?
這告訴編譯器可能有乙個值,也可能根本沒有任何值。string?
和string
被認為是兩種不同的型別。
將可選件視為禮品盒。 正如我提到的那樣,此禮品盒可能沒有值,如果要查詢,則必須先開啟可選包裝。 有很多方法可以做到這一點:
強制展開
該操作(使用感嘆號執行)稱為bang運算子。 不要使用它! 強制展開變數從來都不是乙個好主意。 如果您嘗試解開的optional的值為nil(無),則您的應用將崩潰,誰想要呢? 無論如何,讓我們看下面的**塊:
var somevariable: string?
var somethingelse: string = "hello"
self.somethingelse = self.somevariable!
}
在此示例中,該應用程式將崩潰,因為我們從未為somevariable
定義值,somevariable
試圖將其分配給string
型別的變數。 這破壞了可選物件的全部目的,這些可選物件可幫助保護我們免受此類錯誤的影響!
讓我們看一下處理這種情況的一些正確方法。
可選裝訂
這是處理可選的最流行的方法之一。 在此方法中,您只需使用if
語句將可選值分配給常量。 如果可以開啟可選的包裝,則編譯器進入閉包,您可以使用建立的常量。 否則,您陷入else
語句中並假裝什麼也沒有發生。 讓我們看乙個例子:
var somevariable: string?
var somethingelse: string = "hello"
if let thething = somevariable else
}
使用與上次相同的示例,但是使用可選繫結,我們可以看到編譯器輸入了else語句並輸出「錯誤」,而不是崩潰。
可選鏈結
var someclass: someclass? = someclass()
var somethingelse: string?
self.somethingelse = someclass?.createstring()
}
基本上,如果someclass
為nil,則整個行將不執行,somethingelse
的值將變為nil。 如果有乙個值(如上面的示例),它將被分配給變數somethingelse
。 無論哪種情況,應用程式都不會崩潰。
零合併此方法用單行處理可選內容,但是與上述方法不同,您需要提供預設或「其他」大小寫(如果可選結果為nil)。 讓我們看乙個例子:
var somevariable: string?
var somethingelse: string = "hello"
self.somethingelse = somevariable ?? "error"
}
儘管這似乎有些神秘,但這僅表示如果左側語句具有值(換句話說,不是nil),它將被使用。 如果為nil,則將使用預設語句-在這種情況下,將使用硬編碼字串。 值得注意的是右手宣告必須為非null和非可選型別(否則,這樣做的目的將被打敗)。
另乙個常見的錯誤是無法以可持續,可維護和高效的方式來構造**。 許多人將所有**都塞進viewcontroller
類中,這會使您的**難以更改和除錯。
聽起來有些陳詞濫調,但這確實是您對應用進行程式設計的基礎。 假設您正在蓋房,夢想中的家。 這所房子高五層,因此,如果您沒有建立堅實的基礎並遵循藍圖,它可能只會倒塌。
ios應用程式的基礎是您選擇的設計模式。 讓我們看兩個最常用的模式。
model-view-controller或mvc設計模式將**的每個部分分為三部分:模型,檢視和控制器。
這樣做有很多變體,例如mvvm和mvp。 值得一讀但原理與mvc相似,因此在此不再贅述。 這些都稱為設計模式,它們使我們的**模組化。
讓我們看一下可以補充您選擇使用的應用程式模式的另一種設計模式。
單例是始終存在於記憶體中的類的單個例項。 那麼,為什麼我們要關心這個呢? 好吧,假設您正在構建乙個連線到資料庫的應用程式。 您需要放置所有資料服務連線的位置。 這將是使用單例的理想場所。 看下面的**; 它將向您展示如何構造單例:
// declaration
class dataservice
}// call-site
dataservice.shared.createuser()
如果您遵循這些簡單的提示,則您的應用程式將更易於維護,並且在發現錯誤之前,您的客戶會更容易發現它們。
在本文中,我們看到了ios應用程式開發人員犯的三個錯誤,這似乎使編碼更容易,但從長遠來看,實際上卻花費了很多任務作。
請記住,構建應用程式只是挑戰的一部分-您還需要修復錯誤,新增功能以及與其他開發人員共享**。 遵循使用常量,正確處理可選變數以及使用架構模式等最佳做法,將使您的應用程式更易於構建和維護。
翻譯自:
IOS開發人員經常使用的10個Xcode外掛程式
乙個合適的外掛程式意味著它能夠適應不同的開發環境,sublime text 和textmate就是非常好的樣例。你知道xcode也支援外掛程式嗎?假設你不知道我也不會感到吃驚,由於蘋果公司並沒有在花力氣去宣傳xcode的這個功能,並且官網上關於為xcode建立外掛程式的文件也非常少。幸運的是這並沒有...
開發人員的開發效率
影響開發效率的因素,總結有五大方面 任務不明確 流程不順暢 需求變更多 責任心不夠 能力有瓶頸。針對這些因素,分別可以從以下五個方面來優化和改進。制定清晰的規範尤其是開發規範。無規矩不成方圓。營造良好的團隊文化氛圍,人性化的管理方式。愉悅狀態下的工作效率遠遠高於抑鬱狀態下的效率。定期舉行技術分享交流...
開發人員眼中的LINQ
開發人員眼中的linq 微軟講師 張義先 在今年的三月份 微軟發布了最新一代的開發平台 visual studio 2008.在visual studio 2008 中提供了太多的新功能與新特性 這些新功能與新特性都極大地提高了開發人員的效率.提到 visual studio 2008 的新特性就不...