服务方法的命名约定

5

这是一个基本的命名约定问题,但我没有找到任何专门处理这个问题的地方。

我有一个叫做Foo的类,还有一个叫做Bar的类。

我有一个在服务中用于检索所有Foo的Bars的方法。应该如何命名:

GetFooBars(int fooId)

或者
GetBarsForFoo(int fooId)

为了扩展,你可以添加其他类别的Bars,例如:

GetMooBars(int mooId)

或者
GetBarsForMoo(int mooId)
2个回答

5
我建议
GetBarsByFooId(int fooId)

GetBarsByMooId(int mooId)

或者……调整你的API以支持这样的调用

[DataContract]
[KnownType(typeof(GetBarsByFooIdRequest))]
[KnownType(typeof(GetBarsByMooIdRequest))]
abstract class GetBarsRequest
{
   ..
}

[DataContract]
sealed class GetBarsByFooIdRequest : GetBarsRequest
{
   [DataMember]
   public int FooID { get; set; }
}

sealed class GetBarsByMooIdRequest : GetBarsRequest
{
   [DataMember]
   public int MooID { get; set; }
}

GetBarsResponse GetBars(GetBarsRequest);

谢谢,我喜欢你指定了“...FooId”。唯一的问题是,当我看到“By”而不是“For”时,我会认为我正在得到所有按FooId(或MooId)拆分或排序的Bar(可能是所有Bar)。另外,当我看到“For”时,我会想到我只是得到了特定FooId(或MooId)的所有Bar子集。 - Mr.Zzyzzx
当我看到像GetBarsByFooId这样的名称时,它让我想到“按...筛选”或“按...搜索”。我从未想过它可能意味着“按...分组”或“按...排序”。但这只是我的想法...我猜你传递fooId作为参数应该可以澄清意图。 - p.s.w.g

2

我更倾向于使用以下之一:

GetBarsByFoo(int fooID) { }

GetBarsByMoo(int mooID) { }

GetBarsByFooId(int fooID){ }

GetBarsByMooId(int mooID){ }

GetBarsByMooId 重复了。我想你的意思是 GetBarsByMoo - p.s.w.g

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接