常见的两种方式的接口,你会选择哪一种?
(1)
public boolean updateXX(MyPojo pojo) ;
public boolean send(Message msg);
(2)
public void updateXX(MyPojo pojo) throw MyException ;
public void send(Message msg) throw MyException ;
(1)中的接口,返回一个boolean,使用者可以有选择地根据返回值进行不同的处理。但在使用过程中。大家通常会忽略其返回值,增加了风险,可能会造成操作失败了,却无法察觉。
(2)中接口语义比较明确,失败就抛异常出去,并且异常里通常会带上很多的信息。
在契约编程里,提到要区分查询与命令,如果是命令,通常是void的,有问题直接抛异常出去。
个人认为,大多数情况下,选择(2)接口的方式比较靠谱。