为什么许多返回语句在 OOP 中不是一个好主意
💡一则或许对你有用的小广告
欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论
- 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于
Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...
,点击查看项目介绍 ;- 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;
截止目前, 星球 内专栏累计输出 82w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2800+ 小伙伴加入学习 ,欢迎点击围观
这个
辩论
很老了,但我也有话要说。问题是一个方法是否可以有多个
return
语句或只有一个。答案可能会让您大吃一惊:在纯面向对象的世界中,方法
必须
只有
一个
return
语句,除此之外
别无
其他。是的,只是一个
return
声明,仅此而已。没有其他运营商或声明。刚
return
。所有支持多个
return
语句的论点都与面向对象编程的理念背道而驰。
这是一个经典的例子:
public int max(int a, int b) {
if (a > b) {
return a;
}
return b;
}
上面的代码有两个
return
语句,它比这个只有一个
return
更短:
public int max(int a, int b) {
if (a > b) {
return a;
}
return b;
}
更冗长,更难阅读,更慢,对吧?正确的。
这是 纯 面向对象世界中的代码:
public int max(int a, int b) {
if (a > b) {
return a;
}
return b;
}
你现在怎么看?没有语句或运算符。没有
if
也没有
>
。相反,有类
If
和
GreaterThan
的
对象
。
这是一种纯粹而干净的面向对象方法。
但是,Java 没有。 Java(和许多其他伪 OOP 语言)为我们提供了
if
、
else
、
switch
、
for
、
while
等运算符,而不是提供内置类,后者会做同样的事情。正因为如此,我们继续从过程的角度来思考,并一直在讨论两个
return
语句是否比一个更好。
如果你的代码是真正面向对象的,你将不能有多个
return
。此外,除了每个方法中的
return
之外,您将一无所有。实际上,您在整个软件中只有两个运算符
new
和
return
。就是这样。
在我们到达那里之前,让我们坚持只
return
一次并至少尝试看起来像纯 OOP。