給新手程序員的另外八個(gè)技巧

? ? 姓名:王明騫? ? ? ? 學(xué)號(hào):16050510061

轉(zhuǎn)載自:http://mp.weixin.qq.com/s/? ? ? ? ? ? ? ? ? ? 9PsM9CNdhWwRjNaJXCXeXw 有刪改

[嵌牛導(dǎo)讀]


? ? ? ? ? 本文核心并不是程序優(yōu)化的具體技巧觅闽,而是拿到一個(gè)問(wèn)題如何思考和利用工具的通用方法摘投。比如即使我們不知道 profiler 這個(gè)東西傲宜,通過(guò)搜索"代碼 每一行 時(shí)間"也可以很快知道有這樣的工具叫做 profiler,并且學(xué)會(huì)怎么使用。即使不知道 rand 這個(gè)函數(shù)怎么加速串塑,通過(guò)搜索引擎也可以找到別人寫(xiě)好的現(xiàn)成代碼舰讹。另一方面是發(fā)現(xiàn)瓶頸之后也不要著急自己修復(fù),如果不是特別一目了然的話狸相,先看看別人是怎么做的薛匪。站在巨人的肩膀上,事半功倍脓鹃。

[嵌牛鼻子]


? ? ? ? 安裝一個(gè)調(diào)試器逸尖,編程不畏懼變化,清晰的命名瘸右,通過(guò)循環(huán)證明程序的正確性娇跟,用語(yǔ)言特性保障代碼可靠,爭(zhēng)取不寫(xiě)超過(guò)40行的程序太颤,difd回顧自己所有的修改苞俘,避免踩坑

[嵌牛提問(wèn)]


? ? 如何使新手程序員能寫(xiě)出更好的代碼,達(dá)到事半功倍的效果龄章?

[嵌牛正文]


安裝一個(gè)調(diào)試器(OllyDBG 或? ? ? ? ? ? ? ? ? ? 者 WinDBG) 并設(shè)置為實(shí)時(shí)調(diào)試器

? ? ? ? 一但有程序崩潰就攔下來(lái)吃谣,除了可以搶救一些數(shù)據(jù)以外乞封,還可以順手分析下崩潰的原因,找找代碼中的壞味道岗憋,反省下自己的代碼中哪些設(shè)計(jì)可能會(huì)導(dǎo)致同樣的問(wèn)題肃晚。

編碼不要畏懼變化 要擁抱變化

? ? ? Embace Change 常被許多新手、XPers 和極端主義者當(dāng)作老要不停改代碼(code and fix)仔戈、重構(gòu)的一個(gè)偉大借口——擁抱變化关串,其實(shí)真實(shí)原因是因?yàn)樗麄兊慕?jīng)驗(yàn)不足,分析設(shè)計(jì)能力弱监徘,預(yù)見(jiàn)晋修、預(yù)構(gòu)能力差,導(dǎo)致需求和代碼不穩(wěn)定耐量。

注釋是稍差的文檔 更好的是? ? ? ? ? ? ? ? ? ? ? ? ? ? 清晰的命名 讓代碼講自己的故事

? ? ? ? 結(jié)構(gòu)清晰飞蚓、可讀性好的代碼當(dāng)然很重要。然而對(duì)于許多復(fù)雜系統(tǒng)軟件廊蜒,常常只有代碼注釋還不夠趴拧,更好的文檔其實(shí)是可視化的程序模型,其中包括各種清晰的命名山叮。

在動(dòng)手寫(xiě)代碼前先通過(guò)循環(huán)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 不變式證明程序正確性

? ? ? ? 對(duì)待 Bug 絕不能想當(dāng)然, 實(shí)際工程中, 當(dāng)你修正 1 個(gè) Bug, 很有可能會(huì)引起另一系列 Bug 的產(chǎn)生, 類比于雪崩效應(yīng). 再優(yōu)秀的程序也會(huì)有 Bug, Bug 埋藏越久越是致命的, 這就是為什么要先證明正確性以減少潛在 Bug 的出現(xiàn)的可能, 同樣地, 在編碼-調(diào)試-編碼的過(guò)程當(dāng)中修正 Bug 很可能會(huì)導(dǎo)致新 Bug 產(chǎn)生, 致使開(kāi)發(fā)效率急劇下降. 另外性能也算是 feature. 不達(dá)標(biāo)也算是 Bug. 二八原則在性能上同樣適用, 20% 的代碼決定著程序的總體性能 (Profile 的時(shí)候要記住)著榴。

盡量利用語(yǔ)言特性來(lái)保障代碼可靠? ? ? ? ? ? ? ? 避免讓自己產(chǎn)生過(guò)大的心智負(fù)擔(dān)

? ? ? ? 例如養(yǎng)成用 const 的習(xí)慣,養(yǎng)成多下斷言的習(xí)慣屁倔。這個(gè)小 trick 可以讓很多新手程序員快速擺脫「總感覺(jué)自己寫(xiě)的東西哪兒有問(wèn)題」的感覺(jué)脑又。

? ? ? 爭(zhēng)取不寫(xiě)超過(guò) 40 行的程序 如果超過(guò) 20 行準(zhǔn)備把一些邏輯抽出來(lái)當(dāng)函數(shù)

