2013-03-19 244 views
5

這是一個基本的命名約定問題,但我沒有找到具體處理這個問題的任何地方。服務方法的命名約定

我有一個名爲Foo的類和一個名爲Bar的類。

我有一個方法在服務中檢索Foo的所有酒吧。我是否應該將其命名爲:

GetFooBars(int fooId) 

GetBarsForFoo(int fooId) 

擴大,你可以有其他類,如酒吧

GetMooBars(int mooId) 

GetBarsForMoo(int mooId) 

回答

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); 
+0

謝謝,我喜歡你指定的「...... FooId」。我唯一需要注意的是,當我看到「By」而不是「For」時,它讓我覺得我得到了很多(全部)酒吧,這些酒吧被FooId(或MooId)細分或排序。或者,當我看到「For」時,它讓我覺得我只是爲了一個特定的FooId(或MooId)而獲得所有酒吧的子集。 – 2013-03-19 17:50:41

+0

當我看到一個像GetBarsByFooId這樣的名字時,它讓我覺得「過濾」或「搜索」。我從來沒有想到,這可能意味着「分組」或「排序」。但那只是我......我想你傳遞'fooId'作爲參數的事實應該澄清這個意圖。 – 2013-03-19 18:17:39

2

我會打電話寧可使用一個o f以下:

GetBarsByFoo(int fooID) { } 

GetBarsByMoo(int mooID) { } 

GetBarsByFooId(int fooID){ } 

GetBarsByMooId(int mooID){ } 
+0

重複'GetBarsByMooId'。我想你的意思是'GetBarsByMoo'。 – 2013-03-19 16:31:36

+0

你是完全正確的,感謝您的評論。 :) – Abbas 2013-03-19 18:08:33