看看don't repeat yourself (DRY)的原理,其目的是防止你的情况。而不是重命名变量创建单独的方法,它将接受任何Rectangle并打印其详细信息。现在
public static void printRectangleDetails(Rectangle r){
System.out.println("Rectangle 1: " + "\n" + "Width: " + r.width + "\n" + "Height: " +
r.height + "\n" + "Color: " + r.color + "\n" + "Area and Perimeter: " +
r.getArea(r.width, r.height) + ", " + r.getPerimeter(r.width, r.height));
}
你可以在需要
printRectangleDetails(r1);
...
printRectangleDetails(r2);
当你r1
和r2
矩形使用它,如果由于某种原因,你不能创建单独的方法和使用DRY原则,你可以做一些事情像这样:
,假设我们已经
String foo = "foo";
System.out.println(foo+" hello wordls"+ foo);
String bar = "bar";
System.out.println(foo+" hello wordls"+ foo);
并且您要在第二个打印语句中将foo
替换为bar
。使用Alt键 + 移 + [R(或从菜单:Refactor
- >Rename..
)在第二次印刷的语句将重新命名所有foo
引用。为了防止它再次声明你的foo
参考(编译器会给你的错误,但不要担心,我们将在稍后删除它,它是唯一的,而重命名过程有用)刚从要改变foo
到bar
像
语句之前
String foo = "foo";
System.out.println(foo+" hello wordls"+ foo);
String bar = "bar";
String foo = "whatever";
// ^^^
System.out.println(foo+" hello wordls"+ foo);
现在使用Alt键 + 移 + [R这一新的复制foo
和eclipse将寻找foo
从这个新的参考,而忽略早期foo
S,所以你应该能够看到类似
(你可以看到前两个foo
没有选择重命名)
这样你就可以将其更改为bar
像
String foo = "foo";
System.out.println(foo+" hello wordls"+ foo);
String bar = "bar";
String bar = "whatever";
System.out.println(bar+" hello wordls"+ bar);
之后,因为你不只是删除了此附加String bar = "whatever";
不再需要它了。
但是要小心。通过这种方式,您可以在重复foo
之后重命名所有foo
变量,而不仅仅是要重命名的System.out.println(foo+" hello wordls"+ foo);
中的变量。为了确保你没有改变你不想做的任何事情,在你的方法结尾放置你想改变的代码(在你确定没有foo
之后不应该改变它)。完成之后,将您更改的代码移至您想要的位置。
为什么不创建另一个矩形对象? – User27854
是否正在创建单独的方法,可以为传递的Rectangle生成此输出一个选项?看看http://en.wikipedia.org/wiki/Don%27t_repeat_yourself – Pshemo
我有另一个对象r2,它只是我想打印出他们的细节。我应该只使用toString()方法返回一个字符串中的所有对象字段吗? 编辑:@Pshemo是的,我想我会这样做 – user3278117