糟糕程序员和优秀程序员的区别

实验是本能

作为一个优秀的程序员,独立永远是你自己最重要的武器。在遇到困难的时候多问问自己为什么,多进行实验来进行测试,这远比你直接去问更牛叉的老大哥们好不好行不行更利于你的成长。当这种行为模式成为习惯乃至本能反应,你会发现也许你不懂得不会的会变多,但是你同时也会发现更好的自己。

拒绝情绪化

代码是无情的冷酷的没有感觉的,但是编写代码的我们是有血有肉的。每个人都有自己的情绪,但请你注意不要把情绪带入你的工作中来。编程是严谨的、不容许丝毫差错的,如果你情绪化的对待他们,你会发现一大堆的bug会排着队来找你。

永远有激情

兴趣永远是一个人最好的老师,它会帮助你去寻找那些你真正需要的东西。很多程序员干这一行只是为了挣钱,如果有更好的职业,他们会毫不犹豫的辞掉程序员的工作。而优秀的程序员热爱编程,喜欢钻研代码中的问题,他们感到能指挥电脑来帮助人们和自己解决现实生活中的问题是一种神奇的能力。当遇到问题无法解决时,他们会茶不思、饭不想,无法入睡。

君子善假物

优秀的程序员会知道怎样最快最好的达到自己的目的。当你遇到了问题,不要去钻牛角尖,先冷静下来思考一下解决它的途径有哪些。初级的程序员只会使用百度和百度知道搜索问题,而高级的程序员/优秀程序员使用谷歌和Stack Overflow或者MSDN forums这类网站寻找更优秀的答案。

博文而广见

不仅关心技术方面的知识,同时关注非技术方面的知识。

不称职的程序员喜欢临时抱佛脚,只有在需要的时候才去学习。而优秀的程序员会去主动学习各种相关知识,对各种知识来源都有一种开放的心态,而不会象有的人那样固步自封。 而且,并不只局限在跟职业相关的技术类知识,同时他也会学习任何感到有趣的知识,比如沟通技巧等。

糟糕程序员的表现:

(1)无法对代码进行推理

对代码进行推理意味着能跟随代码的执行路径(“在脑子里运行程序”),同时清楚地知道代码执行的目标。

(2)补救措施

程序猿可以通过实践来克服这个缺点,如果 IDE 自带的调试器能单步调试,就把它作为助手使用。比如说在 Visual Studio 里,这就意味着要在问题区域的起始处打上断点,然后按下‘ F11 ’单步调试,查看变量的值(变化前后都要查看),直到你明白了代码正在做什么。如果你的目标环境不具备这种特性,那就找一个拥有这种特性的环境去实践。

这么做的目的是,让你做到不再需要调试器就能在脑子里跟随代码的流程,而且有足够的耐心去思考代码正在对整个程序的状态做什么。这么做的好处就是能够识别出冗余且无用的代码,而且不需要从头执行整个路径就能在当前代码中找出 bug。

(3)难以理解语言的编程模型

面向对象编程( Object Oriented Programming )就是一种语言模型,正如函数式编程( Functional programming )或声明式编程( Declarative programming )一样。它们每一个都和过程式或命令式编程有着显著不同,就像过程式编程明显不同于汇编或基于 GOTO 的编程。此外,虽然有很多语言都跟随同一个主流编程模型(如面向对象的编程),但它们都只介绍自己的改进,例如递推式构造列表( list comprehensions )、泛型( generics )、鸭式分类( duck-typing )等等。

(4)不使用版本控制

版本控制确实是一个非常有用的技术。它不仅可以跟踪解决方案中的每个文件,存储整个历史,还可以区分不同的版本到分支,知道什么时间是谁改变了什么(并且如果提交的信息足够详细,还可以知道原因)。

(5)使用糟糕的变量名

知道将variable1和variable2作为变量名有什么问题吗?变量应该根据它们做什么或者它们包含什么来命名。对了,Visual Studio有一些强大的重构工具,可以相对容易的让它们回到井然有序的状态。

(6)重复代码

非常推崇《Pragmatic Programmer》(《程序员修炼之道》)这本书,上面推荐的第一个秘诀就是不要重复代码。上面要求无论如何都不得重复代码,在我看来过于极端了。如果相同的代码需要重复4次,那么可以为这段代码创建一个函数,这将极大地改善你的代码。

 

你可能感兴趣的:(java)