我是计算机科学专业的学生,目前正在研究方法重载。
我做了一个方法重载,以获取一个具有不同参数的随机数:低界和高界或仅低界。
这样做更好吗?
/**
* Return a random double in [low; sup[
*/
public static double getDouble(int low, int sup) {
return low + Math.random() * (sup - low);
}
/**
* Return a random double in [0; sup[
*/
public static double getDouble(int sup) {
return getDouble(0, sup);
}
或者,我有事要做吗
/**
* Return a random double in [low; sup[
*/
public static double getDouble(int low, int sup) {
return low + Math.random() * (sup - low);
}
/**
* Return a random double in [0; sup[
*/
public static double getDouble(int sup) {
return Math.random() * sup;
}
总之,我的问题是两者之间最好的方法是什么? 谢谢。
答案 0 :(得分:3)
软件开发中真正的大问题之一是代码 duplication 。
您绝对总是尽力减少相同的代码段。
当然,在您的示例中,几乎与选择哪个版本无关。如果您的代码就是那样,并且再也不会被触及,那么这两个选项都是可读且不错的。
但是随着时间的流逝,事情有可能需要增强或改变。然后,选项1要求您少付出一些精力和精力。因此,您选择了那个。
还请注意,考虑这些细微之处是完全可以的。不是因为这个特定的示例如此关键,而是为了训练该技能。这样一来,您就可以准备并准备好需要编写10行以内的更高复杂度的代码了!
是的,这与超载无关。如前所述:最小化代码重复应该始终是您的最高优先事项之一。有时您必须做出让步,但您这样做是出于有意识的决定,而不是出于懒惰的情绪或冲动。
答案 1 :(得分:2)
第一个。这样可以使其简洁,并避免重复代码。
将方法作为重载方法的一部分重用并不是方法重载的要求,而是一种干净的代码。重载的方法也可以具有完全不同的实现,但是在实现类似的情况下,重用该方法要比再次显式编写整个实现更好。