自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

現(xiàn)代Objective-C七宗罪

移動(dòng)開發(fā) iOS
拜移動(dòng)大潮所賜,這兩年Objective-C可謂是風(fēng)頭正茂,連續(xù)兩年獲得年度編程寶座,然而任何一門編程語(yǔ)言也不是十全十美的,如果你正在編寫Objective-C代碼,那么這篇文章可能會(huì)得罪你;倘若還沒(méi),那么你無(wú)需擔(dān)心,本文我們一起來(lái)細(xì)數(shù)下Objective-C的七宗罪。

拜移動(dòng)大潮所賜,這兩年Objective-C可謂是風(fēng)頭正茂,連續(xù)兩年獲得年度編程寶座,然而任何一門編程語(yǔ)言也不是十全十美的,這不,這個(gè)備受蘋果公司關(guān)注的Objective-C也不招人待見(jiàn),原文作者Ash發(fā)表一篇博客例舉了Objective-C七宗罪。

 

[[61368]]

以下是譯文:

如果你正在編寫Objective-C代碼,那么這篇文章可能會(huì)得罪你;倘若還沒(méi),那么你無(wú)需擔(dān)心,本文我們一起來(lái)細(xì)數(shù)下Objective-C的七宗罪。

一宗罪:.xib文件太大

我之所以說(shuō)Objective-C不好,有幾個(gè)原因,***的問(wèn)題是當(dāng)系統(tǒng)加載系統(tǒng).xib時(shí),需要加載整個(gè).xib;并且在啟動(dòng)應(yīng)用程序或者用戶交互響應(yīng)環(huán)節(jié)時(shí)占據(jù)大量時(shí)間,這一點(diǎn)很讓人頭疼。

第二個(gè)問(wèn)題是,無(wú)法重復(fù)使用視圖(或者與它相關(guān)聯(lián)的代碼),你總不會(huì)希望一直重復(fù)粘貼與復(fù)制吧。

二宗罪:無(wú)法使點(diǎn)語(yǔ)法保持一致

談及Objective-C的語(yǔ)法,很多開發(fā)者***感覺(jué)就變成望而卻步了。

許多開發(fā)者總認(rèn)為使用點(diǎn)語(yǔ)法編寫是主觀現(xiàn)象,也許他們的想法是正確的。但是我個(gè)人認(rèn)為點(diǎn)語(yǔ)法是一個(gè)較為現(xiàn)代化的方式來(lái)訪問(wèn)屬性,這不屬于客觀現(xiàn)象。相反,如果你選擇使用點(diǎn)語(yǔ)法,并且一直堅(jiān)持這么做。那么,建議你要么全部使用,要么干脆不要,記住,千萬(wàn)不要混合及匹配使用 。

三宗罪:.m Files中的類繁多

在一個(gè)相同的文件里會(huì)出現(xiàn)很多類,這是一個(gè)很主觀的現(xiàn)象,因?yàn)檫@往往會(huì)利用一個(gè)有用的方式來(lái)定義,就如同小包裝模型類或者值轉(zhuǎn)換。

如果外部文件需要使用你的新類,把它放在自己的文件夾中即可。如果你#import一個(gè)視圖控制器僅僅是為了在.m file里面得到一個(gè)輔助類,那么要把重構(gòu)擺在首位。

四宗罪:無(wú)法進(jìn)行編譯器優(yōu)化測(cè)試

當(dāng)你開發(fā)時(shí)通常會(huì)使用Xcode默認(rèn)選項(xiàng)——關(guān)閉優(yōu)化,但最終發(fā)布前肯定還是會(huì)開啟它的,這時(shí)經(jīng)常會(huì)出嚴(yán)重的問(wèn)題。

你無(wú)需調(diào)優(yōu)編譯器來(lái)做完整的回歸測(cè)試,只需一個(gè)簡(jiǎn)單的smoke測(cè)試就足夠了。如果你有beta測(cè)試人員,那么可以進(jìn)行設(shè)置,重要的是某人在測(cè)試之外能夠生成二進(jìn)制文件以確保用戶能夠被控制。

