下面三个流利的表达中哪一个与用户故事最匹配?

时间:2011-04-08 20:40:25

标签: c# coding-style fluent-interface

我正在研究一个流畅的框架,我希望从其他工程师那里获得一些反馈,以了解哪个流畅的表达与我的用户故事最为一致。

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

选项1:

Map<MyEvent>()
.To<MyView, MyController>(controller => controller.HandleMyEvent());

选项2:

Map<MyEvent>()
.To<MyView>()
.Via<MyController>(controller => controller.HandleMyEvent());

选项3:

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

2 个答案:

答案 0 :(得分:1)

没有系统的整个上下文,有点难以说。例如,我不知道UI容器的作用,为什么它仅在选项3中定义,它对于两个第一选项意味着什么。我假设有一些约定决定默认使用哪个UI容器。

选项1 看起来不像自然语句,并且连续两个通用参数使其比选项2&amp; 3。

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

选项2 是一个具有明确含义和简短单词的自然句子,我最喜欢它。如果只有一种方法可以覆盖默认的UI容器(使用像To<MainTabContainer>().In<MyView>()这样的东西),那肯定是最好的。

答案 1 :(得分:1)

  

“作为软件工程师使用流利   框架X,当框架的时候   事件聚合器发布一个事件,我   想要将此事件映射/路由到   我的控制器上的方法,然后显示   UI容器中的视图。“

这就是你希望你的代码说出来的声音:
将事件X发送到我的控制器并在UI容器中显示结果。
然后你将它提供给谷歌英语到c#翻译,你得到:

Route<MyEvent>().To<MyController>(c=>c.HandleMyEvent()).AndShowResultIn<MyUIContainer>();

在设置事件路由时指定视图和控制器。需要指定视图 - 控制器映射,但不能与设置事件路由的句子相同。所以单独做:

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

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