命名复杂的方法

时间:2012-03-12 19:17:26

标签: c# sql database sharepoint methods

我有一种从数据库中提取数据的方法,我希望它能得到这个:

五个条目的限制, 项目类型是简报, 需要处于活动状态(PublishDate< DateTime.Now)

所以我想把它命名为GetFiveActiveNewslettersByCreatedDate()

这对我来说似乎有点长。我在网站上找了一个很好的方法来命名这样的东西,你会怎么处理它?<​​/ p>

6 个答案:

答案 0 :(得分:12)

这样的事情呢?

public IEnumerable<Newsletter> GetActiveNewsletters(int maxRecords = 5) 
{ 
    // ...
}

前5名仍然是默认值,但它不再过于具体。

答案 1 :(得分:8)

我个人避免将“五”加入名称的原因是它可能意味着什么。

例如,如果以后在某些情况下需要10个新闻简报而不是5个?好吧,你要创建一个额外的方法GetTenActiveNewslettersByCreatedDate()。现在,您有一个“设计模式”,后续开发人员将在需要20,50,100个简报时遵循这些模式。这是一个会腐烂的设计,你现在可以通过参数化五个来阻止它。

当然,这可能是YAGNI /投机的普遍性。如果5真的是某种神奇的,坚硬的,永远不会改变规则,那么你可能会小心翼翼地把它加入。我只是发现我后悔做了这么远的事情,而且往往更多。

答案 2 :(得分:5)

我建议将其重命名为:GetNewsletters(int recordCount=5) 新闻简报的数量将是该方法的参数。

其余部分可以在///Summary中假设和描述。

答案 3 :(得分:4)

为了避免这种特定的命名,我会考虑使该方法具有通用性。类似的东西:

GetNewsLetters(int amount, bool onlyActive, SortOrder orderBy)

答案 4 :(得分:2)

将其命名为任何开发人员都明白该方法的作用。自我评论代码是王道。如果你的方法名称太长,你可能在其中做了太多不同的事情,并且会成为重构的候选者。

至于你的具体例子,我对你给出的名字没有疑问。

答案 5 :(得分:1)

我会添加参数化方法,比如

GerEntries(T typeofEntity, DateTime date, int maxNumber)

自然是带注释的文档方法