高效編程秘訣(轉(zhuǎn))

習慣會影響一個人做事的方式逾礁,也會直接影響效率卵佛。我經(jīng)常在項目完成后自我總結(jié),有哪些做得好的敞斋,有哪些做得不好的截汪?然后把一些好的流程記錄下來,并且重新運用回編程中植捎。那些能夠堅持去做的流程衙解,就變成了我的編程習慣,這些良好的習慣就成就了我高效的編程效率!

一焰枢、輕文檔先行

什么叫輕文檔蚓峦?其實輕文檔指的是不需要按照標準的軟件工程知識來編寫需求分析舌剂,架構(gòu)設計,模塊設計暑椰,流程圖時序圖等文檔霍转,而是采用比較自由的方式,把你要做的事情一汽,還有做事情的步驟描述清楚的文檔避消。這樣的文檔不需要限制格式,甚至你可以手寫在自己的筆記本上面召夹,只要自己能看得懂岩喷,在開發(fā)過程中能夠隨時查閱就可以了。

為什么要寫文檔
剛開始工作的時候监憎,總是一接到任務就馬上開始寫代碼纱意,結(jié)果遇到了很多問題,例如:

①. 需求本身就存在問題鲸阔,代碼寫到一半以后才發(fā)現(xiàn)

②. 部分需求沒有表達清楚偷霉,發(fā)現(xiàn)的時候才去溝通,結(jié)果發(fā)現(xiàn)時間不夠褐筛,或者跟之前的代碼產(chǎn)生沖突

③. 代碼寫到一半時类少,發(fā)現(xiàn)自己思路不對或者不清晰了

最后很有可能導致項目延期。

如果在開發(fā)前就把需求分解好死讹,把問題溝通清楚瞒滴,把要做的點一個個列下來,就能大大地避免這些問題赞警。

文檔寫什么
①. 準備工作

在開始之前需要準備什么妓忍?例如做一個發(fā)送消息的界面,需要有以下的準備:

a. 接口協(xié)議

b. 測試環(huán)境

c. 測試賬號

準備工作提前做好愧旦,往往會加快效率世剖。為什么要把這些內(nèi)容記錄下來,是為了在開發(fā)過程中可以快速檢索笤虫。如果等到開始開發(fā)以后再去查聊天記錄旁瘫,或者是找相關人員詢問,那就慢了琼蚯。

②. 羅列需要做的小功能點

例如做一個發(fā)送消息的界面酬凳,就有很多小功能點:

a. 發(fā)送界面

b. 發(fā)送的數(shù)據(jù)接口

c. 文本字數(shù)限制

如果你仔細一想,可能還會出現(xiàn)以下問題:

a. 是否需要登錄遭庶?如果未登錄宁仔,是否要引導登錄

b. 對于發(fā)送失敗的情況,要如何處理峦睡?

c. 字數(shù)超出限制時翎苫,如何交互权埠?

d. 用戶重復發(fā)相同的文本,是否要過濾煎谍?

e. 如何處理數(shù)據(jù)接口的錯誤碼攘蔽?

當你記錄下這些小功能,并且跟產(chǎn)品經(jīng)理溝通清楚以后呐粘,你的開發(fā)周期已經(jīng)可以初步評估了满俗,并且這時候也已經(jīng)弄清楚這個需求有多少小功能,需要怎么劃分模塊事哭,怎么構(gòu)建內(nèi)部流程漫雷。

對于部分流程復雜的功能瓜富,可以畫一下流程圖輔助理解

③. 記錄這個需求的改動點

如果這是一個新需求鳍咱,并且跟以前的版本沒有任何關系,則可以忽略這部分

如果是這個需求會影響以前的代碼与柑,則需要將改動部分記錄下來谤辜,因為項目中的 bug 有很多是改出來的,列出改動點后會讓自己更清楚新功能帶來的影響价捧,減少很多低級bug

例如新增一個發(fā)送圖片的功能丑念,這個功能會影響聊天窗口的展示,會影響鍵盤结蟋,這些改動點就要記錄下來脯倚。一來可以輔助思考有沒有漏掉的小功能點,二來在自測試的時候需要覆蓋聊天窗口的展示和鍵盤的切換嵌屎。

