如何優(yōu)秀地寫代碼(一)

寫代碼也有一些年數(shù)了。雖然寫來寫去也都不是什么高大上的代碼袱耽,像支付寶這種日流量上億數(shù)據(jù)的處理從來沒有碰到過,不過想自己整理一下自己的心得干发,或者說朱巨,總結(jié)一下自己的得失,分享的同時枉长,也是提醒自己冀续。

?我不是一個偉大的程序員。

?但我是一個思路清晰的程序員必峰。

?我也是一個不偷懶的程序員洪唐。

?我要努力做一個優(yōu)雅的程序員。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

?我不是一個偉大的程序員吼蚁。

可能是我知乎之類的逛的多了凭需,感覺現(xiàn)在很多程序員有一種心理膨脹的感覺,尤其是體現(xiàn)在年輕程序員肝匆。

膨脹的心態(tài)有各種各樣粒蜈。比如,我現(xiàn)在用的是最牛的語言旗国。又比如枯怖,我寫了一個很牛的程序。

從一個只會寫hello world的菜鳥粗仓,升級到一個寫個程序能輕易處理千萬級數(shù)據(jù)的高級程序員嫁怀,確實(shí)是很了不起的事情。只不過借浊,回頭看看自己寫過的代碼塘淑,8成的代碼,可以總結(jié)成兩種蚂斤。一種是模仿他人的現(xiàn)有解決方案寫出的代碼存捺,一種是重復(fù)自己過去寫過的代碼。其實(shí)仔細(xì)想想曙蒸,一個程序員會碰到哪幾種問題捌治?比如以后臺開發(fā)為例,批量數(shù)據(jù)整理纽窟,數(shù)據(jù)庫及文件操作肖油,多線程管理,定時批處理等等幾大類臂港。大部分的需求森枪,已經(jīng)有了很完善的解決方案视搏。人與人的區(qū)別在于,誰掌握或者精通了更好的县袱,更通用的解決方案而已浑娜。畢竟,大家用的式散,都是同樣的基本類庫筋遭,類似于搭積木,好的程序員暴拄,知道如何更加合理的去搭積木漓滔。但是,我們很少在創(chuàng)造代碼揍移,我們是根據(jù)需求在實(shí)現(xiàn)次和,他人的夢想而已。

程序員那伐,大部分是一個工匠踏施。

?但我是一個思路清晰的程序員。

猶如上文所說罕邀,程序員畅形,是一個工匠。但是工匠也有高低之分诉探。為什么同樣的需求日熬,同樣的實(shí)現(xiàn)思路,結(jié)果上效率和強(qiáng)壯度差了幾個維度肾胯?很多時候竖席,不是程序員笨,而是程序員的思路不清楚敬肚。

很多程序員寫了很多年了毕荐,寫東西從來不思考,只是為了寫而寫艳馒,為了滿足需求而寫憎亚,內(nèi)部邏輯一塌糊涂。當(dāng)然弄慰,結(jié)果論來說第美,只要出來結(jié)果正確,代碼再爛不是問題陆爽,尤其是對于一個上線的項(xiàng)目什往,只要不出問題,只要效率沒有低到一定程度慌闭,運(yùn)營上不會沒事去做修改别威。但是第献,這樣真的好嗎?對于二期兔港,三期或者說新進(jìn)來的程序員,看到如此思路混亂仔拟,邏輯不清晰的代碼衫樊,只能強(qiáng)忍著惡心去改,甚至利花,為了維持原來代碼的風(fēng)格科侈,越寫越爛。

寫代碼如何表現(xiàn)出思路清晰炒事?

首先臀栈,IO法。I就是input挠乳,O就是output权薯。我們先理清楚進(jìn)來的數(shù)據(jù)是什么,最終出來的東西是什么睡扬。這個很重要盟蚣。這個不搞清楚,很容易在寫代碼的時候卖怜,邏輯發(fā)生繞路或者多余的現(xiàn)象屎开。如果能掐頭抓尾,至少在寫的時候马靠,不容易迷失方向奄抽。

