如何在没有冗余代码的情况下消除空参数

jas*_*ine 1 java parameters null

例如:

getBooks(author, title)
Run Code Online (Sandbox Code Playgroud)
  • 如果允许作者为null,则会返回所有具有特定标题的书籍
  • 如果允许title为null,则返回特定作者的所有书籍
  • 如果允许两者都为null,则无论标题或作者如何,都将返回所有书籍

要消除这种情况,请执行以下功能:

getBooks(author) 
getBooks(title)  
getBooks(author, title)  
getBooks()
Run Code Online (Sandbox Code Playgroud)

在新函数中,可能存在冗余代码,或者如果我们将这些冗余代码分组到函数中,我们仍将进入具有空参数的函数.有什么更好的方法来处理这个 - 没有冗余代码和没有空参数?

Boh*_*ian 7

不要过载这么多:

getBooksByAuthor(author) 
getBooksByTitle(title)  
getBooksByAuthorAndTitle(author, title)  
getBooks()
Run Code Online (Sandbox Code Playgroud)

请注意,这不会减少代码重用:这些方法可以重用/共享其实现中所需的任何代码