每个程序员都应该了解的十一句话

 文来自泡面吧 侵删

1.技术只是解决问题的选择,而不是解决问题的根本

我们可以因为掌握了最新的JavaScript框架ahem、Angular的IoC容器技术或者某些编程语言甚至操作系统而欢欣雀跃,但是这些东西并不是作为程序员的我们用来解决问题的根本——它们只是用于帮助我们解决问题的简单工具。

我们必须非常谨慎,不要对某项正好喜欢或者正好很火的特定技术走火入魔。否则,我们将进入这样的思维怪圈:把掌握的那项技术比做是锤子,在思考问题时,会自然的把所有的问题都想象成是锤子可以解决的钉子。

2.聪明是代码清晰的敌人

当编写代码时,我们应当努力做到代码清晰易理解。

虽然这句话并不总是正确的,但在一般情况下,聪明确实是代码清晰的敌人。

事实证明,当我们写一段自认为非常了不起的代码的时候,这些代码在别人眼里可能会是一头雾水。

所以当你在编写某段聪明高效的代码的时候牢牢记住这个原则是很有必要的。

如果你对如何编写整洁清晰的代码很感兴趣的话,我强烈推荐你看罗伯特·C·马丁的书《The Clean Coder: A Code of Conduct for Professional Programmers》。

3.写尽可能少的代码

这句话看起来有一些矛盾。程序员的工作不就是编写代码么?

嗯,是的但也不是。

我们的工作需要我们编写代码,但是我们在尝试解决问题的时候应当做到尽量编写更少的代码。

这并不意味着我们需要尽量把代码写得更紧凑或者把所有的变量都使用单个字母。它的意思是我们应当尝试用更精简的算法来实现所需要实现的功能。

通常情况下,我们在代码中所添加的各种很酷的特性是非常诱人的,这还能让我们的代码看起来更“健壮”和“灵活”,能够处理各种不同类型的情况。但是,在更多的时候,我们尝试更多可能有用的特性或者预防可能在未来存在的问题的做法是错误的。这些额外的代码可能不具备任何的价值,但是却可能造成更多的伤害。因为代码越多,出现未知错误的机会就越多,代码的维护也更加的麻烦。

优秀的软件工程师写尽可能少的代码。

伟大的软件工程师删除尽可能多的代码。

4.注释是代码表述的最后选择

鲍勃·马丁曾经说过:“当你在为一段代码写注释的时候,你应当对自己糟糕的表达能力而反思。”

这并不意味着我们以后就不要写注释了。但在大多数情况下这种情况是可以避免的,你可以选择用更好的命名方式来取代它。

只有在使用命名都无法表述清楚某个方法或者变量的目的时,注释才是最后的选择。事实上,表达无法轻易在代码表达的东西才是注释的真正作用。

举个例子,注释可以告诉你在代码中的那些奇怪的操作命令并不是一个错误,而是故意的,那是因为在底层操作系统存在着某个bug。

虽然在一般情况下,许多注释还是非常有用的,但是却存在着误导的风险。

在其它代码更新后,与某些更新前代码相关的注释常常会得不到同样的更新,这就导致了某些注释会变得非常的危险,它们很可能会把你引导到一个错误的方向。

你检查过与代码密切相关的每一段注释么?是否确保代码都是在按照注释所说的那样做?如果你都照着这样做了,那么注释的意义又何在呢?如果你没有这样做,你又怎么知道注释说的都是真的?

所以,注释的作用并不象所宣扬的那么好,这种东西切勿滥用。

5.在编写代码之前你应当清楚你的代码要做什么

这看起来是理所当然的,但实际情况却不是。

现实工作中你有多少次是在没有经过充分了解到你的代码要干些什么就开始着手编程的?反正对于我来说,是不计其数了,所以我把这条记录下来用来随时提醒我。

测试驱动开发(TDD)的实践在这里可以帮助你,因为你需要在编写代码之前了解这些代码将要用于什么地方,虽然这仍然不能阻止你创建错误的东西,但是它仍然非常重要。所以当你完完全全了解需要构建的需求和功能时,再动手编程。

6.提交完成代码之前先自行测试

不要在完成编程工作后,就把代码扔给QA,然后就坐等消息了。这样会浪费每一个参加处理不必要Bug和问题的人的时间。你应当在报告编程工作完成之前,花费几分钟时间运行测试场景进行自我检测。当然,在你把代码提交给QA之前不一定会发现每一个Bug,但至少你可以杜绝一些我们每个人都可能犯下的愚蠢低级错误。

很多的软件开发人员认为测试代码只是QA人员的工作。这是不对的。保持质量是我们每个人的责任。

7.每天都要学一些新东西

