你的老代码是你的老师

jopen 5年前
 

如何从一个菜鸟程序员脱贫,进入优秀程序员的殿堂,这样的文章到处都是。很多都是让你看书,看代码,多编程多实践。有了努力就应该有成果,但如何评判自己是否获得了成长了呢?

和同事聊天时,我时常说,写过的代码,都是你的财产,都要保留下来,可以放到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年前上大学时的代码——一个小游戏,很显然,当时的编程水平不高,因为里面有很多可以改进的地方。这说明这些年我在进步。

过去的代码体现了过去的自我,是我们自己走过的道路,它记录了我们的不足,我们的优点,我们的进步。它能警示我们保持一颗谦虚的心,要逐渐进步。所以,请保管好你的代码,它们是你的见证。