我有一个极小而简单的课程,但它在如何最好地处理它方面给我一些问题。
它有一个构造函数和一个get方法。
目的是存储一组值,并在通过get方法询问时返回它们。
此外,值数组可能作为逗号单独的字符串传递给构造函数。这就是我无法决定如何处理事情的地方。
答案 0 :(得分:5)
在构造函数中执行此操作。那只会被召唤一次。如果你在吸气器中这样做,你将不得不多次进行拆分。
答案 1 :(得分:2)
假设您打算至少调用一次get
,第一个选项会更好。
第二个选项的缺点是您可能需要多次拆分,如果您经常调用get
,可能会造成相当大的性能损失。
第三个选项的缺点是你可能需要有2个变量(一个字符串和一个数组),一次只能使用其中一个变量,或者类型为Object
,然后可以是字符串或数组。这些选项都不是特别好的设计。
如果您经常不至少调用get
一次,或者您需要访问原始字符串,则第三个选项可能有意义(至少从性能点开始)看来,第一个选项仍然是一个更好的设计),但如果是这种情况,我会非常关注你的设计。
答案 2 :(得分:1)
- 构造函数是否应该在存储属性
之前拆分string和trim元素- 如果构造函数只是存储属性,并且每次调用getter时,都应该拆分属性
- 如果getter检查属性并且它是否为字符串,则拆分它然后存储该值以供将来调用getter而不必...
醇>
我将逐一解决这些问题。
property.split(",")[4]
是特定的东西总之,#1对我来说似乎是最好的解决方案。
答案 3 :(得分:1)
在Joshua Bloch的Effective Java中,你可以读到你应该尽可能地懒惰操作,只在真正需要时做些事情,比如初始化变量等。
所以按照这个建议,我会做这样的事情:
public class Example {
private String string;
private String[] array;
public Example(String string){
this.string = string;
}
public Example(String[] array){
this.array = array;
}
public String[] getValues(){
if(this.array == null){
//Split the string, trim the values
//create a new array and assign it to the array-variable
this.string = null; //no need to keep it any longer
}
return this.array;
}
}
答案 4 :(得分:0)
您应该决定是否需要原始字符串。如果不这样做,那么在构造函数中完成工作是合乎逻辑的选择。