1

解决编程难题的实用方法指南 - praeclarum

 2 years ago
source link: https://www.jdon.com/60277
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

解决编程难题的实用方法指南 - praeclarum


我有时发现自己需要编写一些代码,但我不知道如何写。你有过这样的经历吗?以下是我在遇到困难时采取的步骤。这里没有巨大的启示,只是硬性规定的建议。

在输入任何代码之前,认真思考这个问题几个星期。

输入一个函数或写一个有你需要的输入和输出的类。

把函数分解成多个有明确目标的步骤。你可能不知道如何实现这些目标,但这是你未来的自己的问题。现在,你只是想写出高层次的算法。

为每一个步骤创建一个函数,并在其中抛出新的NotImplementedException()。它们的名字应该很长,而且要有解释,对它们的预期应该没有问题。如果你不知道怎么写,也没有关系。

现在,去实现这些函数中的几个。你知道它们并不都是困难的。有些甚至是有趣的! 建立起你的信心,实现那些简单的函数。取得进展的感觉很好,它可以让你大脑的分析部分在后台运行一会儿,而你则专注于琐碎的数字类型和文件IO。

是时候解决一些较难的函数了。就像你之前所做的那样,进入每一个问题,并将问题分解成若干步骤。你是对的,我要说的是。冲洗和重复。继续将这些困难的问题分解成步骤。把每个步骤变成一个有明确名称的函数。实施容易的问题。然后再把困难的问题分解成步骤。一次又一次地这样做。你会惊讶于你能真正完成多少事情。

很快(哈哈)你就会有一个80%完整的解决方案,只剩下几个讨厌的函数抛出NotImplemented。现在去搜索你最喜欢的软件包库,或代码库,或问答网站,或人工智能编程助手的实现。你很有可能不是第一个需要这个特定函数或部件的人。找到一些巨人,爬到他们上面,然后大叫 "我靠,世界上有很多聪明的程序员!"

好了,你已经搜遍了网络,但你仍然有几个讨厌的NotImplemented异常。现在是时候检查一下那些科学家了。在arXiv中输入你的问题陈述的每一个SEO变体。当然,其他人也曾研究过与你试图解决的问题相关的问题。他们很可能会提供一些见解或观点的转变,以帮助你将你的问题重塑为可解决的问题。就这样做。重新构思你的问题,把那些 "不执行 "的问题解决掉。

现在你有麻烦了。如果你仍然有一些没有实现的例外,而且没有巨人可以站在上面,也没有学者在这个特定的领域里纠缠不休,那么这一切就取决于你。大胆思考。跳出框框思考。你的职业生涯就靠它了。(开个玩笑,我希望。)也许洗澡可以帮助你思考?

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

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

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK