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

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