有句名言“刀不磨要生锈,人不学要落后。”这句话是很有道理的,因为无论是否获取到新的知识,你每天都会遗忘掉一些以前的东西。

每天学些一些新东西并不会花费掉你很多的时间。试着每天用15分钟时间去读书,然后你就会发现每天你都会有一点点的进步,在未来的某个时候,你会发现这种进步是巨大的。因此,为了在今后获得丰厚回报你必须从现在开始就进行投资。另外,今天的技术发展日新月异,如果你不改善自己的技巧,学习新的东西,你很快就会被甩开。

8.写代码应该成为一种乐趣

这是非常正确的。或许,你进入这个行业仅仅是因为它的薪水可观。选择一份报酬丰厚的工作这并没有错,但是还有更好的选择,比如医生或者律师。事实上很多人选择做软件开发还有一个原因,那就是他们喜欢写代码。在你被工作压力所累的时候,不要忘了你选择这份职业的初衷。

编写代码可以带来很大的乐趣。多年的时间里,很多人可能都已经遗忘了这一点,那么从现在起,重新唤回以前的那份热情吧,从身边的项目开始,把你的观念和意识转换到以前你开始学习编程的那个时刻。

9.你不需要无所不知

在你学到了很多知识的时候,你仍然有很多东西不知道。

意识到这点很重要,因为它可以驱使你去了解更多更多的东西。

不知道问题的所有答案没有关系,不了解某个东西说出来并寻求帮助也无关紧要。在很多情况下,你可以选择现学现用——相信我,我就是这么走过来的。

我的观点是,不要企图去学习所有的知识,因为这是一个不可能完成的任务。你需要关注和掌握的是能够帮助你快速学习的技巧。

10.最佳的实践视环境而定

测试驱动开发最好的方法是先编写测试代码?

我们应该保持结对编程的习惯?

如果不使用IoC容器是否会低人一等?

所有这些问题的答案是“看情况。”这取决于所处的实际环境。

人们试图把最佳的实践通过喉咙等方式传输给你,他们会告诉你,他们平时都是这样应用的。所以,你也应该这样做——这其实并不正确。

在写代码的时候,我也借鉴过不少别人的成功经验。但是,这些借鉴都是有条件的。

知识是死的,人是活的。最好的实践需要视环境而定。

11.努力做到化繁为简

所有的的问题都可以进行分解。而最优雅的解决方案通常都非常简单。但是,要变得简单并不容易,这需要许多的工作。

比如,这篇文章的目的是从复杂的软件开发工作和日常生活中提取经验,通过归纳,以较简洁的方式呈现给大家,而这并不是一件容易的事情。

在解决问题时,可以先找到一个较为复杂的笨方法。在此基础上进行努力改进和提炼,使它在正确的基础上变得简单。这需要花费很多时间和努力,而人类不正是因为这个过程才慢慢变得聪明么?

时间: 2024-08-28 18:49:52

每个程序员都应该了解的十一句话的相关文章

[注]十大编程禁忌 -- 程序员都必须克服

程序员在编程的时候难免会犯错误,但如果不从错误中吸取教训,那么习惯成自然,你会经常犯错的.从错误中不断的学习,锻炼好的行为习惯有助于事业上的稳定. 这就是我们如何将小麦从糟糠中区别出来以及如何避免编程禁忌的绝佳经验.此外,最重要的就是可以为客户带来更好的用户体验. 1. 不提升非技术技能 我们认为非技术技能是项目成功的主要因素.这些非技术技能也可以称之为“软技能”,总体上来说,它已经被公司证明为能够驾驭企业和客户之间的长期商业关系,因此也能决定公司的成长发展路径.一些关键的软技能指标包括: a.

每个程序员都应该了解的 CPU 高速缓存

