你的老代码是你的老师
jopen 9年前
如何从一个菜鸟程序员脱贫,进入优秀程序员的殿堂,这样的文章到处都是。很多都是让你看书,看代码,多编程多实践。有了努力就应该有成果,但如何评判自己是否获得了成长了呢?
和同事聊天时,我时常说,写过的代码,都是你的财产,都要保留下来,可以放到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年前上大学时的代码——一个小游戏,很显然,当时的编程水平不高,因为里面有很多可以改进的地方。这说明这些年我在进步。
过去的代码体现了过去的自我,是我们自己走过的道路,它记录了我们的不足,我们的优点,我们的进步。它能警示我们保持一颗谦虚的心,要逐渐进步。所以,请保管好你的代码,它们是你的见证。