程序员的时间是宝贵的。这种认识应该塑造我们的软件开发方法,将我们的努力集中在真正有助于改进我们的代码和软件生态系统的任务上。
有什么关系呢?
- 1.寻找错误。我喜欢添加测试,然后添加更多测试。构建测试所花费的时间应该与构建软件所花费的时间成比例。模糊测试也非常有用。我喜欢使用消毒剂。
- 修复错误。错误会破坏用户体验、损害功能,甚至可能引入安全漏洞。解决错误对于建立对软件的信任至关重要。
- 文件很重要。未充分记录的代码很神秘,可能会引发不必要的意外。缺乏文档还可能损害与用户的关系。
- 添加新功能。软件的创新和增长来自于引入新功能。 功能应该是用户可见的:“内部”功能通常是浪费的。
- 提高绩效。性能增强就是让软件运行得更快、使用更少的资源或更有效地处理更大的工作负载。这会显着影响用户满意度,特别是在速度至关重要的应用程序中。提高性能并不是要找出瓶颈……而是一个持续的过程。您需要良好的设计和多轮优化。您通常可以持续多年地提高性能。
然而,我认为我们的时间在某些领域没有得到充分利用:
- 修补代码以消除默认禁用的静态分析器的误报。编译 C++ 代码时 Visual Studio 下的 4 级警告就是一个很好的例子,但晦涩难懂的 GCC 和 clang 警告也是如此。静态分析器是可以在不执行程序的情况下扫描代码以查找潜在问题的工具。 然而,当这些工具过于严格或配置错误时,它们可能会报告大量误报;实际上不是问题的问题。在我看来,仅仅为了平息这些错误警报而花费时间修补代码是一种浪费。它转移了人们对更有影响力的工作的注意力。这并不是说静态分析没有好处;而是说静态分析没有好处。如果使用得当,可以节省大量时间和资源。但解决非问题所需的努力很快就会适得其反。
- 漫无目的的重构也常常是浪费的。重命名类,移动代码,使其看起来“漂亮”。我不反对偶尔进行清洁……但这不应该浪费时间。为了重构而重构可能会成为不修复错误或不提高性能的借口。这是一项轻松的工作,但往往没有影响力。
在我们力求代码完美的同时,我们还必须对我们最宝贵的资源(程序员的时间)投入到哪里有策略。让我们优先考虑软件开发宏伟计划中真正重要的事情。
原文: https://lemire.me/blog/2025/01/30/programmer-time-and-the-pitfalls-of-false-positives/