每个程序员都应该了解的 CPU 高速缓存 英文原文:Memory part 2: CPU caches 来源:oschina [编者按:这是Ulrich Drepper写“程序员都该知道存储器”的第二部.那些没有读过第一部 的读者可能希望从这一部开始.这本书写的非常好,并且感谢Ulrich授权我们出版. 一点说明:书籍出版时可能会有一些印刷错误,如果你发现,并且想让它在后续的出版中更正,请将意见发邮件到[email protected] ,我们一定会更正,并反馈给Ulrich的文档副本,别的读者

程序员的奋斗史(四十四)——大学断代史(八)——大学的友谊

文/温国兵 我不是一个善于表达的人,但很庆幸大学里结实了几个知己. 原本我是其他寝室的,缘分使然,让我和现在的室友相聚.和好友A.好友B.好友C之间发生了太多太多,以至于太多回忆从脑海中隐隐浮现.A在我的正前方,无数个夜晚不知道他在被窝里做些什么,我睡了很久还依稀可以听见他的声音.大学和A同学谈得最多,每次都是相当长的时间,在我的心里,一直把他当做大哥.每一次谈话都从中收获颇丰,增长不少见识.也是A同学让我变得比以前开朗.同一件事情,他比较乐观,我比较悲观:他看到最多的是希望,我看到最多的是绝望

程序员的奋斗史(三十八)——大学断代史(二)——我与数据库的故事

文/.温国兵 惰性人皆有之,也算是人的一大天性.几日之前便构思好此文,怎奈每日杂事繁多,今日才提起笔,作下此文.本文谈谈我与数据库的故事. 说起和数据库结缘,还得从大一说起.大一刚开始接触C语言,每日就沉浸在无止境的代码中.在网上查资料的过程中,看到别人用C语言写了一个小型的图书操作程序,数据库采用的是SQL Server,运行出来的效果图很炫,惊叹原来还可以这样管理数据.熟知C语言的同学肯定对文件操作不陌生,当时我们写程序如果有静态数据,都是放在文件里的.直到后来做的C语言课程设计,我也是一大

程序员的奋斗史(三十九)——大学断代史(三)——我和知乎邂逅

遥望2011年的某个惶惶岁月,那是我与知乎相识的日子. 排除知乎网站的内测用户,我应该算得上第一批用户.那时知乎网还未开放注册,只能通过好友邀请注册,我费了九牛二虎之力,申请了好几次,才拥有了知乎账号.作为一个真实的问答社区,从近几年的运营来看,知乎是成功的.虽然外界曾质疑知乎网站的盈利模式,但不可否认知乎是伟大的. 众所周知,知乎的原型是国外的Quora.以前一直以为Quora是多么的神圣,直到今年注册并使用后,才发觉知乎在用户体验上一点不逊色于Quora.好的网站当如知乎,简洁美观.操作简便

国外程序员经常用的二十八个学习网站

无论你是想转行,成为一名全职程序员,或者想尝试打造一个网站或应用程序,或者只是希望提高了你的技能,学习代码无疑是每个程序员都绕不开的一关.尽管作为一个程序员可能不适合每一个人,但是还是有很多网站适合来提高自己的水平. 在深入了解下面我们的学习写代码网站列表中,我们想分享一个自学成才的产品设计师的一些建议.一位前创业者说自学成为程序员是很难的一件事情,无论是设计,编程. “鼓足勇气,最重要的障碍就是要克服你的恐惧” 一旦你达到的基本写代码的能力,起步往往是最好的,试图给自己定制任务,并建立通过大量

所有的程序员都是自学成才

在我十几岁的时候就开始玩甲级棒球.我水平很差,但当我决定要做好什么事时,最终总能如我愿.现在我是计算机专业3年纪的学生.在编程上,有些事情和体育是截然不同的:棒球教练可以教会你如何打棒球,但一个计算机教授却不能教你如何编程. 我很吃惊,在整个大一期间,我的老师或教授从来不点评我的代码,大二时更是如此.我们的作业很多,题目很难,但在完成了数据结构课上的2000行的代码后,我从来没有收到过老师的任何一条评论--只要程序能编译通过,单元测试显示没有错误,这就行了.直到遇到了一个小组开发的项目,我才认识

程序员:伤不起的三十岁【转载】

程序员干到30岁,好不容易从码奴混到了白领,却再也干不动了,还时时面临失业的危险.30岁,是一个程序员伤不起的年龄.明天,何去何从? 一.30岁现象 在官场上,曾经有一个59岁现象,就是官员们会在59岁时,会使劲捞上一把.很明显嘛,权力过期作废,再不捞就要退休了,没有机会了. 在程序员的圈子里,也有一个30岁现象.当然,如果你有铁饭碗,比如在国企或政府机关,那你是无法理解底层劳动人民的感受的.同时也要恭喜你成为体制内的一员,可以一直干到退休无忧. 30岁现象人人都明白,但要给出一个定义并不容易.

程序员都应学习代码编译器知识

程序员都应学习代码编译器知识   所有优秀的计算机科学学院都提供了编译器课程,但是相对比较少的学校把它作为本科课程的必修部分.这篇文章回答了这个问题:为什么需要学习编译器知识?即使你从没打算过编写编译器. 我写这篇文章的其中一个原因是,尽管我在读本科时很喜欢编译器课程,但是我几乎看不到它的实际作用.大多数资料看起来要么简单易懂,要么很深奥(事实上,我找到的大部分编译器资料都是很枯燥的.)无论怎样,我用了几年时间总结了为什么这类课程会如此有用的实际原因.原因如下. 分析器和解析器无处不在 严谨的p