④. 羅列自測試內(nèi)容

編碼完成以后推正,一定要進行自測試,自測試越仔細宝惰,越能提前發(fā)現(xiàn) bug 并修復植榕。如果是測試人員發(fā)現(xiàn)了 bug ,然后再提交給你尼夺,你這時候再去解決尊残,效率往往會比較低。

以發(fā)送消息為例淤堵,自測內(nèi)容也有很多:

a. 正常發(fā)送消息

b. 未登錄時點擊發(fā)送

c. 字數(shù)超出限制

d. 沒有網(wǎng)絡時點發(fā)送

e. 網(wǎng)絡很差時不斷點發(fā)送

等等…….

二寝衫、開始編碼

是重寫還是保持不變
每做一個新需求,都有可能會面臨這樣的問題:

①. 以前的模塊寫得太爛了拐邪,很想重新寫

②. 差不多的需求慰毅,以前用了這樣的方式實現(xiàn),這次想換一種方式實現(xiàn)

會考慮以上的問題庙睡,證明你是一個想要不斷進步的人事富,但是技俐,在做決定之前最好先考慮以下因素:

①. 重寫模塊,很可能牽一發(fā)而動全身统台,要想清楚改動可能帶來的影響雕擂,以及解決這些問題需要的時間

②. 使用新方案實現(xiàn)需求,新的方案是否已經(jīng)經(jīng)過仔細的驗證贱勃,如果沒有井赌,它可能會帶來新問題

其實保持不變也有一些優(yōu)勢:

①. 可以比之前做得更快,因為你熟悉了

②. 不會出現(xiàn)新問題

考慮好以后贵扰,是重寫還是保持現(xiàn)狀仇穗,基本已經(jīng)有答案了

不過保持現(xiàn)狀并不意味著是放棄追求,你可以用業(yè)余的時間來證明你的方案戚绕,當它已經(jīng)穩(wěn)定了纹坐,可行了,那你隨時都可以重寫了舞丛。

實現(xiàn)需求耘子,Demo 先行
用 Demo 來實現(xiàn)一個需求是最快的,因為它運行快球切,可以隨意修改谷誓,而且代碼量少,如果實現(xiàn)過程出現(xiàn)問題吨凑,很容易就可以定位到原因捍歪。

先建立一個 Demo,然后把需要的資源移植過來鸵钝,把功能實現(xiàn)以后糙臼,再移植到項目中,這樣可以節(jié)省不少開發(fā)時間

借助工具
①. 代碼模板(File Template)

我們創(chuàng)建一個視圖蒋伦,控制器弓摘,或者一個 Model,可能會有一些固定不變的函數(shù)痕届、屬性需要被定義或者重寫韧献,使用 Xcode 可以創(chuàng)建代碼模板,在創(chuàng)建類文件的時候一鍵生成這些代碼研叫,提高效率锤窑。

②. 代碼片段(Code Snippet)

一般可重用的代碼,我們會封裝成類或者函數(shù)嚷炉,以便其他地方使用渊啰,但有一些代碼是不適合封裝的,例如:

a. 聲明一個屬性

b. 創(chuàng)建一個線程

像這類的代碼,我會做成代碼片段绘证,然后通過 Xcode 的 Code Snippet 自動補充功能來快速完成隧膏,一個代碼片段例子:

這里寫圖片描述

只要輸入 @OperateThread 就可以直接完成創(chuàng)建一個操作隊列的代碼,大幅度減少編碼時間嚷那。

③. 自動注釋工具(VVDocumenter)

一個可以一鍵創(chuàng)建注釋模板的工具胞枕,減少寫注釋所需的時間

適當添加注釋
如果像官方的 API 那樣,所有地方都添加注釋魏宽,那工作量就太大了腐泻,需要額外的開發(fā)時間,如果只是針對一些語義不明队询、有歧義的代碼添加注釋派桩,反而會減少開發(fā)時間。

例如一個屬性:

@property (nonatomic, assign) int64_t createTime;

一看就知道是指創(chuàng)建時間蚌斩,但它到底是不是時間戳铆惑?如果是時間戳,那單位是秒還是毫秒凳寺?如果還要打印數(shù)據(jù)以后才能下結(jié)論鸭津,就太耗時間了彤侍。

