Published on

解决困难问题的实用指南

Authors

原文地址:Practical Guide to Solving Hard Problems

我有时发现自己需要写一些代码,但我不知道如何写。你有过这样的经历吗?以下是我在遇到困难时采取的步骤。这里没有什么大发现,只有来之不易的建议。

  1. 在输入任何代码之前,认真思考这个问题几个星期
  2. 确定 function 或者 class 的 input 和 output 定义
  3. 将功能分解成多个步骤,并有明确的目标。你可能不知道如何实现这些目标,但可以先规划抽象出实现方法
  4. 写出详细的伪代码步骤,不知道具体实现也没有关系
  5. 尝试实现一些简单的步骤,并在脑中演算实现,建立自己的信心
  6. 尝试实现困难的步骤,将困难的部分按照前面的步骤再进行细分实现,你会对自己的工作进度感到惊讶
  7. 在你实现 80% 左右的实现之后,尝试找现成的实现方案帮助实现(这个步骤个人会放在第0步就实践)
  8. 对于特别困难没有思路的问题,在网络上搜寻相关的问题,对比学习别人的实现方案,帮助完善自己的实现
  9. 在寻找帮助的前提下还是没有任何人有相关实践,尝试休息放空自己,说不好什么时候就来灵感了,比如洗澡的时候

我认为这些是所有程序员都会采取的步骤,但有时把它说出来也是不错的。

我特别重视功能分解。函数是一个强大的抽象,不仅仅是为了少写代码,也是为了思考问题。

请不要误解我对 "函数 "一词的使用,认为它只是指函数式程序员喜欢的那些东西。我指的是任何数据转化器:从低级的 lambdas 到带有状态的 IO 处理的单体对象。

谢谢你的阅读!现在去解决那些困难的问题吧!