高級程式設計師建議:iOS開發人員的十大基本規則

免責聲明:這份清單純粹來自我的大腦。這是關於成為一名好的Swift開發者的感覺。我有偏見。這是我在準備課程和製作應用程序時閱讀了Swift文檔和WWDC視頻後發現的。

1.縮進,不夠快捷

我看到過很多開發人員編寫如下代碼,

func neverDoThis()

{

let fuglyCode = true

if (fuglyCode == true)

{

print("This is atrocious")

}

}

如果我看到上面的代碼類型,我真的很難判斷。我以為他/她從來沒有閱讀過API指南/文檔或任何人的Swift代碼。我們來看看WWDC的蘋果工程師如何撰寫。

// How Swift engineers would write

func swiftyWay() {

let isLegit = true

if isLegit {

print("This is fine")

}

}

2.永不使用Try !, as !, String!除非%100確定

如果你一直在附近,確保你瞭解它們之間的差異,

as as! as?

try try! try?

Int Int! Int?

如果你不知道自己在做什麼,並且使用Xcode左側的那些,你一定會看到"發現意外的零"消息。不要被動。移動你的屁股並理解他們的意思。特別是對於那些參加Udemy初級課程(包括我自己)的人,你需要弄清楚你自己的。

3.不要超過20行功能

我的朋友昨天要我回顧他的代碼。一個函數有50行。它涵蓋了整個Xcode黑屏。我就像,這個狗屎不會去任何地方。我告訴他,"我不想讀你的代碼,因為你的代碼很糟糕"。我告訴他把它分解成碎片並模塊化。真相傷害,但他是我的朋友,我需要真實而清楚。沒有廢話試圖取悅他。

例如,不要寫這樣的東西,儘管下面的內容不太。。。

高級程序員建議:iOS開發人員的十大基本規則

把它分解成幾塊。

高級程序員建議:iOS開發人員的十大基本規則

4. UI主線程,網絡後臺線程

多重威脅(由CPU完成的一組任務)的概念令人望而生畏。我不怪你。我沒有計算機工程背景,但我仍然不太瞭解。

我寫了兩篇文章,為什麼你需要使用UI更新的主線程和後臺線程進行聯網。所以,我會跳過這一部分。

5.不要使Swift文件超過200行

我第一次學習如何製作應用程序時犯了這個錯誤。我製作了一個包含多個UIViewController類和模型的超過800行的文件。這是我不會重複的。一旦你入侵,你永遠不會回去。當然,如果文件是JSON或基於內容的文件,它可能包含數以千計的行。

我不會詳細解釋所有這些概念,但我會告訴你,你可以學習什麼,並使你的整個應用程序更加乾淨。

有幾個方法可以從根本上減少行數並仍然可讀。您可以使用UITableVIew和UICollectionView使用面向協議的編程來製作可重用的代碼。如果您使用的是代表Massive View Controller的MVC,則可能需要了解MVVM的工作原理。

6.永遠不要輸入任何東西。

你是否意識到我們可以在Xcode中自動完成許多屬性的原因是由於?這看起來很明顯,但對初學者來說可能並非如此。

你想在編程中做的最後一件事是硬核打字,而不是挑選。例如,當您創建UIAlertViewStyle時,UIKit工程師創建,

public enum UIAlertViewStyle : Int {

case `default`

case secureTextInput

case plainTextInput

case loginAndPasswordInput

}

你能想象打字每個案件嗎?我不能,因為我不考慮它,因為這是必須的。不要為自己編寫硬編碼,而是為了你隊友的灰白頭髮。

7.姓名。具有描述性。造型指南

根據Swift API指南,開發人員應該遵循一些標準。

公約>獨特性

每種編程語言都有自己的特點和風格。雖然是主觀的,但是可以通過閱讀在開源項目中編寫的Swift文檔和Swift文件來找到約定。同樣,我強烈建議你看看用Swifty的方式寫什麼感覺。相反給你舉例,我會在下面給你提供資源。

表現力>令人印象深刻

有些帥哥喜歡把東西扭曲,讓他們感到優越感,因為別人看不懂。這是廢話。沒有人應該這樣做。這完全是關於彼此之間的有效溝通。是的,代碼是人類與計算機交流的一種方式。但是,它也在我們之間,開發者和極客之間。請不要成為那個試圖用莎士比亞的話來留下印象的傲慢傢伙。沒必要。

清晰度>簡潔

Swift的開發者要求我們清楚地說出名字,以便在三週後回來時,我們很好。但是,沒有黑色和白色。這是使用描述性名稱和減少總體行數的平衡。

"簡潔本身不是一個有價值的目標。簡潔的代碼是使用上下文線索的結果" —Doug Gregor, Swift Engineer

// Too brief & Lack of context

let a = "A"

let b = "B"

如果我要閱讀上面的代碼,我會困惑到底是什麼a和b始終。所以,我必須一直找到它們。為什麼我們不能通過寫作來更具描述性,

// How I would do it

let capLetterA = "A"

let capLetterB = "B"

8.使用Guard Guard語句不僅可用於展開optioanls,還可用於替換if-else語句,並使用break或using return提前退出函數。它允許任何人識別如果在沒有滾動查找其他塊的情況下沒有滿足條件會發生什麼。我們來看一個真實世界的例子。

let name = "Bobby"

func checkName() {

// Early Check

guard name == "Bob" else {

print("You ain't Bob")

return

}

// I can do anything I want without seeing the else block.

// So much freedom

// You don't even need to read this

// Why are you even reading this

// Now, you may leave. I'm not going to say anything important

// In this block of code

// Lol... you still here?

print("You Good, bro")

}

如果您不明白打開option和提前退出意味著什麼,請檢查下面的資源。

9.如果可以的話,不要使用NS

我沒有在Objective C中編寫代碼,所以我儘量避免它在精神上和身體上都能達到。除非你正在與Objective-C API交互,否則即使Swift自動將一些Objective-C類型轉換為Swift類型,並將一些Swift類型轉換為Objective-C類型,也遠離使用NS。

Swift的確受到Objective-C和其他許多語言的啟發,但它是一門獨立的語言。我不確定轉換速度有多慢,但建議Swift開發人員儘可能避免。由於Swift提供了自己的本地庫和API,因此您可以查看替代方案。

高級程序員建議:iOS開發人員的十大基本規則

"歷史筆記:如果你想知道為什麼你遇到的很多類都有NS前綴,那是因為可可和Cocoa Touch的歷史。可可開始使用收集的框架來構建NeXTStep操作系統的應用程序。當蘋果在1996年購買NeXT時,大部分NeXTStep都被納入到OS X中,包括現有的類名稱。 Cocoa Touch作為Cocoa的iOS平臺引入; Cocoa和Cocoa Touch都提供了一些類,儘管每個平臺都有很多獨特的類。像NS和UI這樣的雙字母前綴(用於iOS上的用戶界面元素)保留給Apple使用"。 —Apple

10.不要依賴分段 當故事板看起來像蜘蛛網時,初學者往往會製造太多的Segues。一旦超出了某個閾值,它就變得難以管理,很難跟蹤每個視圖控制器。因此,使用Delegate / NSNotification發送數據。使用多個故事板而不是一個。如果您對Delegate感到滿意,則可以開始使用RxSwift或ReactiveCocoa傳遞數據或僅通過幾行代碼發送通知。


分享到:


相關文章: