程式設計師的進步從閱讀自己的老程式碼開始

2014-10-15    分類:程式設計師人生、首頁精華6人評論發表於2014-10-15


我經常鼓勵我的同行說,對於自己寫的程式碼,無論是什麼語言什麼專案都應該不遺餘力地儘可能長時間地儲存下來,放到安全的地方(即GIT/ SVN)。幾年過去之後,再拿出來翻一翻。回過頭來看自己的程式碼,會有一種神奇的喜劇效果,“OMG,這麼狗屎的程式碼居然是我寫的!!”,但是相信我,沒有比重新糾正這些專案和遊戲程式碼更有成就感的了。

上週末我在整理我七年前儲存的一堆Ruby原始檔時,發現了這個檔案:fizzbuzz.rb。儘管曾經的我對此不屑一顧,但是現在,我,頓時心花怒放、興高采烈:
# 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
狗屎的時刻來了,看著這些程式碼,我竟然給自己點了幾個贊:
  • 幸虧我寫了點註釋,我記起來了,我是在2007年2月的時候,看了Jeff Atwood的書之後,突發奇思妙想寫了這段程式碼。我可真有先見之明。
  • 這段程式碼結果很正確。
  • 可讀性真TM高,嘿嘿。
不過,我可沒有盲目地沾沾自喜。看著這些程式碼,我有了一些新的想法:
  • if條件語句得重寫,這樣能提高可讀性。
  • 數學模型執行了兩次。
  • 由於程式碼裡面的1、100、3、5這些詭異的數字,使得想要在文字中做點改動變得很難。
  • 無法測試。
幾分鐘之後,我知道該如何改進了。以條件語句為例:

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
}
然後我開始好好寫FizzBuzz檔案的新版本,希望下一個7年後能再次看到它。

只有當我們回過頭去看看曾經寫的程式碼,我們才會真正明白自己取得了多麼大的進步。這種創新自我的學習方式,常常會帶給你美好的回憶。就在一個月以前,我找出了我10年前,還在讀大學的時候,創作的一個遊戲。儘管裡面有很多bug,但是因為程式設計水平的提高,我很快就完善成功。

曾經的程式碼代表了曾經的我們,蘊含了曾經的我們是如何艱辛創作的歷程,展現了我們的缺陷,我們的優勢,我們的發展和進步。它們能敦促你對其他程式設計師時刻保持謙虛和耐心。這是你在這個計算機世界的進化史,寶貴無比。所以,請務必好好儲存你寫的所有程式碼。它們是你的孩子,是你的驕傲。

英文原文:Look at your old code

翻譯作者:碼農網 – 小峰
來自:碼農網
評論(1)

相關文章