java 在方法中抛出异常_在Java方法中抛出异常而不是返回

根据Coursera上的

Algorithms, Part 1,我正在写Java上的Deque课程.目前我的基于数组的Deque有方法removeLast():

public Item removeLast() {

if (size() == array.length / 4) {

resize(array.length / 2);

}

if (head != tail) {

Item tmp = array[--head];

array[head] = null;

return tmp;

}

throw new NoSuchElementException("Stack underflow");

}

如果head == tail意味着Deque是空的并且我根据作业规范抛出异常,在方法结束时而不是return语句.这段代码给出了关于不变量的直接意图(head!= tail).

另一方面,方法可能会像这样重写:

public Item removeLastRewritten() {

if (size() == array.length / 4) {

resize(array.length / 2);

}

if (head == tail) {

throw new NoSuchElementException("Stack underflow");

}

Item tmp = array[--head];

array[head] = null;

return tmp;

}

在我看来,removeLast由以下原因更清楚地写出来:

>坚持悲观的情景 – 总是失败,只有……这是更可靠的方法,特别是当方法代码会扩大并变得更加复杂时.

>在不变尾巴!=头部和后续if {}代码块之间提供更清晰的链接.

我有以下问题:

>哪种方法更好?

>像removeLast这样的写法被认为是一种合适/好的做法吗?

>什么被认为是Java的最佳实践?是否有任何代码风格(我找不到)?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值