如今,Fluent API 非常普遍。最近,我几乎在我使用的每个系统中都发现了它们。大多数情况下,它们增强了可读性,但有时它们将我束缚在不灵活的规范中,让我几乎无法理解他们构建的规范的运行时行为。关于如何创建良好的流畅 API 是否达成共识?使用流畅的 API 表示结构或规范的最佳方式是什么?
我最近在 NServiceBus 中注意到 Fluent API 的这个新变体配置类:
class EndpointConfig : IConfigureThisEndpoint, AsA_Server { }
它使用多个接口(interface)作为一种线性流畅的接口(interface)。我喜欢它,因为当我只想表示简单的需求时,它不会给我带来额外代码和上下文的沉重负担。在简单的情况下就足够了。不过,我不认为它会扩展到复杂的规范。您如何看待接口(interface)的这种用途?
您在 C# 中使用了哪些其他新习语?你在哪里使用它们?他们的长处是什么?你不会在哪里使用它们?另外,您如何衡量您正在考虑使用的成语的强度?
最佳答案
我过去常常避免在指示不同行为的方法上使用 bool 参数,例如我愿意接受
int ExpensiveComputation(bool useDiskCache)
更喜欢把它变成
int ExpensiveComputation(CacheType.DiskCache)
我最喜欢这个,因为当你调用 ExpensiveComputation(true)
时,在不了解 ExpensiveComputation
的情况下不清楚 true
的含义>,而 ExpensiveComputation(CacheType.DiskCache)
给了你一个好主意。
但是,对于命名参数,我发现使用第一个参数通常是可以接受的,并这样调用它:ExpensiveComputation(useDiskCache: true)
所以这是我最近为自己发明的一个习惯用法。
关于c# - C# 中的新样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3382088/