【发布时间】:2016-11-16 16:46:25
【问题描述】:
我的计算机科学老师告诉我,我不应该从 getter 等方法打印字符串,而应该从 main 方法打印给用户。我想知道从哪里打印是否重要,以及构建代码的正确方法是什么。
例如:
public class Main {
public static void main(String[] args) throws IOException {
Bank bank = new Bank(20);
System.out.println(bank.getBalance());
}
}
public class Bank {
int balance;
public Bank(int balance){
this.balance = balance;
}
public String getBalance(){
return "You have $" + this.balance;
}
}
而不是我的老师说我应该写它
public class Main {
public static void main(String[] args) throws IOException {
Bank bank = new Bank(20);
System.out.println("You have $" + bank.getBalance());
}
}
public class Bank{
int balance;
public Bank(int balance){
this.balance = balance;
}
public int getBalance(){
return this.balance;
}
}
【问题讨论】:
-
括号放置在程序结构方面比打印语句的放置更让我担心。也就是说,只要从最终程序中删除那些打印语句,通常可以在 getter 内部打印。如果不在其中编写打印语句,通常很难知道 getter 内部发生了什么。一种方法是传递一个回调接口或 null,如果它在那里,它将执行你的回调,否则什么都不做,但否则你将需要使用调试器来查看 getter 以确保它的行为正确,这通常更难。
-
无论如何,您的教授可能不满意的是 getBalance 旨在返回余额,这应该是私有的,而不是余额字符串。如果您想以字符串形式获取余额,只需创建另一个方法 getBalanceString() 即可完成您所做的工作,而 getBalance 应该只返回余额。此外,余额字符串可能应该由主而不是银行管理,因为使用银行的不同人可能希望以不同的方式显示余额。