在非void方法(如ATM项目的getBalance)中添加System.out.print()是否为不良实践?
问题解答
这种在getBalance()里加输出的做法确实是不良编程实践,主要问题有这几点:
- 一个方法该只干一件事:
getBalance()本来的作用就是获取账户余额的数值,现在硬把打印文本的逻辑塞进去,把“拿数据”和“展示数据”混在一起,以后维护起来容易乱。 - 用起来不灵活:万一以后你只是想获取余额来算转账、存数据库,不想打印东西,这个方法一调用就会强制输出文本,完全不符合需求,要么改方法,要么重新写个新的获取方法,纯属给自己添乱。
- 改起来麻烦:现在是控制台打印,以后要是换成弹窗显示、写日志,你还得去改
Account类里的getBalance()方法,把数据逻辑和展示逻辑绑死了,扩展性太差。
怎么改更合理?
把拿数据和展示数据拆开就行:
- 先让
getBalance()回归本职,只返回余额:
public double getBalance() { return balance; }
- 要么在调用的时候自己加输出:
System.out.println("Your balance is: " + account1.getBalance());
- 要么在
Account类里单独写个打印余额的方法:
public void printBalance() { System.out.println("Your balance is: " + balance); }
用的时候直接调用这个方法就行:
account1.printBalance();
内容的提问来源于stack exchange,提问作者Victorb37
相关产品推荐
相关产品推荐

