當你開始成為一個程序員的時候,在編程的時候很容易陷入下面所述的一些壞習慣。作為一名程序員,犯錯誤不可避免,這是你學習編程課程中的一部分。在你的職業生涯中你會犯很多錯誤 – 有的特別、有的普遍 – 通過這些錯誤你可以學習如何避免在將來再犯同樣的錯誤。
但是如果你是一個初學者,你犯的錯誤可能會比其他人更頻繁。那么如何才能避免大部分程序員每天都犯的這些普遍的錯誤呢?? ?想要避免錯誤,就要對它有所了解。這也是為什么我要和大家分享一些在我們的程序員生涯中阻礙我們成長的普遍錯誤。
在開始之前,你可能想知道為什么我知道這些是錯誤,不是最佳的方法?? ?有一個簡單的回答就是 – 在我的職業生涯中,所有這些情況我都遇到過。有些情況經常遇到,有些只遇到過幾次。每次犯錯之后,我都后悔莫及。最壞的情況是我根本你不知道我在做錯的東西。一旦我意識到我在做錯事,我就開始避免這些失誤。至少,我現在寫的代碼比以前寫的要好多了。
現在你們也可以避免這些錯誤。首先要知道你現在在做的是錯誤的。我知道大部門程序員都不會做任何錯事,因為他們認為那是正確的,所以他們的行為會對程序和程序員的職業成長產生不利影響。絕大部分的不良編程習慣都源于無知,而沒有任何其他原因。要成為一個好的程序員,我們必須一個一個的去掉這些無知。這也是那些好的編程書籍所盡力展示給我們的。我們犯這些錯誤的部分原因在于它們確實完成了工作。并不是我們要做的 – 讓我們的程序運行起來,完成我們日常的工作。但是讓什么好用只是你工作的一部分。如果想要讓你的應用程序好用,你將不得不定期更新,修復任何新的bug,這些將有可能變得很頻繁。這樣一來能讓你的工作變得比較容易的方法就是遵循好的編程實踐。
另外,即使你在小型程序中能夠擺脫這些錯誤,在大型程序中你也可能碰到他們。如果你仍然犯這些錯誤,可能你的程序依然正常運行,能夠完成需要的任務,但是它會變得易出bug,充滿低效率的代碼,難于維護。并且,當你很長時間后再來看它的代碼的時候,你會發現代碼很難理解。作為程序員,我們的工作不僅僅是讓我們的程序工作,而讓用戶來處理bug。我們的工作是確保用戶即使輸入錯誤也不會得到意外的結果。所以要創建高品質的應用程序,請確保你不會在編程的時候犯下面的這些普遍的錯誤:
1. 不加理解的拷貝代碼
你經常會發現你需要的代碼在一些別的程序里面有。整段的拷貝代碼并且就這么使用它而不去煩惱于理解每一行代碼是很誘人的。有時候你拷貝的代碼可能太大了以至于沒有時間去完全理解它。如果你拷貝任何代碼都像這樣,就會有讓你的程序變得脆弱易出bug等風險。這樣可能讓工作完成,但是如果這段代碼在某種情況下產生了一些意外的行為將會怎么樣?如果使你的程序變慢或者有惡意行為將會怎么樣?因此需要恰當的理解這些代碼,或者需要絕對的確信你拷貝的代碼的出處。如果以后產生了bug,你會發現很難理解這些代碼,因為你從來沒有寫過它。甚至于你會發現很難去找出bug并且修復它,特別是如果拷貝了很多代碼在程序的不同地方。所以當拷貝代碼的時候要小心,即使很少的代碼。確保你完全理解它了。如果你以前用過一段代碼并且可以百分之百的保證它可以工作,那么它是安全可用的。但是如果不是的話,就要當心了。
2. 每次都從頭開始
這和我之前說完全相反,但是這確實是初學者容易犯的另外一個錯誤。也許你認為每次都從頭開始會很好,但是實際上它浪費了太多資源–時間,精力和思維,你可以更好的在其他方面使用它們。如果你需要的東西已經存在了,那么使用它們。不要反復重復最基礎的東西。你可以使用這些時間讓你的應用在其他方面更加優秀。如果一個API、框架或者游戲引擎讓你的任務更加輕松,你沒有理由不適用它們。你的目標不是展示你有多么的優秀,也不是證明你可以獨立完成任何任務。你的目標是保證你的應用完美工作,并且盡可能少花費一些資源去創造它們。如果你這樣做,你可以用更少的時間去完成同樣地工作。時間就是金錢,即使是你為你自己工作,你也應該試著在同樣的時間賺更多的錢。
3. 沒自己嘗試就開始Google
很多次,出于習慣,每次出現新的問題,你都會通過Google來找找解決方案。對于程序來說,這不是個好辦法。如果你總是沒有自己試一試就通過外部方法來搜索答案,那么你的思維永遠都不會受到挑戰。當你的思維停止挑戰,你自身的編程技能就會停止增長。把你自己的任何技能都練得很棒,你就可以自己解決問題,這也適用于程序開發。你是創建一個已經存在的東西,你從來不進行原創。這真是你想要做的嗎?搜尋存在的解決方案看起來很聰明,但是這會蒙蔽你的雙眼,你的懶惰會阻止你成為一個好的程序員。如果你真的你想要搜尋一個解決方案,至少,開始的時候你在這個問題上先花一點事件思考一下。也許你自己不花多少事件就能解決掉它。也許你會有比其他人更好的解決它。也許你的解決方案比其他人的更加精確。
如果你不嘗試,你永遠都不知道。
4. 忽略警告
這是一個早期我進行程序開發時犯的另一個錯誤。我不能告訴你當你的程序中出現幾百個警號和一次都不出現有什么大的不同-最重要的是忽略掉它就出現新的問題。警告通常是你做的東西可能不是每次都能正常工作的一個標志。有時,忽略這些警告會造成很大的安全問題。但是真正的問題通常是出現在程序出現幾百個警告,或者程序不能正常工作時。很難確定到底是什么原因造成了那個錯誤,你必須花更很多的時間來分析每一個警告來找出造成問題發生的根本原因。相反,你可以在警告發生的時候就處理掉它。通常你僅僅需要使用正確的變量或者正確的函數來處理這些警告。不會花你幾小時,只需要幾分鐘遇到它們就把它們處理掉。要盡早的處理警告。干凈的代碼看起來舒服工作起來也會很高。記住- 對待警告和對待錯誤一樣 .
5. 快速修復而不是永久性解決
是的,我對這樣做感到愧疚。我不為此而自豪。但通常,我們僅僅是草草的修復一下,很少會去從根本上解決這個問題。它能正常工作了,問題也處理掉了。但是如果你一不小心,問題又會以不同的方式重新出現。無論你怎么修復一個問題,都應確保你不會把整個系統破壞掉。修復應該提升整個系統的運行狀況,而不是讓它更慢或更笨重。同時,進行一個修復要能永久性的解決這個問題。要長期,不要短期。有時,由于懶惰和無知,我們通常喜歡快速的把問題解決掉,而不想在上面花太多時間。這就是為什么我們的寫的代碼能正常的工作,但是卻不是在所有情況下都能工作。如果你在工作的時候把它忽略掉,你會在后面花更多的時間。了解上面這些錯誤能有助于你避免它們。如果你知道你所做的是錯誤的,一般來說你就不會去做。
為了把工作干好你應該熱愛你所做的。如果因為某些原因你不喜歡編程了那么你幾乎不會花額外的功夫來編寫好的可維護的程序。如果你打算寫一手好程序那么你就應該 改變你對編程的看法。你要把編程看成一門藝術而你自己則是一個藝術家。那么你就不會因為懶惰和不小心而犯錯。作家會把一篇未完成的文章發表么?畫家會把未完成的畫作拿來出售么?歌手會在他的歌中唱沒有用的歌詞么?
絕不會。
對編程來說也一樣。任何情況下,都別編寫未經測試的半吊子代碼。在你的程序未寫完前,不要發布它。別編寫不會使用的無用代碼。這都是一些我們犯的一般性錯誤,因為我們喜歡在工作花更少的時間而去干其他事情。但這是不行的,遲早你都會為確保你的代碼不出問題而負責。越早的練習正確的編程方法,就對你的用戶和自己越好。有時成為一個好的程序員意味著你不會犯糟糕程序員同樣的錯誤。謝謝大家的閱讀。如果你知道誰不知道這些編程技巧的,請你把這篇文章發給他們,以便讓他們成為好的程序員。