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