超越教程:解决问题的 8 个技巧
现在,你已经概述了代码并编写了伪代码。是时候编写实际代码了!以下是我编写独立代码并提高问题解决能力的建议。
如何使用教程
我知道这个系列的标题是“超越以往的教程”,但如果你还没有在项目中用到你该用到的技术,那就做一个教程吧!重点是理解教程的概念——阅读原文,而不是仅仅复制粘贴代码片段!你以后可以随时回过头来学习语法。另外,一定要了解自己的学习风格,找到适合自己的教程。
但是,不要陷入教程的循环中。先学一个对你有意义的,然后再去构建一些东西。即使你忘记了细节,你仍然可以参考那个教程和谷歌搜索,但如果你在概念上理解之后再去实践,你更有可能理解和记住这项技术。
分解问题
我想再次强调,你应该尽可能精简伪代码中的步骤——功能也一样。当你写待办事项清单时,列出一些小事会很有帮助,这样你就能快速完成一些任务来激励自己。写代码时也是如此。步骤会更容易管理,你在工作时也会更有动力。你应该把大问题分解成尽可能小的问题,然后逐个解决。你应该让这些子问题尽可能简单易解。你应该把时间花在这上面,而不是写最初的实现代码!
拼图游戏通常先解外层,然后再解部分。你不是简单地把随机的碎片拼凑起来,看看能不能拼好。代码也一样!要有条理地构建代码,而不是凭空猜测——要仔细思考整个功能或拼图块的解决方案,而不是漫无目的地写代码。
借鉴类似问题
解决问题时,首先要问自己的问题是:我以前见过这个问题吗?或者我见过其他有类似模式的问题吗?如果见过,那么可能存在差异,但你仍然可以应用之前的解决方案,然后进行调整。或者,这是你以前见过的问题的组合吗?也请仔细思考一下!
运用你已有的知识,没有哪个问题是完全独特的。你基本上是在组合一套类似的工具来解决任何问题——循环、函数、类、条件、数学和变量。是的,大多数语言中也有一些更高级的东西可以使用,但基本上,你使用类似的概念和工具来解决大多数编程问题。别忘了这一点!
相信自己
相信自己,先尝试独立编写代码——你已经有伪代码,并且已经完成了教程。在开始寻找答案之前,相信你的直觉,并编写一些代码。然后,如果需要,可以进行方法论上的调试。或者思考为什么它没有按预期工作。不要立即跳回教程、谷歌或同事那里——先自己尝试一下。这将对你的学习过程产生最大的益处。
有效地谷歌
谷歌搜索帮助完全没问题,而且作为程序员你也会经常这么做。事实上,熟练掌握它非常重要,我也会不断练习。但有时它也有害。我经常看到新手程序员在谷歌上搜索整个问题,而不是他们正在解决的那个小问题或bug。谷歌搜索“Python中的反向字符串”可以找到你想要的答案——但你不会亲自解决任何问题,也不会从中获益太多。相反,如果你在尝试时收到错误消息,谷歌一下!或者,如果你忘记了for循环的语法,也去查一下。
事实上,我甚至建议你一两周别用谷歌,直接用它解决一些代码难题。或许可以给自己做一张包含语言基础知识的速查表。仔细阅读错误信息,十有八九,你只需要仔细阅读就能弄清楚到底发生了什么!
另外,不要总是立即谷歌搜索或寻求他人帮助。相反,要相信自己。尝试几种不同的方法。再次阅读代码,确保其看起来正确无误。使用调试器或打印语句逐步调试错误。
快速失败
编写代码时,你希望快速失败。与其花费一个月时间在错误的方向上开发某个功能,或者引入 100 个 bug 后再一次性调试它们,不如尽快发现代码何时出现问题。自动化测试可以帮你做到这一点——如果你的输入与预期输出不匹配,你就能知道。此外,持续运行代码也很有帮助。添加几行代码后,再次运行程序。这样一来,调试这几行代码比调试几百行代码要容易得多。
确保提供一些涵盖极端情况的示例输入,并确保你的代码对于所有这些输入都能按预期工作。通常,你会在测试中包含这些内容,但即使你刚刚开始,你仍然需要用不同的值测试你的函数或代码,并确保它仍然按预期工作!
休息一下
有时候,写代码会让人感到沮丧。你会遇到一个又一个的 bug,或者开始怀疑自己。首先,要知道这是编写代码的正常现象,各个级别的程序员都会遇到这种情况。如果你感到沮丧,通常应该休息一下。这种沮丧可能不会帮助你更快地调试,只会让你更沮丧。所以,暂时离开一会儿。带你的狗去散散步,锻炼一下,或者离开电脑一会儿做点别的事情。当你回来的时候,你的头脑可能会变得更清醒!
实践
总而言之,你能做的最好的事情就是多练习。每天做一个代码挑战,抽出一些时间解决比你目前正在解决的问题更难的问题,或者开发一个超出你当前舒适区的应用程序。通过尝试困难的事情,你将扩展你的技能。给自己设定合理的期望,如果遇到困难,尽量不要太气馁。但是,挑战自己才是你成长最快的方式。
最好的学习方法是重复——你不需要一遍又一遍地创建相同的应用程序,但解决一堆代码难题或构建一些练习应用程序会对你很有帮助。你也应该把学习间隔开一些。与其每天解决20个难题,不如每天解决几个难题更有价值。中间休息一下实际上对你有帮助,而且在一段时间后回忆信息在学习过程中也很有价值。
结论
希望这些技巧能帮到你解决问题。本系列的后续几篇文章将探讨调试、高效谷歌搜索、重构以及测试驱动开发。希望这篇文章能给你信心和所需的工具,让你能够解决更具挑战性的问题。所以,走出你的舒适区,开始解决问题吧!
文章来源:https://dev.to/aspittel/moving-past-tutorials-8-tips-for-problem-solving-3e0p