c#中流畅方法的命名约定
本文关键字:命名约定 方法 | 更新日期: 2023-09-27 18:17:38
主要问题
是否有流畅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);
流畅的方法在我的特定用例中似乎是最好的。我只是在寻找一个明显的命名约定来反映这个设计模式。
标题>标题>我不确定你是否真的需要流畅的方法,因为你可以简单地使用对象初始化器:
var person = new Person { Name= "Bob", Age= 30 };
但是如果你需要流畅的方法,例如为一个属性赋值进行多个重载,例如使用int, string或color设置颜色,这里有一个选项:
基本构建器类:
public class Builder<T, TBuilder>
where T: new()
where TBuilder : Builder<T, TBuilder>, new()
{
protected T model;
protected Builder()
{
model = new T();
}
public static TBuilder New()
{
return new TBuilder();
}
public T Get()
{
return model;
}
}
Person类:
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
Person Builder类:
public class PersonBuilder:Builder<Person, PersonBuilder>
{
public PersonBuilder():base()
{
}
public PersonBuilder Name(string name)
{
model.Name = name;
return this;
}
public PersonBuilder Age(int age)
{
model.Age = age;
return this;
}
}
用法:
var p = PersonBuilder.New().Name("Bob").Age(30).Get();