有什么通用的技术可以加快我的编码速度吗?

  杏耀资讯     |      2018-06-27

这个问答是两周一次的系列文章的一部分,强调了技术爱好者遇到的常见问题,并由80多个问答站点组成的免费社区网络Stack Exchange的用户回答。mcwise问:

我正在准备一场编程竞赛,我们必须用c++编写代码,这一切都是为了在短时间内生成工作代码。一个例子是使用宏来获得最少两个int,或者使用memset来初始化数组(但是我被告知在这里不应该使用任何一个)。

这就引出了这样一个问题:在实际工作中,有什么样的编码技术可以加快编码速度?

相关: 软件设计:快速构建还是良好构建?

回答:通过放慢速度来加快速度( 26票)。马頔回答:

快速生成工作代码的方法是放慢速度。采取非常小的步骤。确保你知道每一步都是为了什么。确保在每一步之后,您的代码都编译并运行。

最好使用测试驱动开发。写一个失败的测试。写足够的代码来通过测试。重构以使代码干净,确保它仍然通过所有测试。重复。

如果不这样做,那么很容易编写一大堆不起作用的代码。那么你要花很长时间才能弄清楚为什么它不起作用。

另请参阅: 学习测试驱动的开发...

回答:了解你的STL ( 13票)凯文·克林回答:

认真复习标准库,特别是STL算法。这将为您节省许多行代码和大量时间。赢得编程竞赛的关键在于尽可能高的编程水平。在c++中,没有外部库,这意味着STL调用而不是循环。

相关: 标准库中应该包括什么以及不应该包括什么?

回答:知道你的语言( 7票) DeadMG回答:

听起来你好像只知道C,根本不知道c++。这些问题很容易被具有语言基础工作知识的人回答。

> 一个例子是使用宏来获得最少两个int

,只需使用一个函数?[ STD : : min ]已经存在。

> 或使用memset初始化数组

[ STD : : array ]已初始化其内容。

> 在实际工作中使用什么样的编码技术?

第一步是了解您使用的语言。

我推荐一本书。我们只赠送值得阅读的书,而不是教C垃圾的书。

回答:老将建议( 5票) lccarrasco回答:

我定期参加ACM比赛。希望这些技巧中的一些能帮助您:

正如其他人所说,熟悉语言,在c++,尤其是STL中,它既有您想要使用的通用功能(二进制搜索、最小、最大),又有强大的数据结构来节省您的时间(堆栈以避免直接递归,BFS队列,甚至Dijkstra的priority _ queueue,如果您喜欢这样的话)。如果是数学/动态规划/图论等,则确定问题的类别。问问自己对它有多熟悉。完成此操作后,您应该决定解决问题的顺序;这与下一点密切相关...在打字之前你要完全理解这个问题。解决正确的问题。在我第一次参加比赛时,我想如果我不打字,那是在浪费时间。后来我发现这是一个错误。不要认为评论是浪费时间。至少在 sliver code中,您不想逐行调试以查看错误(这是真正的浪费时间)。价值清晰。玩得开心。你认为你知道如何在比赛或职业环境中更快地编码吗?不同意上面的意见吗?将您的专业知识带到Stack Exchange的原始帖子中,Stack Exchange是一个由80多个站点组成的网络,您可以在其中交换关于Web应用程序、骑自行车、科学怀疑以及(几乎)介于二者之间的所有主题的专业知识。