发布于 2026-01-06 3 阅读
0

编写代码前请三思

编写代码前请三思

编写代码前要三思。我给遇到的每一位初级工程师都这样建议。然而,大多数年轻的开发人员很难做到这一点。

花时间放慢速度思考,会让你成为更高效的工程师、更好的故障排除员和问题解决者。

让我们来看三个相关的场景:求职面试、bug修复和功能开发。


求职面试

在白板面试中,一个常见的错误是在完全理解问题之前就开始编写代码。面试官给出的问题描述很可能有意或无意地省略了很多细节。

例如,你可以做出哪些假设?你的限制条件是什么?你能假设所有输入都有效吗?还是需要防范无效参数?数据集是否足够小,可以采用穷举法?还是需要针对特定​​的空间或时间限制优化算法?不断提问,直到你完全理解问题为止。

接下来,你应该考虑哪些测试用例?在编码练习中,通常不需要编写完整的功能性测试,但最好记下你想测试的输入类型以及每种输入的预期输出。例如,如果你要编写一个判断字符串是否为回文的函数,你可能至少需要以下几种测试输入:racecar`a`、 ` b`、`c`、`d`、noon` e` 。有了这五个测试用例,你就可以考虑你的代码应该如何处理长度为偶数或奇数的回文(`a`和 `b` )、长度为偶数或奇数但不是回文的字符串(` a` 和`b`)以及无效输入(` c`)。我相信你还能想到其他需要考虑的测试用例。dogmoon42racecarnoondogmoon42

最后,您能否编写一些伪代码来从宏观层面验证您的方法?在深入研究实际代码的细节之前,最好先思考一下您将如何解决这个问题,以便及早发现方法中的问题。


漏洞修复

遇到问题时,经验不足的开发人员往往会惊慌失措。他们会疯狂地尝试各种方法,试图解决问题。这是个错误的做法。应该停下来,花时间仔细思考问题所在。

你知道代码正常运行和出现问题之间有哪些变化吗?如果你升级了某个依赖项的版本,两个版本之间的变更日志是什么样的?如果代码在你的机器上运行正常,但在测试环境中却不行,这两个环境之间有什么不同?如果昨天的版本运行良好,但今天的版本存在错误,那么今天的版本中包含了哪些可能导致问题的提交?如果你不知道从哪里开始查找问题的根本原因,你可以向谁咨询,他们或许能提供一些见解?

即使只是花五分钟时间思考一下问题,然后再开始尝试解决问题,从长远来看,也可能为你节省几个小时的时间。


功能开发

开发新功能应该从制定计划开始。为了恰当地满足用户需求,需要满足哪些验收标准?您是否编写了测试用例,无论是实际可执行的代码还是可供参考的要点?如果设计 API 端点,其输入和输出应该是什么?如果处理复杂数据,哪种数据结构最适合表示这些数据?

在开始编写代码之前,请花时间仔细设计代码。你可能急于开始编码,但花时间规划可以避免日后痛苦的重写。


结论

初级工程师常常在没有完全理解问题或仔细思考可能的解决方案之前就直接开始编写代码。所以,在你开始疯狂敲击键盘之前——停下来。先思考,再编写代码。

文章来源:https://dev.to/thawkin3/think-before-you-code-476a