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

实验是本能

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

拒绝情绪化

代码是无情的冷酷的没有感觉的,但是编写代码的我们是有血有肉的。每个人都有自己的情绪,但请你注意不要把情绪带入你的工作中来。编程是严谨的、不容许丝毫差错的,如果你情绪化的对待他们,你会发现一大堆的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次,那么可以为这段代码创建一个函数,这将极大地改善你的代码。

本文来自企鹅号 - 西安华清远见媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏即时通讯技术

微信团队分享:Kotlin渐被认可,Android版微信的技术尝鲜之旅

本文由微信开发团队工程是由“oneliang”原创发表于WeMobileDev公众号,内容稍有改动。

1160
来自专栏程序员的知识天地

优秀程序员的10条黄金法则!

这是一条非常值得遵循的伟大原则。我很习惯于回过头去检查自己写下的代码,重构那些被多次使用的部分。虽然在将一个长方法分解为若干个短方法时,会遇到一些困难。Ctrl...

1004
来自专栏java一日一条

关于烂代码的那些事(上)

最近写了不少代码,review了不少代码,也做了不少重构,总之是对着烂代码工作了几周。为了抒发一下这几周里好几次到达崩溃边缘的情绪,我决定写一篇文章谈一谈烂代码...

1142
来自专栏极客猴

Python 面试宝典

步入 9 月,徐徐的秋风给酷热的天气带来丝丝凉意。同时,也吹来一股招聘高潮。俗话说“金九银十”,每年的 9、10 月都是招聘高潮。有些小伙伴会参加秋招,有些小伙...

2171
来自专栏老九学堂

C 语言:我不是针对谁,我是说在座的都是乐色

从上世纪七十年代开始,许多编程语言都曾受到程序员的青睐。尽管这些语言很好、很有用,但从高级语言开始学习的人在编程知识方面都有许多遗漏。

882
来自专栏java一日一条

精通型程序员的特点

这听起来像一个很难回答的问题,因为这两者似乎意味着同样的事情。但它们之间的微妙区别至关重要。

491
来自专栏Java学习网

精通型程序员的特点

你知道有能力胜任和精通之间的区别是什么吗? 这听起来像一个很难回答的问题,因为这两者似乎意味着同样的事情。但它们之间的微妙区别至关重要。 有能力胜任是指有足够的...

3146
来自专栏owent

程序员修炼之道 -- 阅读笔记

终于要离开学校了,终于有时间可以静下来看看之前导师推荐的书籍。之前有看到说《程序员修炼之道》是对程序员影响最为深刻的书, 就从它开始吧。用这个还算可以的音响听...

882
来自专栏程序员互动联盟

白纸一张,如何玩转linux?

疑惑一 linux系列经典的书籍 入门篇 《LINUX权威指南》书不错,写的很全面也比较广,涉及的不深,做为入门书籍不错,可以比较全面的了解linux 。另外比...

3548
来自专栏从零开始学 Web 前端

简述C和C++的学习历程

总是被问到,如何学习C和C++才不茫然,才不是乱学,想了一下,这里给出一个总的回复。  一家之言,欢迎拍砖哈。 1、可以考虑先学习C. 大多数时候,我们...

912

扫码关注云+社区