初級(jí)程序員經(jīng)常犯的10種錯(cuò)誤,網(wǎng)友:工作幾年了都還在犯
小編在網(wǎng)上經(jīng)常容易看見(jiàn)#程序員如何升職#、#程序員的進(jìn)階之路#這樣的話(huà)題,于是我整理了一些網(wǎng)上的資料并結(jié)合自己的經(jīng)驗(yàn),梳理出了10種初級(jí)程序員經(jīng)常容易犯的錯(cuò)誤。
一 命名不規(guī)范
命名很隨意,當(dāng)時(shí)寫(xiě)代碼特別High,什么奇奇怪怪的命名都有的:xiaonaigou,xxxx,j1,jl,llst.完全意識(shí)不到全名規(guī)范的價(jià)值和意義。
二 日志不規(guī)范
日志?那是什么鬼東西,能吃么?曾經(jīng)有一個(gè)從文思海輝出來(lái)的小伙伴,三年后端工程師經(jīng)驗(yàn),出了問(wèn)題不知道怎么解決。
只好重啟。找我來(lái)協(xié)助,問(wèn)他,怎么錯(cuò)了?不知道。日志呢?沒(méi)有。暈,那怎么解決問(wèn)題,神仙也搞不定啊。后來(lái)才知道,他們解決問(wèn)題都是本地改代碼然后直接部署,重新訪問(wèn)看錯(cuò)誤消失沒(méi),沒(méi)有消失就繼續(xù)在本地改源碼。
三 拒絕寫(xiě)接口和假數(shù)據(jù)
一個(gè)菜雞不可怕,可怕的是菜雞遇到菜雞。曾經(jīng)有一個(gè)項(xiàng)目中的兩個(gè)菜雞,一個(gè)前端一個(gè)后端,他們很歡快的調(diào)接口,根本不寫(xiě)文檔 ,兩個(gè)人效率特別高。直到有一天,發(fā)現(xiàn)項(xiàng)目可能做不完了,需要另外兩個(gè)前端菜雞協(xié)助一下。新來(lái)的兩個(gè)菜雞要獲取后端的數(shù)據(jù),不知道接口的Url地址,不知道Get還是Post,不知道發(fā)送的參數(shù)和返回值。就這樣寫(xiě)!我壓根沒(méi)想到可以這么寫(xiě)代碼,兩個(gè)菜雞很開(kāi)心!拍手稱(chēng)快:通了,通了,通了!我說(shuō)你們通什么呢?他們說(shuō)接口終于通了!原來(lái)他們兩個(gè)參考之間的頁(yè)面,硬生生的一次一次不停的嘗試,就這樣把接口猜出來(lái)了!這就是編程的樂(lè)趣嗎?
還有不寫(xiě)假數(shù)據(jù)。曾經(jīng)有一個(gè)馬姓小哥,對(duì)趙姓小哥信誓旦旦的說(shuō):3天,給我3天時(shí)間 ,我把真數(shù)據(jù)給你。于是趙姓小哥信以為真。就這樣,3天又3天,3天又3天,3天又3天,3天又3天,3天又3天。整整一個(gè)半月,趙姓小哥都沒(méi)有拿到全部的數(shù)據(jù)!
四 不寫(xiě)單元測(cè)試
確切來(lái)說(shuō),是不按TDD的方式開(kāi)發(fā)。在現(xiàn)在IDE這么強(qiáng)大的情況下,先寫(xiě)單元測(cè)試的習(xí)慣,不僅僅是代碼的嚴(yán)謹(jǐn)性,也是效率的代名詞啊。可是很多菜雞理解不了單元測(cè)試的價(jià)值,沒(méi)關(guān)系,等到代碼重構(gòu),需求變更的時(shí)候,就哭都哭不出來(lái)了!好的單元測(cè)試,你的邏輯必然會(huì)清楚。
五 先集成,再測(cè)試,再放棄。
很多時(shí)候,菜雞在引入第三方的庫(kù),框架,接口或者是服務(wù)的時(shí)候,最喜歡的事情就是直接和自己原有的代碼集成在一起。結(jié)果 是什么呢?突然間不能用了,跑不起來(lái)了,不知道問(wèn)題出在哪了,根本分不清倒底是第三方的問(wèn)題還是自己的問(wèn)題。好的方法是什么?先跑通官方提供的Demo,再想辦法一點(diǎn)一點(diǎn)加上自己的業(yè)務(wù)。
六 理不清楚邏輯,邊做邊猜
前端在這里的問(wèn)題特別多,做支付,不清楚支付的流程,分不清楚定義,總以為前端就是接口處理好數(shù)據(jù)展示好拉倒。很多菜雞都會(huì)有這種習(xí)慣,這樣不好,先把邏輯處理好,弄清楚流程,再去動(dòng)手才好。
七 不做方案
不做方案代表什么含義呢?就是完全憑直覺(jué)行走啊。寫(xiě)代碼的好習(xí)慣應(yīng)該是先在腦袋里把所有的需求細(xì)節(jié)過(guò)一遍,實(shí)現(xiàn)細(xì)節(jié)拿出來(lái)。上個(gè)月就有一個(gè)張姓小菜雞,做一個(gè)匿名評(píng)論的功能。基本上沒(méi)有什么經(jīng)驗(yàn),腦子也不好使,給出的方式是什么你們猜得到么?用戶(hù)刷新一次就往用戶(hù)表里插入一條數(shù)據(jù),密碼默認(rèn)昵稱(chēng)隨機(jī)。不多說(shuō)了都是淚,我見(jiàn)過(guò)太多讓人目瞪狗呆的方案了,看著滿(mǎn)屏的代碼,你怎么幫他調(diào)錯(cuò)調(diào)優(yōu),***的方式就是全部重寫(xiě)。做方案的好處太多了。
8 不關(guān)注性能
不關(guān)注性能也是新人很容易犯的錯(cuò)。什么是性能呢。對(duì)后端來(lái)說(shuō)就是TPS和響應(yīng)時(shí)間,對(duì)前端來(lái)說(shuō)就是響應(yīng)時(shí)間。很多新人程序員的習(xí)慣就是把東西做出來(lái),然后再優(yōu)化。***就是東西做出來(lái)了,優(yōu)化留給別人了。對(duì)性能的關(guān)注也是晉升中級(jí)程序員最關(guān)鍵的技能點(diǎn)。在寫(xiě)代碼的時(shí)候,有經(jīng)驗(yàn)的工程師已經(jīng)知道了這個(gè)方法這個(gè)函數(shù)這個(gè)功能點(diǎn)的性能怎么樣,瓶頸在哪里。
9 害怕重構(gòu)
“程序員***的勇氣就是看自己三個(gè)月之前寫(xiě)的代碼。”其實(shí)重構(gòu)并不應(yīng)該是在幾個(gè)月之后重構(gòu),***的方式是實(shí)時(shí)重構(gòu)。寫(xiě)一天代碼,70%的時(shí)間都放到重構(gòu)上都不過(guò)份。而新人呢,磕磕跘跘的完成一個(gè)功能,就跟多米諾骨牌做成的大黃蜂一樣,你敢動(dòng)一下他的代碼試試?他會(huì)跟你拼命。你讓他自己動(dòng)一行代碼試試?不重構(gòu)在某種程度上也意味著你的代碼實(shí)現(xiàn)無(wú)法重塑。
10 做出來(lái)就好,不考慮優(yōu)雅的方案
有個(gè)詞叫做***實(shí)踐,其實(shí)編碼規(guī)范和***實(shí)踐,是編程功底的重要體現(xiàn)。優(yōu)雅方案可以認(rèn)為是***實(shí)踐的升級(jí)版,它和上面說(shuō)到的不斷的重構(gòu)是相輔相成的。不好的方案是什么呢?硬編碼居多,沒(méi)有可擴(kuò)展性,用很丑陋的方式完成了功能。上次他們?nèi)プ隽艘粋€(gè)關(guān)于試聽(tīng)課的方案,一個(gè)人能試聽(tīng)多少節(jié)課,正常的邏輯應(yīng)該是在用戶(hù)的表里加一個(gè)字段來(lái)表示。需求是寫(xiě)著邀請(qǐng)幾個(gè)人,可以試聽(tīng)多少節(jié)課,所以他們判斷試聽(tīng)多少節(jié)課就直接在通過(guò)邀請(qǐng)人的表里查詢(xún)?nèi)プ觥M耆珱](méi)考慮到以后如果我變換了試聽(tīng)課的判斷條件怎么辦?實(shí)際上這是應(yīng)該拆解成兩部分,一個(gè)是試聽(tīng)課的產(chǎn)生條件,這是一個(gè)獨(dú)立的模塊,加一個(gè)是試聽(tīng)課的確認(rèn)。
學(xué)習(xí)是個(gè)循序漸進(jìn)的過(guò)程,其中犯錯(cuò)是難免的,如果不懂就趕緊尋找解決方法或者尋求他人的幫助,切忌我行我素,也許***你能摸索出解決方案,可其中卻浪費(fèi)了許多時(shí)間。




