加上注釋以后肠缨,它就一目了然了

/// 創(chuàng)建時間(時間戳 秒)

@property (nonatomic, assign) int64_t createTime;

三、自測

先檢查后自測
完成一個小功能以后盏阶,先檢查一下代碼晒奕,然后再開始自測,因為代碼可以告訴你很多信息:

①. 是否有低級錯誤

②. 是否有難以發(fā)現(xiàn)的漏洞

③. 流程是否存在問題

如果你編碼完成以后立即自測名斟,可能會進入被動狀態(tài):

①. 這個界面顯示不對

②. 這個數(shù)據(jù)跟預期對不上

③. 有些不該出現(xiàn)的東西出現(xiàn)了

這時候再反過來去調(diào)試代碼脑慧,一步步修改,會很慢砰盐,因為你編譯和操作都需要時間闷袒,而且有些條件不是很容易模擬,那種情況就更耗時間了

自測點要全部過一遍
可能你會覺得這很煩岩梳,很浪費程序員的時間囊骤,但自測過程發(fā)現(xiàn) bug 是最容易修復的,因為這時候代碼記憶最清晰冀值,最容易找到問題所在也物。

四、總結(jié)

先用文檔理清思路列疗,然后開始編碼滑蚯,編碼完成以后要檢查代碼并自測。這就是我的編程習慣,一直沿用至今告材。

其實知道一個技巧坤次,并不會提升效率,只有堅持使用這個技巧斥赋,并形成習慣以后浙踢,才會真正地提高效率。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末灿渴,一起剝皮案震驚了整個濱河市洛波,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌骚露,老刑警劉巖蹬挤,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異棘幸,居然都是意外死亡焰扳,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門误续,熙熙樓的掌柜王于貴愁眉苦臉地迎上來吨悍,“玉大人,你說我怎么就攤上這事蹋嵌∮希” “怎么了?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵栽烂,是天一觀的道長躏仇。 經(jīng)常有香客問我,道長腺办,這世上最難降的妖魔是什么焰手? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮怀喉,結(jié)果婚禮上书妻,老公的妹妹穿的比我還像新娘。我一直安慰自己躬拢,他們只是感情好躲履,可當我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著估灿,像睡著了一般崇呵。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上馅袁,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天域慷,我揣著相機與錄音,去河邊找鬼。 笑死犹褒,一個胖子當著我的面吹牛抵窒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播叠骑,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼李皇,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了宙枷?” 一聲冷哼從身側(cè)響起掉房,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎慰丛,沒想到半個月后卓囚,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡诅病,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年哪亿,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贤笆。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡蝇棉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出芥永,到底是詐尸還是另有隱情篡殷,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布恤左,位于F島的核電站贴唇,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏飞袋。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一链患、第九天 我趴在偏房一處隱蔽的房頂上張望巧鸭。 院中可真熱鬧,春花似錦麻捻、人聲如沸纲仍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽郑叠。三九已至,卻和暖如春明棍,著一層夾襖步出監(jiān)牢的瞬間乡革,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留沸版,地道東北人嘁傀。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像视粮,于是被迫代替她去往敵國和親细办。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 習慣會影響一個人做事的方式蕾殴,也會直接影響效率笑撞。我經(jīng)常在項目完成后自我總結(jié),有哪些做得好的钓觉,有哪些做得不好的娃殖?然后把...
    sunljz閱讀 8,031評論 29 174
  • 關于如何高效開發(fā)iOS,養(yǎng)成開發(fā)的好習慣议谷。習慣會影響一個人做事的方式炉爆,也會直接影響效率。我經(jīng)常在項目完成后自我總結(jié)...
    IT兵哥閱讀 332評論 0 0
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,749評論 25 707
  • 春天過去了這么久郁稍, 才下了第一場春雨, 在沒有四季的西雙版納胜宇, 不知這能否叫做春雨耀怜。 門口有課高大的綠寶樹, 開滿...
    大頭師太閱讀 652評論 0 0
  • 2017-9-26 姓名:李義 公司:慈溪創(chuàng)鑫車輛零部件有限公司 組別:259期利他二組 【知~學習】 背誦 六項...
    六度輪回閱讀 84評論 0 0