成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

iOS開發(fā)人員的十大基本規(guī)則

移動(dòng)開發(fā)
這份清單純粹來自我的大腦。這是關(guān)于成為一名好的Swift開發(fā)者的感覺。我有偏見。這是我在準(zhǔn)備課程和制作應(yīng)用程序時(shí)閱讀了Swift文檔和WWDC視頻后發(fā)現(xiàn)的。

免責(zé)聲明:這份清單純粹來自我的大腦。這是關(guān)于成為一名好的Swift開發(fā)者的感覺。我有偏見。這是我在準(zhǔn)備課程和制作應(yīng)用程序時(shí)閱讀了Swift文檔和WWDC視頻后發(fā)現(xiàn)的。

1.縮進(jìn),不夠快捷。

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

  1. func neverDoThis() 
  2.   let fuglyCode = true 
  3.   if (fuglyCode == true
  4.   { 
  5.     print("This is atrocious"
  6.   } 

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

  1. // How Swift engineers would write 
  2. func swiftyWay() { 
  3.   let isLegit = true 
  4.   if isLegit { 
  5.     print("This is fine"
  6.   } 

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

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

  1. as asas
  2. try try! try? 
  3. Int IntInt

如果你不知道自己在做什么,并且使用Xcode左側(cè)的那些,你一定會(huì)看到“發(fā)現(xiàn)意外的零”消息。不要被動(dòng)。移動(dòng)你的屁股并理解他們的意思。特別是對(duì)于那些參加Udemy初級(jí)課程(包括我自己)的人,你需要弄清楚你自己的。

3.不要超過20行功能

我的朋友昨天要我回顧他的代碼。一個(gè)函數(shù)有50行。它涵蓋了整個(gè)Xcode黑屏。我就像,這個(gè)狗屎不會(huì)去任何地方。我告訴他,“我不想讀你的代碼,因?yàn)槟愕拇a很糟糕”。我告訴他把它分解成碎片并模塊化。真相傷害,但他是我的朋友,我需要真實(shí)而清楚。沒有廢話試圖取悅他。

例如,不要寫這樣的東西,盡管下面的內(nèi)容不太。。。 

把它分解成幾塊。 

4.UI主線程,網(wǎng)絡(luò)后臺(tái)線程

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

我寫了兩篇文章,為什么你需要使用UI更新的主線程和后臺(tái)線程進(jìn)行聯(lián)網(wǎng)。所以,我會(huì)跳過這一部分。

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

我第一次學(xué)習(xí)如何制作應(yīng)用程序時(shí)犯了這個(gè)錯(cuò)誤。我制作了一個(gè)包含多個(gè)UIViewController類和模型的超過800行的文件。這是我不會(huì)重復(fù)的。一旦你入侵,你永遠(yuǎn)不會(huì)回去。當(dāng)然,如果文件是JSON或基于內(nèi)容的文件,它可能包含數(shù)以千計(jì)的行。

我不會(huì)詳細(xì)解釋所有這些概念,但我會(huì)告訴你,你可以學(xué)習(xí)什么,并使你的整個(gè)應(yīng)用程序更加干凈。

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

6.永遠(yuǎn)不要輸入任何東西。

你是否意識(shí)到我們可以在Xcode中自動(dòng)完成許多屬性的原因是由于Enums?這看起來很明顯,但對(duì)初學(xué)者來說可能并非如此。

你想在編程中做的最后一件事是硬核打字,而不是挑選。例如,當(dāng)您創(chuàng)建UIAlertViewStyle時(shí),UIKit工程師創(chuàng)建, 

  1. public enum UIAlertViewStyle : Int { 
  2.  case `default
  3.  case secureTextInput 
  4.  case plainTextInput 
  5.  case loginAndPasswordInput 

你能想象打字每個(gè)案件嗎?我不能,因?yàn)槲也豢紤]它,因?yàn)檫@是必須的。不要為自己編寫硬編碼,而是為了你隊(duì)友的灰白頭發(fā)。

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

根據(jù)Swift API指南,開發(fā)人員應(yīng)該遵循一些標(biāo)準(zhǔn)。

a.公約>獨(dú)特性

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

b.表現(xiàn)力>令人印象深刻

有些帥哥喜歡把東西扭曲,讓他們感到優(yōu)越感,因?yàn)閯e人看不懂。這是廢話。沒有人應(yīng)該這樣做。這完全是關(guān)于彼此之間的有效溝通。是的,代碼是人類與計(jì)算機(jī)交流的一種方式。但是,它也在我們之間,開發(fā)者和極客之間。請(qǐng)不要成為那個(gè)試圖用莎士比亞的話來留下印象的傲慢家伙。沒必要。

c.清晰度>簡潔

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

“簡潔本身不是一個(gè)有價(jià)值的目標(biāo)。簡潔的代碼是使用上下文線索的結(jié)果“ -——Doug Gregor,Swift Engineer 

  1. // Too brief & Lack of context 
  2. let a = "A" 
  3. let b = "B" 

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

  1. // How I would do it 
  2. let capLetterA = "A" 
  3. let capLetterB = "B" 

8.使用Guard

Guard語句不僅可用于展開optioanls,還可用于替換if-else語句,并使用break或using return提前退出函數(shù)。它允許任何人識(shí)別如果在沒有滾動(dòng)查找其他塊的情況下沒有滿足條件會(huì)發(fā)生什么。我們來看一個(gè)真實(shí)世界的例子。 

  1. let name = "Bobby" 
  2. func checkName() { 
  3.   // Early Check 
  4.   guard name == "Bob" else { 
  5.   print("You ain't Bob"
  6.   return 
  7.  } 
  8.   
  9.  // I can do anything I want without seeing the else block. 
  10.  // So much freedom 
  11.  // You don't even need to read this 
  12.  // Why are you even reading this 
  13.  // Now, you may leave. I'm not going to say anything important 
  14.  // In this block of code 
  15.   
  16.  // Lol... you still here? 
  17.  print("You Good, bro"

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

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

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

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

“歷史筆記:如果你想知道為什么你遇到的很多類都有NS前綴,那是因?yàn)榭煽珊虲ocoa Touch的歷史。可可開始使用收集的框架來構(gòu)建NeXTStep操作系統(tǒng)的應(yīng)用程序。當(dāng)蘋果在1996年購買NeXT時(shí),大部分NeXTStep都被納入到OS X中,包括現(xiàn)有的類名稱。 Cocoa Touch作為Cocoa的iOS平臺(tái)引入; Cocoa和Cocoa Touch都提供了一些類,盡管每個(gè)平臺(tái)都有很多獨(dú)特的類。像NS和UI這樣的雙字母前綴(用于iOS上的用戶界面元素)保留給Apple使用“。 ——Apple

10.不要依賴分段

當(dāng)故事板看起來像蜘蛛網(wǎng)時(shí),初學(xué)者往往會(huì)制造太多的Segues。一旦超出了某個(gè)閾值,它就變得難以管理,很難跟蹤每個(gè)視圖控制器。因此,使用Delegate / NSNotification發(fā)送數(shù)據(jù)。使用多個(gè)故事板而不是一個(gè)。如果您對(duì)Delegate感到滿意,則可以開始使用RxSwift或ReactiveCocoa傳遞數(shù)據(jù)或僅通過幾行代碼發(fā)送通知。

責(zé)任編輯:未麗燕 來源: 簡書
相關(guān)推薦

2011-03-31 10:22:41

Java開發(fā)

2020-06-28 09:56:48

.NET開發(fā)工具

2009-04-03 14:36:05

Java問卷調(diào)查開源

2016-10-18 10:45:00

開發(fā)開源

2016-11-09 13:46:00

云數(shù)據(jù)庫

2021-11-21 22:43:10

Java開發(fā)框架

2020-06-05 14:38:25

開發(fā)人員職位開發(fā)

2016-10-14 19:30:21

云計(jì)算云數(shù)據(jù)庫數(shù)據(jù)庫

2019-07-02 14:27:31

編程語言開發(fā)

2024-08-12 08:00:00

人工智能開發(fā)AI編程助理

2012-07-13 09:18:29

2022-01-21 10:18:53

VSCode擴(kuò)展插件

2012-10-11 09:12:02

2020-07-01 07:42:11

JavaScript開發(fā)技術(shù)

2015-07-09 10:18:36

Android開發(fā)工具

2023-02-26 01:47:13

2010-02-24 13:45:40

Python開發(fā)人員

2015-06-04 14:41:37

WebPython框架

2023-02-26 18:43:05

SQL工具數(shù)據(jù)庫

2021-08-07 15:38:07

開發(fā)Java工具
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 爽爽免费视频 | 超碰8| 亚洲精品三级 | 99在线国产| 成人国产精品视频 | 国产精品日韩欧美一区二区 | 成人av免费| 成人精品网 | 国产精品久久久亚洲 | 少妇黄色 | 国产视频1区 | 国产欧美一区二区三区国产幕精品 | 羞羞网站在线免费观看 | 亚洲97 | 欧美一级大黄 | 国产精品免费一区二区 | 狠狠干狠狠操 | 亚洲精品乱码久久久久久久久久 | 99精品视频在线 | 国产精品免费在线 | 国产精品特级毛片一区二区三区 | jlzzjlzz国产精品久久 | 亚洲精品久久久久久久不卡四虎 | 91五月婷蜜桃综合 | av中文字幕网 | 欧美日韩国产在线观看 | 日韩一区二区三区视频在线观看 | 国产免费一区二区三区 | 澳门永久av免费网站 | 亚洲一区二区三区免费观看 | av网站免费观看 | 日韩精品一区二区三区四区 | 日本五月婷婷 | 国产精品久久久久不卡 | 91久操网 | 日本精品视频 | 久久这里只有精品首页 | 手机看黄av免费网址 | 久草视频在线播放 | 日韩久久久久 | 99久久99|