1。技术只是解决问题的选择,而不是问题的根源。我们可以掌握最新的JavaScript框架咳咳,Angular的IoC容器技术或者一些我们为编程语言甚至操作系统而欢欣鼓舞,但这些东西从根本上来说并不是我们作为程序员用来解决问题的——它们只是用来帮助我们的工具而已解决问题。我们必须非常小心,不要沉迷于恰好受到喜爱或恰好流行的特定技术。否则,我们就会进入这样一个怪圈:把自己掌握的技术比作一把锤子,在思考问题的时候,我们自然会把所有的问题想象成一把锤子就能解决的钉子。2、聪明是清晰代码的大敌在编写代码时,我们应该力求使代码清晰易懂。虽然这种说法并不总是正确的,但总的来说,聪明是清晰代码的敌人。原来,当我们写出一段自认为很棒的代码时,这段代码在别人眼中可能是一头雾水。所以在编写一段智能高效的代码时,有必要牢记这一原则。如果你对如何编写干净清晰的代码感兴趣,我强烈推荐你阅读RobertC.Martin的书《The Clean Coder: A Code of Conduct for Professional Programmers》。3、尽量少写代码这个说法似乎有些矛盾。程序员的工作不就是写代码吗?好吧,是的,但也不是。我们的工作需要我们编写代码,但是在尝试解决问题时我们应该尽量少写代码。这并不意味着我们需要尝试使代码尽可能紧凑或对所有变量使用单个字母。这意味着我们应该尝试使用更精简的算法来实现所需的功能。通常,在我们的代码中添加各种很酷的功能是非常诱人的,这些功能还可以使我们的代码看起来更“健壮”和“灵活”以处理不同类型的情况。然而,很多时候,我们错误地尝试了更多可能有用的功能或防止将来可能存在的问题。这些额外的代码可能没有任何价值,但可能会造成更大的危害。因为代码越多,出现未知错误的机会就越多,代码的维护也越麻烦。优秀的软件工程师编写尽可能少的代码。伟大的软件工程师尽可能多地删除代码。4.注释是代码表达的最佳选择BobMartin曾经说过:“当你在为一段代码写注释时,你应该反省自己的表达能力差。“这并不是说我们以后不应该写注释了。但大多数情况下这种情况是可以避免的,你可以选择用更好的命名方式来代替。只有在使用命名不能表达清楚的目的时一个方法或者变量,注释是最好的选择。其实在代码中表达一些不能轻易表达的东西才是注释的真正作用。比如注释可以告诉你代码中那些奇怪的东西,动作命令则不是一个错误,但有意为之,因为底层操作系统中存在错误。虽然许多注释通常很有用,但它们有误导的风险。在其他代码更新之后,与某些预更新代码相关的注释通常不会相同update,这使得一些注释非常危险,它们很可能将你引向错误的方向。你是否检查过每条注释是否与代码密切相关?你确定代码按照注释所说的那样做吗?如果你在做这,评论的重点是什么?如果你不这样做,你怎么知道评论说的是真的?所以说,评论的作用并没有宣传的那么好,这种东西不应该被滥用。5.在写代码之前,你应该知道你的代码要做什么。这似乎是理所当然的,但实际情况并非如此。在现实生活中,有多少次您在没有完全理解您的代码将要做什么的情况下开始编程?反正对我来说是无数,所以我把Thisisdocumented随时提醒我。测试驱动开发(TDD)的实践在这里可以帮到你,因为你需要在编写代码之前知道代码将被用在什么地方,尽管这仍然不能阻止你创建错误的东西,但它仍然非常重要。所以当你充分理解了需要构建的需求和功能之后,再开始编程。#p#6。在提交完成的代码之前自己测试代码。不要把代码丢给QA,然后坐等消息。这浪费了参与处理不必要的错误和问题的每个人的时间。在报告编程工作完成之前,您应该花几分钟运行测试场景来检查自己。当然,在你把代码提交给QA之前,并不是每一个bug都会被发现,但至少你可以防止我们每个人都可能犯的一些愚蠢的错误。许多软件开发人员认为测试代码只是QA人员的工作。这不是真的。保持质量是我们每个人的责任。7.每天学点新东西。有句名言“刀不磨快,人不学则退”。这句话很有道理,因为无论你是否获得新知识,你每天都会忘记一些以前的事情。每天学习新东西不会占用你很多时间。尝试每天阅读15分钟,您每天都会看到一点点进步,并且在未来的某个时候,会有很大的进步。因此,要想在未来收获丰厚的回报,就必须现在就开始投资。此外,随着当今日新月异的技术,如果您不提高技能和学习新事物,您很快就会落伍。8.写代码应该很有趣这是真的。也许,你进入这个行业只是因为它的薪水高。选择一份薪水高的工作并没有错,但还有更好的选择,比如医生或律师。其实很多人选择做软件开发还有一个原因,就是喜欢写代码。当你被工作压力所累时,不要忘记自己选择这个职业的初衷。编写代码会很有趣。这些年,很多人可能已经忘记了这一点,所以从现在开始,找回以前的热情,从身边的项目做起,把自己的观念和意识转化为之前开始学习编程的那些。那一刻。9.你不需要什么都知道。虽然你学到了很多东西,但仍有很多东西是你不知道的。意识到这一点很重要,因为它会驱使你学得越来越多。如果你不知道一个问题的所有答案也没关系,如果你有什么不明白并说出来并寻求帮助也没关系。在许多情况下,您可以选择使用所学知识-相信我,这就是我做到这一点的方式。我的观点是,不要试图学习一切,因为这是一项不可能完成的任务。您需要关注和掌握的是可以帮助您快速学习的技术。10.最佳实践取决于环境。测试驱动开发最好的方法是先写测试代码?我们应该保持结对编程的习惯吗?不使用IoC容器会不会比我差?所有这些问题的答案都是“看情况”。这要看实际情况。人们试图通过喉咙等方式将***的做法传给你,他们会告诉你他们通常是这样应用的。所以,你也应该——实际上不是这样。当写代码的时候,我也借鉴了很多人的成功经验。但是,这些参考都是有条件的。知识是死的,人是活的。最好的实践需要由环境来决定。11.力求简单化。所有问题都可以被分解。而最优雅的解决方案通常是非常简单的。但要使其简单化并不容易,它需要大量的工作。例如,本文的目的是从复杂的软件开发工作和日常生活中提取经验,并通过归纳的方式更简洁的呈现给大家,这可不是一件容易的事情,解决问题的时候可以先找一个比较复杂笨拙的方法。在此基础上努力改进和完善,在正确的基础上使之容易。这需要花费大量的时间和精力,人类不正是因为这个过程才慢慢变聪明的吗?
