当前位置: 首页 > 科技观察

程序员最重要的技能:知道什么时候不该写代码

时间:2023-03-17 23:34:56 科技观察

本文指出,大多数程序员容易犯的错误是因为编程的兴奋不知道什么时候该对编码说“不”。程序员需要知道什么时候不需要编码并从项目中删除所有不必要的代码,这将使工作更容易并使软件持续更长时间。对什么说不学会说不是一个好的开始。但对什么说“不”,什么时候说“不”合适呢?这确实是大多数程序员,甚至是那些高级程序员都容易混淆的重要一点。作为一名程序员,编写代码无疑是你职业生涯中最重要的部分。在您的编程生涯中,您将不可避免地处理对不同类型代码的各种请求。每个请求都可能迫使您做出一些艰难的决定。这些看起来都很正常,似乎没有什么不妥。毕竟,这就是每个人对您的期望:作为一名程序员,您编写代码。然而,这里有一个问题:您应该编写要求您编写的所有代码吗?这个问题将我们带到了程序员可以学习的最重要的技能:知道什么时候不应该编码可能是程序员可以学习的最重要的技能。——《可读代码的艺术》我完全同意上面这句话。为什么是这样?编程是一门解决问题的艺术。因此,很自然地,程序员成为了问题解决者。作为程序员,当我们面前有一个新问题需要解决,或者出于任何其他原因需要编写一行代码时,我们会因为一种使命感而感到兴奋。有这种兴奋是完全正常的,毕竟我们是程序员,我们就是喜欢写代码。然而,对编写代码过于兴奋会使我们盲目。这种情绪会使我们对重要事实视而不见,这些事实可能会导致我们将来必须解决的更大问题。那么,我们容易忽视的重要事实是什么?你写的每一行代码都是:其他程序员必须阅读和理解的代码必须测试和调试的代码给软件添加错误的代码将来可能引入新错误的代码正如RichSkrenta所写,代码是我们的敌人:代码是邪恶的。代码腐烂。代码需要定期维护。它们总是包含等待被发现的错误。而新特性的加入总是意味着旧代码要进行调整。代码量越大,bug隐藏的地方就越多,检查或编译代码的时间也就越长,新员工了解系统的时间也就越长。这也意味着如果你需要重构代码,你需要移动更多的东西。此外,更多的代码通常意味着程序的灵活性和功能性较低。乍一看,这似乎违反直觉,但很多时候,一个简单而优雅的解决方案将比平庸的程序员编写的冗长乏味的代码运行得更快,并且在功能上更通用。代码是由程序员编写的。所以写更多的代码往往需要更多的程序员。程序员之间的通信成本以n2的速度增加。然后,将这些程序员编写的所有代码都添加到系统中。在扩展系统功能的同时,也会增加整个软件项目的运行成本。我说的是真的,不是吗?因此,以他们的生产力和编程思维方式启发您的伟大程序员是那些知道何时说“不”以及何时不编程的人。那种易于维护、寿命长、不断帮助用户实现功能的软件,不应该包含任何不必要的代码行。最好的代码是根本没有代码,而最高效的程序员知道什么时候不要编码。你怎么知道什么时候不应该编码?当您投入到一个项目中时,很自然地会感到兴奋,因为您想要实现所有这些很酷的功能。但是程序员往往会高估他们的项目真正需要的特性数量。结果是系统具有许多未完成或未使用的功能,甚至是使应用程序过于复杂的功能。你应该首先了解你的项目需要什么来避免犯这个错误。了解软件的用途及其核心定义是了解何时不应编写代码的第一步。请允许我举个例子。假设您的软件只有一个用途:管理电子邮件。为此,发送和接收电子邮件是该软件项目的两个基本功能。你不应该期望这个软件也能管理你的待办事项列表,不是吗?因此,您应该拒绝与此核心定义无关的任何可能的功能请求。在这些时候,您可以确定自己了解什么时候不应该编写代码。永远不要随意扩展软件的用途。一旦您知道什么对您的项目至关重要,您就会在下次评估所有可能的代码请求时意识到这一点。您将清楚地知道编写代码需要什么。该系统应实现哪些功能?什么样的代码值得写?然后,您可以勇敢地质疑一切,因为您完全了解不必要的代码如何拖累您的项目。知道什么时候不应该编码可以让你的代码库更小。当你开始一个新项目时,最初系统中只有两三个源文件。一切都显得那么简单明了。编译和运行代码只需要几秒钟。此时,您确切地知道在哪里可以找到您想要的东西。然后,随着项目的增长,越来越多的源文件将填满您的目录。这些代码文件中的每一个都可以轻松包含数百行代码。为了更好地组织这段代码,您很快就需要设置多个目录。记住哪些函数调用其他函数变得比以前更难,跟踪错误也需要更多的工作。管理这个项目越来越难,所以需要更多的程序员帮忙。然后,通信开销随着程序员的数量急剧增加。你的项目会越来越慢。最后,这个项目变得非常庞大。添加新功能变得很痛苦。因为即使是很小的更改也可能需要数小时。修复当前的错误总是会引入新的错误。您的项目开始未能按时完成……现在,这个项目对您来说是一种折磨。为什么会变成这样?这都是因为你不明白什么时候不应该编码。所以你毫不犹豫地对每一个可能的功能请求说“是”。你是瞎。编写不必要的新代码会让你忽略软件最本质的核心内容。听起来像是恐怖电影里的场景,不是吗?但如果你对所有事情都说“是”,这种恐怖就会发生。您需要知道何时不需要编码并从项目中删除所有不必要的代码。这将使您的工作更轻松,并使您的软件使用寿命更长。我最有成效的一天是扔掉了1000行代码。—KenThompson我知道很难弄清楚什么时候不需要编写代码。即使对于高级程序员来说也不容易。也许,我在这篇文章中写的东西对于初学者来说很难理解,但我认为这篇文章的叙述方式仍然可以让人理解其中的要点。我了解一些程序员可能刚刚开始您的编程生涯,并希望在编码领域有所作为。你再兴奋不过了。这没有错。作为一名软件从业者,我希望你永远不会失去兴奋,但请不要忽视重要的事实。我们需要从错误中吸取教训。你和其他人一样,会犯错误并从错误中吸取教训。但如果你能从我们的经验中学习,至少你可以事半功倍。继续编码,但要知道什么时候需要对编码说“不”。