? ? ? 為何 20 行,為了一些 quick and dirty 的修改做準(zhǔn)備锐借;這樣 quick and dirty 之后同樣问麸,避免有很多 prop 的 class;避免不了的話應(yīng)該申請(qǐng)加工資相對(duì)于 forloop钞翔,用 index 做遞歸會(huì)稍微易讀一些泛化是好的严卖,只要泛化之后你寫(xiě)的測(cè)試不超過(guò)百行即可有時(shí)候,你發(fā)現(xiàn)相對(duì)于寫(xiě)庫(kù)布轿,不如寫(xiě) boilerplate 和 snippets 方便 curry 一般只為了一件事情哮笆,就是為了調(diào)整參數(shù)次序,讓 default par 在 一些沒(méi)有 default value 的 par 前面汰扭;其他時(shí)候主要為了填一些語(yǔ)言設(shè)計(jì)不好的坑稠肘。

? ? ? ? 提交代碼之前 diff 回顧一下自己的所有修改

? ? ? 提交之前,用 diff 每一行修改都確認(rèn)清楚是為什么要這樣做萝毛,回想一下整個(gè)功能是怎么實(shí)現(xiàn)的项阴、BUG 是怎么解決的。日子久了就會(huì)感覺(jué)到自己的每次提交越來(lái)越靠譜了笆包,同時(shí)环揽,版本庫(kù)記錄里面諸如「去掉一行注釋」拷沸、「去掉一行調(diào)試代碼」等等也就不會(huì)出現(xiàn)了。

避免踩坑

1)不符合 kpi 的需求不接薯演,一個(gè)資深碼農(nóng)是? ? ? ? 懂得刷選需求的

2) 一定要搞好監(jiān)控和異常主動(dòng)發(fā)現(xiàn),監(jiān)控? ? ? ? ? 不是那種讓 sa 看看的花架子秧了,資深碼? ? ? ? ? 農(nóng)懂得如何刷選監(jiān)控中的有效信息并指? ? ? ? 導(dǎo) bug 主動(dòng)修復(fù)

3)對(duì)上下游做到代碼級(jí)別掌握跨扮,這樣在甩? ? ? ? 鍋上可以立于不敗之地,再牛逼點(diǎn)的验毡,? ? ? ? 可以做到指導(dǎo)上下游開(kāi)發(fā)的方向衡创,讓上? ? ? ? 下游來(lái)配合自己完成開(kāi)發(fā)目標(biāo)

4)搞好自動(dòng)化測(cè)試和集成測(cè)試,很多老鳥(niǎo)? ? ? ? ? 的自動(dòng)化測(cè)試寫(xiě)的非常有才晶通,場(chǎng)景覆蓋? ? ? ? ? 全璃氢,業(yè)務(wù)分析清晰,看一份牛逼的代? ? ? ? ? ? ? 碼狮辽,推薦從集成測(cè)試和自動(dòng)測(cè)試入手

圖片發(fā)自簡(jiǎn)書(shū)App

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末一也,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子喉脖,更是在濱河造成了極大的恐慌椰苟,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件树叽,死亡現(xiàn)場(chǎng)離奇詭異舆蝴,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)题诵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)洁仗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人性锭,你說(shuō)我怎么就攤上這事赠潦。” “怎么了篷店?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵祭椰,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我疲陕,道長(zhǎng)方淤,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任蹄殃,我火速辦了婚禮携茂,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘诅岩。我一直安慰自己讳苦,他們只是感情好带膜,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著鸳谜,像睡著了一般膝藕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上咐扭,一...
    開(kāi)封第一講書(shū)人閱讀 51,573評(píng)論 1 305
  • 那天芭挽,我揣著相機(jī)與錄音,去河邊找鬼蝗肪。 笑死袜爪,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的薛闪。 我是一名探鬼主播辛馆,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼豁延!你這毒婦竟也來(lái)了昙篙?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤术浪,失蹤者是張志新(化名)和其女友劉穎瓢对,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體胰苏,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡硕蛹,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了硕并。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片法焰。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖倔毙,靈堂內(nèi)的尸體忽然破棺而出埃仪,到底是詐尸還是另有隱情,我是刑警寧澤陕赃,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布卵蛉,位于F島的核電站,受9級(jí)特大地震影響么库,放射性物質(zhì)發(fā)生泄漏傻丝。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一诉儒、第九天 我趴在偏房一處隱蔽的房頂上張望葡缰。 院中可真熱鬧,春花似錦、人聲如沸泛释。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)怜校。三九已至间影,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間茄茁,已是汗流浹背宇智。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留胰丁,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓喂分,卻偏偏與公主長(zhǎng)得像锦庸,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蒲祈,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

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

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,139評(píng)論 25 707
  • ――趙營(yíng)一中觀課議課活動(dòng) 9月20日上午梆掸,趙營(yíng)一中第三周觀課議課活動(dòng)正常進(jìn)行扬卷。第一節(jié)是特崗教師劉...
    llz半夏閱讀 374評(píng)論 0 0
  • “呵護(hù)蛋寶貝”活動(dòng)有感 在前幾天我們學(xué)校舉行了一次盛大的活動(dòng)——呵護(hù)蛋寶貝,讓我感同身受酸钦。 我想:要讓雞蛋不壞怪得,...
    茜子寶貝閱讀 225評(píng)論 0 0
  • “山無(wú)棱、天地合卑硫、才敢與君絕 ”徒恋,“你是風(fēng)兒、我是沙...”多么氣壯山河的愛(ài)情欢伏,可是我的愿望很簡(jiǎn)單入挣,我所...
    帶著愛(ài)尋夢(mèng)閱讀 210評(píng)論 0 0