你的老代碼是你的老師

jopen 10年前發布 | 4K 次閱讀 代碼
 

如何從一個菜鳥程序員脫貧,進入優秀程序員的殿堂,這樣的文章到處都是。很多都是讓你看書,看代碼,多編程多實踐。有了努力就應該有成果,但如何評判自己是否獲得了成長了呢?

和同事聊天時,我時常說,寫過的代碼,都是你的財產,都要保留下來,可以放到github里或其它版本庫里。過一段時間后,或幾年后,再回去看看自己寫的老代碼,可能會讓你哭啼,也可能會讓你驚喜。”我的神呀,這么糟糕的代碼?“,你知道嗎,這是對自己最好的教育和警醒。

不久前,我就翻查了一下一個我幾年前寫的代碼,是一個ruby程序,讓我詫異:

# I am part of the chosen 1/200th!!!! :)
# http://blog.codinghorror.com/fizzbuzz-the-programmers-stairwa
y-to-heaven/
(1..100).each{|i|
  if i % 3 == 0 && i % 5 == 0
    print 'FizzBuzz'
  elsif i % 3 == 0
    print 'Fizz'
  elsif i % 5 == 0
    print 'Buzz'
  else
    print i
  end

執行這個程序:

$ ruby fizzbuzz.rb

12Fizz4BuzzFizz78FizzBuzz11Fizz1314FizzBuzz1617Fizz19BuzzFizz22
23FizzBuzz26Fizz2829FizzBuzz3132Fizz34BuzzFizz3738FizzBuzz41Fiz
z4344FizzBuzz4647Fizz49BuzzFizz5253FizzBuzz56Fizz5859FizzBuzz61
62Fizz64BuzzFizz6768FizzBuzz71Fizz7374FizzBuzz7677Fizz79BuzzFiz
z8283FizzBuzz86Fizz8889FizzBuzz9192Fizz94BuzzFizz9798FizzBuzz

它讓我不禁反思許多:

  • 注釋有效,它讓我回憶起,那在是看了Jeff Atwood的書之后寫的。
  • 程序的結果是正確的
  • 可讀性還不錯

我并不是一味的得意。對于這些代碼,我有了一些改進的意見:

  • if條件語句得重寫,可讀性差。
  • 有重復執行的代碼。
  • 有”魔幻“數字
  • 測試不方便。

思考了一會,我想出了改進的方法,比如:

Ruby語言允許我們將if放在代碼塊后面,更易于閱讀。

# I am part of the chosen 1/200th!!!! 
# http://blog.codinghorror.com/fizzbuzz-the-programmers-stairwa
y-to-heaven/
(1..100).each{|i|
    print 'Fizz' if i % 3 == 0
    print 'Buzz' if i % 5 == 0
    print i if i % 3 > 0 && i % 5 > 0
}

我認真的改進了新版本的這個程序,希望多年我在看它時仍會發現還有改進的地方。

回顧過去自己寫的代碼,你能發現自己是否現在有沒有進步,這是一種好的自我進步的方法。比如,我翻出了10年前上大學時的代碼——一個小游戲,很顯然,當時的編程水平不高,因為里面有很多可以改進的地方。這說明這些年我在進步。

過去的代碼體現了過去的自我,是我們自己走過的道路,它記錄了我們的不足,我們的優點,我們的進步。它能警示我們保持一顆謙虛的心,要逐漸進步。所以,請保管好你的代碼,它們是你的見證。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!