命名复杂的方法

Wes*_*ley 7 c# sql database methods sharepoint

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

限制五个条目,项目类型是简报,需要激活(PublishDate <DateTime.Now)

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

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

Ed *_* S. 12

这样的事情呢?

public IEnumerable<Newsletter> GetActiveNewsletters(int maxRecords = 5) 
{ 
    // ...
}
Run Code Online (Sandbox Code Playgroud)

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

  • 我建议不要使用公共默认参数,因为它们被编译到调用程序集中,如果更新被调用的程序集而不重新编译和重新部署所有调用程序,这可能会导致细微的错误. (4认同)

Eri*_*ich 8

我个人避免将"五"字加入名称的原因是它可能意味着什么.

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

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


Kha*_*han 5

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

其余的可以假设和描述在///Summary.


Nic*_*sen 4

为了避免这种特定的命名,我会考虑使该方法通用。就像是:

GetNewsLetters(int amount, bool onlyActive, SortOrder orderBy)
Run Code Online (Sandbox Code Playgroud)