其次,Step法甩鳄〕讯龋看到很多程序員寫東西喜歡一口氣吃出一個大胖子。比如說娩贷,大概思考一下第晰,就直接從頭寫到尾。寫的中間彬祖,不會去調(diào)試自己寫的代碼茁瘦,不會去反思自己寫好的代碼,是不是有冗余的現(xiàn)象储笑。什么是Step法甜熔?先根據(jù)需求,整理出大概整個邏輯是幾個步驟突倍,然后做一個提綱性質(zhì)的東西腔稀,比如說可以寫個大的注釋盆昙。類似于,

用戶登錄焊虏。

1淡喜,提交數(shù)據(jù)的基本確認(rèn)。

2诵闭,數(shù)據(jù)的合理性和存在性等確認(rèn)炼团。

3,取得結(jié)果的整理疏尿。

4瘟芝,結(jié)果的返回和程序的終止。

以上我也就是隨手寫的褥琐,基本來說代碼里面這四句注釋先寫好锌俱,然后一步步去實(shí)現(xiàn)。實(shí)現(xiàn)的過程中敌呈,每做完一個階段贸宏,不要急著進(jìn)入到下一個階段,而是簡單調(diào)試寫完的代碼驱富,回頭看看有沒有什么問題锚赤,尤其是多個步驟實(shí)現(xiàn)了之后,思考一下各個處理有沒有實(shí)現(xiàn)方式不統(tǒng)一或者重復(fù)邏輯的褐鸥,先維護(hù)好寫好的代碼线脚,再進(jìn)行下一步。其實(shí)叫榕,不只是寫代碼浑侥,比如我現(xiàn)在寫這個文章的時候,我也在不停地回頭看我寫完的部分晰绎,思考有沒有問題或者偏離主題內(nèi)容的東西寓落。

?我也是一個不偷懶的程序員。

不管再優(yōu)秀的程序員荞下,都會有偷懶的毛病伶选。比如說,當(dāng)測試的時候出現(xiàn)個小問題尖昏,比如數(shù)據(jù)更新的次數(shù)比預(yù)期多了一次仰税,但是結(jié)果是正確的,就不會去細(xì)究問題抽诉。又或者陨簇,提交代碼,發(fā)現(xiàn)有個注釋沒有寫好或者根本就沒寫迹淌,覺得沒有問題河绽,然后就直接提交了己单。說起來都是小問題,甚至不是問題耙饰,但是往往在最后上線運(yùn)營或者已經(jīng)運(yùn)營一定時間之后纹笼,在這個地方出問題了。對于任何細(xì)節(jié)苟跪,不能放松允乐。該寫的注釋,不能漏削咆,不能隨意。數(shù)據(jù)驗(yàn)證的時候蠢笋,一定要全部結(jié)果都驗(yàn)證拨齐,而不是主干數(shù)據(jù)驗(yàn)證。

比如昨寞,正好上個月我就碰到這個問題瞻惋。因?yàn)榉?wù)器變更的關(guān)系,有一套程序要重新寫援岩。其中有一個邏輯歼狼,是對一個業(yè)務(wù)數(shù)據(jù)表做更新。原來代碼對這個表更新的時候享怀,更新日期并沒有做修改羽峰,只是修改了更新次數(shù)。很多時候添瓷,我們會覺得梅屉,原來寫代碼的時候疏忽了,這次重寫就把這個問題修改了鳞贷。但我并沒有這么做坯汤,而是把這個問題提交給了原程序員,確認(rèn)一下為什么這么寫的原因搀愧。得到的回答就是惰聂,這個表實(shí)際的業(yè)務(wù)數(shù)據(jù)沒有做任何修改,只是做導(dǎo)出的處理咱筛,同時把標(biāo)識符更新成導(dǎo)出完畢的處理搓幌。而別的系統(tǒng)根據(jù)更新日期來判斷有沒有業(yè)務(wù)數(shù)據(jù)變更的場合做相應(yīng)處理,所以特例只對表的更新次數(shù)做處理眷蚓。一個簡單的確認(rèn)鼻种,避免了一個大錯誤。

