每一个程序员都应当了解的11句话

每一个程序员都应当了解的11句话,你最同意哪一句?

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-12-09 12:28:49

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

每一个程序员都必须阅读的10篇文章

原文:10 Atricle Every Programmer Must Read by Javin Paul 作为一名Java程序员和软件开发者,我已经从那些名为<关于XXX,每个程序员都应了解的>的文章中学了很多东西,这些文章倾向于提供许多关于某一个特定主题的实用的.有深度.难以发掘的信息.在我的学习过程中,我读到了不少非常有用的文章,我会收藏这些文章以便日后参考和再次阅读.我个人认为所有程序员可以从这些文章中获益,这也是促使我发帖,并与你们分享这些<关于XXX,每个程序员都应了解的&

所有程序员都应该遵守的 11 条规则

看到一篇翻译很好的博文,在这分享下 1: 技术是你获取解决方案的方法,而不是解决方案本身 我们可以得意忘形地使用最新的JavaScript框架-嗯哼,Angular-IoC 容器,编程语言,甚至操作系统.但作为一个程序员,所有这些东西并不是问题真正的解决方案,相反,它们只是帮助我们解决问题的简单工具. 在面对那些我们喜欢或是当前非常流行的特殊技术时,我们必须非常小心,而不是变得过于疯狂.以免步入这样一个险境:仅仅因为我们手里拿了一把闪闪发亮的锤子,就把所有的问题都看作钉子. 2: 对代码而言,“

每一个程序员都是自学成才

有很多成为程序员的方法.如果你正行进在一条非常规的道路上,那么你可能会想知道你该追上那些有学位的人.你该怎么和那些在课堂上花了很多时间学习计算机和编程的人竞争? 我的经验来看,竞争的要点不在于学历:关键在于你会如何利用你所掌握的技能.条条大路通罗马.事实上,从学校里是学不到如何做一个web开发人员或Android开发人员的. 每个使用计算机技术的程序员大多靠自学成才,在工作中和自己的空闲时间提高技能.我在完成我的学业的同时,去上了很多与计算机相关的课程,但其中很少是专门讲web开发的.也许你会上

每一个程序员都应该知道的高并发处理技巧、创业公司如何解决高并发问题、互联网高并发问题解决思路、caoz大神多年经验总结分享

本文来源于caoz梦呓公众号高并发专辑,以图形化.松耦合的方式,对互联网高并发问题做了详细解读与分析,"技术在短期内被高估,而在长期中又被低估",而不同的场景和人员成本又导致了巨头的方案可能并不适合创业公司,那么如何保证高并发问题不成为创业路上的拦路虎,是每一个全栈工程师.资深系统工程师.有理想的程序员必备的技能,希望本文助您寻找属于自己的"成金之路",发亮发光. 目录: 场景及解决方法解读 认识负载 数据跟踪 脑图.caoz大神公众号分享 参考资料 秉承知其然及其

连载《一个程序员的成长历程》-11.80后结婚,房子是悬在每个人心中的一块石头

小的时候,每到寒暑假就去三姨家去“度假”,有一次父母骑着自行车送我,正好一位老先生在那串门,老眼昏花.两鬓斑白,据说有90多岁了,他们聊的很热闹,我记得印象最深的一句话是(老先生说):他们(指我,代指80后)赶上好时代了,生在红旗下长在春风里,不愁吃不悉穿.后半句说的到是真的,但是以我活到现在却深深沉思着:我们真的赶上好时代了?生在红旗下,真的是长在春风里? 改革开放初期的“改革”如同当年的“革命”一样,给亿万中国人注入了新鲜的血液,让所有人看到了希望,感觉取得的成绩会人民共享.随着改革的不断深

每个程序员都可能犯过的10个错误

本文列出的10个错误,并不局限于C#.Java.Delphi.JavaScript等——几乎涵盖了所有的编程语言.是不是大吹大擂,欢迎各位品鉴…… 1.面向编译器写代码,而不是面向用户 当人们使用编译器创建自己的App时,在把自己的想法诉诸于机器代码的过程中,常常会将那些可以使得编程更为简单却又冗长的语法遗忘于脑后.无论你使用的是单字母的标识符还是更易于人脑理解的标识符,对于编译器而言,毫无区别.编译器不在乎你写的是否是优化表达式,也不在乎你是否用括号封装了子表达式.编译器要做的就是将这些人脑可

每个程序员都必读的12篇文章

英文原文:10 Articles Every Programmer Must Read 作为一名 Java 程序员和软件开发人员,那些每个程序员都应该知道的 XXX 的文章教会了我不少东西,它们提供了某个特定领域的一些实用的并且有深度的信息,这些东西通常很难找到.在我学习的过程中我读到过许多非常有用的文章,我把它们添加到了书签里,方便以后阅读或者引用.我个人认为所有开发人员都能从这些文章中受益,因此我也写了篇"每个程序员都应该了解的"文章,准备分享给你们.这是我的个人收藏.在这篇文章中

每个程序员都必读的10篇文章

作为一名Java程序员和软件开发人员,那些每个程序员都应该知道的XXX的文章教会了我不少东西,它们提供了某个特定领域的一些实用的并且有深度的信息,这些东西通常很难找到.在我学习的过程中我读到过许多非常有用的文章,我把它们添加到了书签里,方便以后阅读或者引用.我个人认为所有开发人员都能从这些文章中受益,因此我也写了篇“每个程序员都应该了解的”文章,准备分享给你们.这是我的个人收藏.在这篇文章中,你会看到每个程序员都应该了解的一些经典文章,涵盖了内存,unicode,浮点数,网络,面向对象设计,时间

每个程序员都可能犯过的10个错误!(转载)

每个程序员都可能犯过的10个错误! 2015-03-04 深度操作系统 深度操作系统 深度操作系统 微信号 功能介绍 深度操作系统——个性.时尚.前卫.deepin,为您带来海量最新资讯,与您分享更多技巧. 点击上方↑↑“深度操作系统”↑↑ 可关注我们 本文列出的10个错误,并不局限于C#,Delphi,JavaScript等——几乎涵盖了所有的编程语言.是不是大吹大擂,欢迎各位品鉴…… 1.面向编译器写代码,而不是面向用户 当人们使用编译器创建自己的app时,在把自己的想法诉诸于机器代码的过程