Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 下面三个流利的表达中,哪一个最符合用户故事?_C#_Coding Style_Fluent Interface - Fatal编程技术网

C# 下面三个流利的表达中,哪一个最符合用户故事?

C# 下面三个流利的表达中,哪一个最符合用户故事?,c#,coding-style,fluent-interface,C#,Coding Style,Fluent Interface,我正在开发一个fluent框架,我希望从其他工程师那里得到一些反馈,哪种fluent表达式最符合我的用户故事 用户故事:“作为使用fluent framework X的软件工程师,当框架的事件聚合器发布事件时,我希望将此事件映射/路由到控制器上的方法,然后在UI容器中显示视图。” 备选案文1: Map<MyEvent>() .To<MyView, MyController>(controller => controller.HandleMyEvent()); Ma

我正在开发一个fluent框架,我希望从其他工程师那里得到一些反馈,哪种fluent表达式最符合我的用户故事

用户故事:“作为使用fluent framework X的软件工程师,当框架的事件聚合器发布事件时,我希望将此事件映射/路由到控制器上的方法,然后在UI容器中显示视图。”

备选案文1:

Map<MyEvent>()
.To<MyView, MyController>(controller => controller.HandleMyEvent());
Map()
.To(controller=>controller.HandleMyEvent());
备选案文2:

Map<MyEvent>()
.To<MyView>()
.Via<MyController>(controller => controller.HandleMyEvent());
Map()
.至()
.Via(controller=>controller.HandleMyEvent());
备选案文3:

Map<MyEvent>()
.To<MyController>(controller => controller.HandleMyEvent())
.Show<MyView>()
.InContainer<MainTabContainer>();
Map()
.To(controller=>controller.HandleMyEvent())
.Show()
.InContainer();

如果没有整个系统的上下文,有点难说。例如,我不知道UI容器的角色,为什么它只在选项3中定义,以及它对前两个选项意味着什么。我假设有某种约定决定默认使用哪个UI容器

选项1看起来不像自然句,一行中的两个通用参数使其可读性不如选项2和3

选项3包含两句话,
Show
是第二个动词。我喜欢每个链有一句话的API,但这可能只是我个人的偏好

选项2是一个自然的句子,意思清晰,单词简短,我最喜欢它。如果只有一种方法可以覆盖默认的UI容器(使用类似于
to().In()
)的东西),那么它肯定是最好的

“作为一名使用fluent的软件工程师 框架X,当框架 事件聚合器发布事件,即 要将此事件映射/路由到 方法,然后显示 UI容器中的视图。“

下面是您希望代码显示的内容:
将事件X发送到我的控制器,并在UI容器中显示结果。
然后你将其输入谷歌英语到c翻译,你会得到:

Route<MyEvent>().To<MyController>(c=>c.HandleMyEvent()).AndShowResultIn<MyUIContainer>();
Route().To(c=>c.HandleMyEvent())和showResultin();
在设置事件路由时同时指定视图和控制器。需要指定视图控制器映射,但与设置事件路由不同。所以要分开做:

Bind<MyView>().To<MyController>();
Bind().To();

或者将控制器绑定到视图,然后将事件路由到视图,而不是控制器,我不这么认为。坚持通过控制器路由事件。

很难为您提供整个系统的上下文。在当前系统中无法指定目标容器(我知道),当前框架根据控制器的HandleMyEvent返回的内容连续显示视图。选项1和2存在,它们伤害了我的大脑。“用户故事”是我必须要做的,我真的很好奇选项3是否最能描述用户故事。谢谢你的建议。。。我喜欢它“Route().To(c=>c.HandleMyEvent())。和showResultin();”