哪种方法签名好,为什么?

sas*_*ank 0 java

给定一个IP地址范围(abcd - abce)我想要一个方法来返回该范围之间的数组列表中的IP地址.

选项1 :

public static int getIPAddressesFromRange(String rangeStr, List list ) ;
Run Code Online (Sandbox Code Playgroud)

返回值是count ,输入列表将填充范围所具有的IP列表

选项2:

public static List getIPAddressesFromRange(String rangeStr)
Run Code Online (Sandbox Code Playgroud)

返回值是ip地址列表'

我的选择是2,但这是直觉,但不能支持我的论点.

编辑:选项1是否违反了任何设计原则?

Tam*_*más 5

我会说

public static List<String> getIPAddressesFromRange(String rangeStr)
Run Code Online (Sandbox Code Playgroud)

如果您决定将IP地址表示为字符串.

针对#1的争论:

  • 调用者需要提前构建列表
  • 除非您记录返回值,否则返回值并不简单
  • 该方法会改变其中一个参数,这通常不被禁止,但最好避免让API的用户感到惊讶(特别是如果他们不喜欢阅读文档)
  • null为list参数意外传入值将导致NullPointerException.
  • 如果你真的关心它,你总是可以从列表中获取列表的长度.