嗯,这是大多数程序员(甚至是资深程序员)很容易混淆的重要一点。
作为一名程序员,编写代码是你工作中最大的一部分。在您的编程生命周期中,您将不得不处理不同类型的代码请求。每个请求都会迫使你做出艰难的决定。这一切都很好。这没什么错。作为一名程序员,这是每个人对你的期望:写代码。然而,这里有一个问题:您应该编写所有请求您的代码吗?
这个问题给我们带来了程序员可以学习的最重要的技能:
知道什么时候不写代码可能是程序员可以学习的最重要的技能。可读代码的艺术
我完全同意。这是为什么呢?
编程是解决问题的艺术。因此,程序员自然是问题解决者。作为程序员,当我们有一个新的问题在我们面前准备被解决或任何其他原因需要我们写代码行,我们会感到兴奋。
这没关系,因为我们是程序员。我们喜欢写代码。
然而,对编写代码过于兴奋会使我们失明。它使我们忽视了一些重要的事实,这些事实会导致我们将来不得不处理的更大的问题。
那么,我们往往会忽略哪些重要的事实呢?
你写的每一行代码是:
其他程序员必须阅读和理解的代码
需要测试和调试的代码
会增加软件缺陷的代码
可能在将来引入新的错误的代码
正如Rich Skrenta所写的,代码是我们的敌人:
代码是不好的。它腐烂。它需要定期维护。它有需要被发现的bug。新的特性意味着旧的代码必须被修改。
您拥有的代码越多,可以隐藏bug的地方就越多。签出或编译花费的时间越长。新员工理解你的系统所花的时间就越长。如果你必须重构,有更多的东西需要移动。
此外,更多的代码通常意味着更少的灵活性和功能。这是违反直觉的,但在很多时候,一个简单、优雅的解决方案比一个不那么有才能的程序员编写的冗长而混乱的代码更快、更通用。
代码由工程师产生。编写更多的代码需要更多的工程师。工程师需要支付通信费用,而他们为系统添加的所有代码,在扩展系统功能的同时,也增加了一篮子成本。
这是真的,不是吗?那些用他们的生产力和编码思维来激励你的程序员是那些知道什么时候应该说不,什么时候不应该编码的人。易于维护、持续时间长并持续帮助用户的软件是不包含任何不必要代码行的软件。
最好的代码是根本不写代码,而最高效的程序员是知道什么时候不写代码的人。
你怎么知道什么时候不写代码?
当你在做一个项目的时候,想到所有你想要实现的很酷的特性,你自然会感到兴奋。但是程序员倾向于高估他们的项目需要多少特性。许多特性未完成或未使用,或者使应用程序过于复杂。你应该知道什么对你的项目是最重要的,以避免犯这种错误。
理解你的软件的目的和它的核心定义是知道什么时候不去编码的第一步。
让我给你举个例子。假设你的软件只有一个用途:管理电子邮件。因此,收发邮件是项目的两个基本功能。你不能指望软件也能管理你的待办事项清单,对吧?
因此,您应该对与此定义无关的任何可能的特性请求说不。此时,您可以完全确定您知道什么时候不需要编写代码。
永远不要扩展软件的用途。
一旦您知道了对您的项目最重要的是什么,您就会在下次评估可能的代码请求时意识到这一点。您将确切地知道编写代码的需求。应该实现哪些特性?哪些代码值得编写?你会质疑一切