五宗罪:體系結(jié)構(gòu)的基本類型

Objective-C這門語(yǔ)言以及其運(yùn)行時(shí)既是為iOS,也是為OS X而開發(fā)的。但iOS 32位而OS X是64位的。當(dāng)你使用Objective-C定義原始值的時(shí),使用int將會(huì)出現(xiàn)丟失;如同為OS X編譯時(shí)出現(xiàn)的那些半位,使用long int又顯得太蠢了。

六宗罪:不必要的-C APIs

什么是Keychain API?新的OS X APIs需要使用Sandboxing,但需要使用C嗎?這里我討論的不是核心基礎(chǔ)類,而是一些嚴(yán)重混亂的C。

C語(yǔ)言比Objective-C快不了多少。如果你想做任何實(shí)時(shí)系統(tǒng)方面或者處理音頻或視頻,可選擇使用C。在大多數(shù)情況下Objective-C是不錯(cuò)的選擇。

七宗罪:無(wú)法使用自動(dòng)化測(cè)試

你是否使用Objective-C進(jìn)行單元測(cè)試?也許你不曾使用過(guò)。那么你曾給UI進(jìn)行自動(dòng)化驗(yàn)證測(cè)試嗎?答案也是NO。那你曾設(shè)置過(guò)任何持續(xù)集成嗎?

我不理解Objective-C社區(qū)為什么要回避這個(gè)問(wèn)題?要知道這是一個(gè)嚴(yán)重的、 系統(tǒng)性的問(wèn)題。最近我才開始單元測(cè)試,我和我的同事在探索UI自動(dòng)化驗(yàn)收測(cè)試。沒(méi)人知道它是這么的難,也許是因?yàn)闆](méi)人做過(guò),以致沒(méi)有這方面的資源。因此,我們必須靠自己。文檔是編寫代碼的重要組成部分,我花了整整一天的時(shí)間才弄清楚模擬對(duì)象是什么,更遑論如何使用它們。

這對(duì)于Objective-C社區(qū)來(lái)說(shuō)是個(gè)嚴(yán)重的問(wèn)題。此外,單元測(cè)試也值得重視且應(yīng)該將其做好。

英文出自:Ashfurrow

【編輯推薦】

  1. 回顧:Objective-C風(fēng)暴來(lái)襲,精彩不容錯(cuò)過(guò)
  2. 2012年12月編程語(yǔ)言排行榜:Objective-C風(fēng)暴來(lái)襲
  3. Objective-C Category初體驗(yàn)
責(zé)任編輯:張浩 來(lái)源: 紅黑魂
相關(guān)推薦

2023-05-08 10:54:39

IT管理CIO

2024-06-19 19:28:51

2011-02-21 09:04:25

2018-02-05 23:14:35

光纖網(wǎng)絡(luò)光纖施工

2021-03-01 18:48:21

Go管理工具

2013-05-10 10:49:53

2014-01-13 09:35:13

創(chuàng)業(yè)企業(yè)

2015-09-15 13:22:08

數(shù)據(jù)分析七宗罪

2010-08-18 10:05:27

IE7IE6

2017-01-09 15:25:49

物聯(lián)網(wǎng)策略設(shè)計(jì)

2017-08-02 16:24:04

2011-02-23 10:51:36

Chrome

2015-09-06 11:25:57

七宗罪失敗案例

2021-03-03 14:08:48

自動(dòng)化高管IT投資

2019-04-15 09:00:00

SQLOracle數(shù)據(jù)庫(kù)

2012-04-04 22:15:19

移動(dòng)游戲

2012-09-07 14:41:26

2014-07-14 17:29:06

運(yùn)營(yíng)商定制手機(jī)

2015-07-16 09:14:50

數(shù)據(jù)中心數(shù)據(jù)中心效率

2023-10-17 20:28:13

軟件開發(fā)代碼
點(diǎn)贊
收藏

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