計算機(jī)行業(yè)中無疑程序員的薪資待遇是極高的,每年都有大量的人投身軟件編程行業(yè),成為一名程序員。
1、缺少必要的注釋
大段的iF-else缺少注釋,讓維護(hù)者沒有辦法快速分辨分支邏輯。特定地方存在hack或復(fù)雜邏輯的代碼,缺少注釋會讓后面得人不明是什么原因。為了你好,也為了后來者好,請務(wù)必加上代碼。
2、不變和變化的部分拆分
程序員中流傳著一句話,此處不要寫死,將來必改。有經(jīng)驗的程序員會將一些業(yè)務(wù)層的邏輯抽象出來,寫成配置文件,好處就是如果后續(xù)需求有改變,只需改配置文件即可,肯定不會引入bug。

3、忽視測試部分
沒有測試的代碼等于沒寫,雖不敢全部贊同,卻也有幾分道理。從測試用例驅(qū)動開發(fā),持續(xù)集成,每次編譯自動跑測試用例,能夠保證系統(tǒng)的穩(wěn)定同時也減輕測試成本。
4、直接操作數(shù)據(jù)
你應(yīng)該通過方法去操作數(shù)據(jù),而不是直接操作數(shù)據(jù),這樣能夠保證你總能操作數(shù)據(jù)正確。例如一個類中定義的屬性發(fā)生變化了,代碼中所有涉及到直接操作該屬性的代碼都需要修改。如果通過方法操作該屬性,則僅需修改操作方法,對于外部調(diào)用者,類屬性變化被屏蔽了,遵循了解耦的原則,代碼穩(wěn)定性大大提高。
5、沒有明確的職業(yè)目標(biāo)
沒有目標(biāo)的人生,就像無根的浮萍,水流到哪里就飄到哪里,一生漂泊。
如果你想要在軟件開發(fā)領(lǐng)域獲得真正的成功,那么就必須知道該何去何從。或許面對遙遠(yuǎn)的未來,你已經(jīng)有了一個粗略的目標(biāo)了。但是除了這點還不夠,你應(yīng)當(dāng)堅實自己的目標(biāo)——清楚的定義在實現(xiàn)過程中的每個重要時間點所需要達(dá)到的效果。
我認(rèn)識許多程序員和其它方面的專業(yè)人士,數(shù)十年來他們都在相同的職位上反復(fù)地做著同樣的事情。是的,你沒有看錯,是數(shù)十年。接受職業(yè)現(xiàn)狀,不做任何改變,是造成這種悲劇的根源。對于未來,如果你沒有明確的職業(yè)規(guī)劃,這樣的悲劇就很可能會發(fā)生在你身上。
6、不重視“軟技能”或非技術(shù)的東西
我認(rèn)識許多擅長寫代碼的程序員,他們可以用所寫的算法把我耍得團(tuán)團(tuán)轉(zhuǎn),他們對復(fù)雜架構(gòu)的理解力和思考能力令我自愧不如。
但是真實的狀況卻是:技術(shù)不如他們的我,軟件開發(fā)領(lǐng)域的職業(yè)發(fā)展卻全面超過了他們,除了職位,還包括薪水、生產(chǎn)力等諸多方面。
在這里我并不是為了吹噓自己多了不起,而是為了向那些只埋頭專研技術(shù)的程序員們說明“軟技能”對于職業(yè)發(fā)展有多重要。
7、不融入社區(qū)生活
在程序員生涯中有一樣?xùn)|西令我受益頗深,它就是社區(qū)的幫助。成為這個大群體的一部分,不僅讓我擁有了歸屬感不再孤獨(dú),也幫助我改進(jìn)了自身的技能,向著更高的平臺發(fā)展。
如果你還沒有參與社區(qū)生活的話,我強(qiáng)烈建議你融入這個圈子里來。它是一個比自我寬廣得多的平臺,有助于你的發(fā)展。
8、使用全局變量
話說回來,有的編程語言是完全沒有局部變量這個概念的,所以不得不使用全局變量。關(guān)于全局變量,雖然我們可以在子函數(shù)中使用它,但是卻沒辦法聲明這一變量只能在該函數(shù)中使用。盡管如此,全局變量依然非常受歡迎,因為我們只需聲明一次,即可到處使用,太省時省力了有木有。
但是它的優(yōu)點也是它的缺陷,這也是關(guān)于全局變量最糟糕的事情——我們沒有辦法控制它的改變,也沒辦法控制何時去訪問變量。假設(shè)某個全局變量在調(diào)用到程序之前賦予了一個特定的值,但是很可能調(diào)用完了之后值就變了,而你卻毫無察覺。
9、不進(jìn)行評估
你的目標(biāo)是寫一個應(yīng)用程序,你斗志昂揚(yáng),愈戰(zhàn)愈勇。但是突然間,你發(fā)現(xiàn)了性能問題和內(nèi)存不足的問題。
進(jìn)一步的調(diào)查表明,盡管你的設(shè)計對于現(xiàn)在這樣小型的用戶數(shù)量、記錄、條目運(yùn)行良好,但是卻不適合大規(guī)模的情況——Twitter就是例子。又或者它現(xiàn)在在你的8GB RAM和SSD的3GHz PC上運(yùn)行順暢,但一旦到普通的PC上,它會比烏龜爬還要慢吞吞。
10、大小差一錯誤(數(shù)組邊界溢出)
這個錯誤基本上每一個程序員都犯過,通常在寫循環(huán)的時候,由于循環(huán)變量的步長增加過多或過少,導(dǎo)致循環(huán)遍歷元素的次數(shù)發(fā)生錯誤,產(chǎn)生數(shù)組溢出的異常。
這個錯誤會導(dǎo)致遍歷數(shù)組元素時訪問不存在的元素,或者遺漏應(yīng)該遍歷的元素。產(chǎn)生這個錯誤的原因就是你忘記了數(shù)組下標(biāo)是從0開始還是從1開始了。
不要硬記代碼
很多畢業(yè)新生會去背一些常見問題的答案。好比很多程序員都知道如何“用C中的位運(yùn)算來交換兩數(shù)”。但并不是所有人都知道那段代碼真正做了些什么,又是如何完成這項任務(wù)的。
死記硬背并不是C編程面試的捷徑。即便你僥幸答對了一兩題,如果不了解基礎(chǔ)概念還是無法通過整個面試。關(guān)鍵要了解編程背后的概念。重點并不在于你知道多少種語言,而在于你有多了解這些語言。
|