【发布时间】:2015-10-14 00:32:03
【问题描述】:
主要问题
流畅的 C# 方法是否有命名约定?我希望读者在看到方法的名称时知道方法遵循流畅的设计模式。
背景
我即将编写一个类类型,它使用许多流畅的方法来构建静态工厂式构造函数。例如,
Person bob = Person.New()
.Name("Bob")
.Age(30)
.Location("USA")
.MakeAwesome()
.PutACatOnHisHeadJustToScrewWithHim()
.MakeIntoStackOverflowExample();
我了解可选参数将是此过程的一种方法。例如,它可能是
Person bob = Person.New(
name : "Bob"
, age : 30
, location : "USA"
, isAwesome : true
, hasACatOnHisHeadJustToScrewWithHim : true
, isAStackOverflowExample : true
);
,但我更喜欢流畅的方法,因为命名参数方法更局限于单个方法调用,因此在构建后稍后将猫添加到 Bob 的头上不太实用。
由于该项目尚未采用流利的方法,因此我想以一种使其流利性质显而易见的方式来命名它们。我想fluent_AssertName 可以代替Name(),但这似乎很麻烦。目前我在想F_Name()。
更新
虽然上面的示例是针对构造函数的,但我想在整个程序操作中使用这种流畅的方法。此外,流利的方法具有有序和允许冗余的优点。
Number x = Number.New(0)
.Add(1)
.Multiply(2)
.Subtract(1)
.Multiply(2)
;
// ...other code that uses x...
x.Add(5)
.Multiply(10);
在我的特定用例中,流畅的方法似乎是最好的。我只是在寻找一个明显的命名约定来反映这种设计模式。
【问题讨论】:
-
Fluent 方法经常与不可变类一起使用,你会走这条路吗?此外,我会避免使用
F_或Fluent...为方法添加前缀。相反,流利的方法往往是动作或动词,例如SetValue、Save和ToList。无论哪种方式,这个问题(虽然是一个好问题!)因为它是基于意见的,所以对于 SO 来说是题外话。 -
我猜你可以标记迁移它,但我可能会把它留在这里,然后去那里打开另一个。
-
如果 P.SE 也关闭它,请不要回来对我大喊大叫 :)
-
@DavidG 关于命名的问题主要是基于意见的,将在 Programmers 处关闭,与这里一样:许多从这里迁移到那里的问题都遭受了这种命运。此外,除非您熟悉那里的主题,否则请不要推荐其他 SE 站点。请阅读:What goes on Programmers.SE? A guide for Stack Overflow.
-
另外,请不要鼓励cross-posting。