為什么我要專門提出這么一點(diǎn)沙热?因?yàn)槲以谶@個上面跌倒的次數(shù)叉钥,太多了罢缸。

?我要努力做一個優(yōu)雅的程序員。

寫程序很多時候是一個機(jī)械的事情投队。很多時候枫疆,我們程序員就好像流水線上的工作,高強(qiáng)度機(jī)械式地不停重復(fù)著同樣的事情敷鸦,同時面對客戶不停更改的需求和運(yùn)營上千奇百怪的疑難雜癥息楔,很容易陷入一個暴躁的狀態(tài)。粗話扒披,臟話值依,暴脾氣,什么都出來了碟案,甚至有很多程序員愿险,以爆粗為榮。

這樣并不好价说。寫代碼是一個很細(xì)心的活辆亏,必須要保持一個心平氣和的情緒,才能犯比較少的錯鳖目,或者更高效的去完成任何任務(wù)扮叨。而且,絕大部分领迈,我們是以一個團(tuán)隊(duì)的形式在進(jìn)行一項(xiàng)工程的開發(fā)彻磁。如果整個團(tuán)隊(duì)充滿著戾氣和暴躁,那很多事情地協(xié)調(diào)狸捅,根本無法進(jìn)行下去兵迅,每個成員的積極性,也會極大程度的被打擊薪贫。

其實(shí)不止程序員恍箭,任何工作,在做事前瞧省,首先要先會做人扯夭。比如寫這個文章的時候,天津權(quán)健的某張姓年輕球員因?yàn)樽眈{進(jìn)了派出所鞍匾。很多人都覺得他很好交洗,是中國男足的希望。但是我從來不這么看橡淑,從天津和上港兩場比賽可以看出构拳,是一個脾氣暴躁,素質(zhì)很差的球員。一個不知道潔身自好的人置森,很容易因?yàn)樽约旱难孕信e止斗埂,影響到自己的工作。

培養(yǎng)一點(diǎn)小愛好凫海,斯文地做事和交際呛凶,是一個優(yōu)雅的程序員必備的素質(zhì)。


待續(xù)行贪。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末漾稀,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子建瘫,更是在濱河造成了極大的恐慌崭捍,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件啰脚,死亡現(xiàn)場離奇詭異缕贡,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)拣播,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來收擦,“玉大人贮配,你說我怎么就攤上這事∪福” “怎么了泪勒?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長宴猾。 經(jīng)常有香客問我圆存,道長,這世上最難降的妖魔是什么仇哆? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任沦辙,我火速辦了婚禮,結(jié)果婚禮上讹剔,老公的妹妹穿的比我還像新娘油讯。我一直安慰自己,他們只是感情好延欠,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布陌兑。 她就那樣靜靜地躺著,像睡著了一般由捎。 火紅的嫁衣襯著肌膚如雪兔综。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天,我揣著相機(jī)與錄音软驰,去河邊找鬼涧窒。 笑死,一個胖子當(dāng)著我的面吹牛碌宴,可吹牛的內(nèi)容都是我干的杀狡。 我是一名探鬼主播,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼贰镣,長吁一口氣:“原來是場噩夢啊……” “哼呜象!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起碑隆,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤恭陡,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后上煤,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體休玩,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年劫狠,在試婚紗的時候發(fā)現(xiàn)自己被綠了拴疤。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡独泞,死狀恐怖呐矾,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情懦砂,我是刑警寧澤蜒犯,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站荞膘,受9級特大地震影響罚随,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜羽资,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一淘菩、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧屠升,春花似錦瞄勾、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至微服,卻和暖如春趾疚,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工糙麦, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留辛孵,地道東北人。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓赡磅,卻偏偏與公主長得像魄缚,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子焚廊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評論 2 355

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