12

关于D-Specific Design Patterns举行了一个非常有趣的会议,在 D 社区中,一些人认为这可能是一本讨论有效编码技术的的起点。其他人认为现在还为时过早,因为没有多少人有很多经验,这样一本书的作者会对有效性的概念有一些偏见/个人的欣赏。SO 是一种更具交互性的媒体(有其局限性)。因此,等待“Effective D”的出现,如果我们能分享一些(致命的)建议/技术/模式以使 D 代码看起来更好,那就太好了。我认为如果答案会更清楚:

  • 暴露一种独特的技术
  • 本质上是一段注释代码
  • (如果太大)只是代码的链接(公共要点...)
4

2 回答 2

5

我的博客上有一些 D Tip 帖子( 1 2 3 )。

这是一个:使用 TypeTuple 进行测试


在测试一个函数时,使用一系列不同的输入来测试它通常是一个好主意。为此,您可以轻松地在输入值数组上使用 for 循环,但是如果您的输入是一个类型,就像模板代码中经常出现的那样呢?

D 编程语言允许你迭代一个 TypeTuple,所以你需要做的就是声明一个你想要测试的所有类型的元组,并以正常的方式迭代它们:

import std.typetuple;
alias TypeTuple!(int, long, double) Types;
foreach (T; Types)
    test!T();

你可能想知道这编译成什么。毕竟,循环的主体随着 T 的变化而变化,因此生成的代码也必须在每次迭代中变化。编译器如何处理这个?

答案是循环完全展开。上面的代码实际上与以下代码相同:

test!int();
test!long();
test!double();

出于这个原因,您可能需要密切注意 TypeTuples 的大小,以避免代码膨胀。

于 2013-06-16T19:34:29.200 回答
1

在https://p0nce.github.io/d-idioms/下可以找到一组 d-idioms/patterns

于 2016-07-10T16:06:18.753 回答