摆脱或复制私人静态
Get rid or duplicate private static
我有以下代码:
private static double calcTotalMass() { return bike_mass + human_mass; }
private static double calcWeight() { return calcTotalMass() * grav_acc; }
private static double calcWork() { return calcWeight() * height; }
...
由于在 Java 中所有内容都在 class 中并且我无法定义全局函数,因此 static
并且需要访问说明符。
在 C++ 中,我可以将第一个函数缩短为
double calcTotalMass() { return bike_mass + human_mass; }
在 Julia 中是
calcTotalMass() = bike_mass + human_mass
但那是另外一回事了。
在 C++ 中,访问说明符是分组的,因此不必为每个方法重复 private
。 Java 中是否有类似的东西,或者这就是语言的构建方式?
不,每个成员都有单独指定的访问权限。
但是
- 您可以将方法放在嵌套 class/interface 中并声明嵌套类型为私有。不幸的是,代码向右倾斜,这从来都不是好事。另外,IIRC,有一些奇怪的东西阻止了
import static
从你自己的嵌套 class.
- 如果您想测试这些方法,
private
是一个非常糟糕的选择。最好将它们放在单独的 "package private" class 或界面中。
- class 成员的默认访问修饰符是 "package private",这可能是可以接受的。
- 接口成员的默认访问修饰符是
public
,这很有用。对于成员变量,您还可以垃圾 static
.
还有一个 JEP,Concise Method Bodies,它可能会使您的代码更短一些,更像您的 Julia 示例。
(虽然我在这里:方法名称中的 "calc" 通常是多余的。可变静态是一个非常非常糟糕的主意。)
我有以下代码:
private static double calcTotalMass() { return bike_mass + human_mass; }
private static double calcWeight() { return calcTotalMass() * grav_acc; }
private static double calcWork() { return calcWeight() * height; }
...
由于在 Java 中所有内容都在 class 中并且我无法定义全局函数,因此 static
并且需要访问说明符。
在 C++ 中,我可以将第一个函数缩短为
double calcTotalMass() { return bike_mass + human_mass; }
在 Julia 中是
calcTotalMass() = bike_mass + human_mass
但那是另外一回事了。
在 C++ 中,访问说明符是分组的,因此不必为每个方法重复 private
。 Java 中是否有类似的东西,或者这就是语言的构建方式?
不,每个成员都有单独指定的访问权限。
但是
- 您可以将方法放在嵌套 class/interface 中并声明嵌套类型为私有。不幸的是,代码向右倾斜,这从来都不是好事。另外,IIRC,有一些奇怪的东西阻止了
import static
从你自己的嵌套 class. - 如果您想测试这些方法,
private
是一个非常糟糕的选择。最好将它们放在单独的 "package private" class 或界面中。 - class 成员的默认访问修饰符是 "package private",这可能是可以接受的。
- 接口成员的默认访问修饰符是
public
,这很有用。对于成员变量,您还可以垃圾static
.
还有一个 JEP,Concise Method Bodies,它可能会使您的代码更短一些,更像您的 Julia 示例。
(虽然我在这里:方法名称中的 "calc" 通常是多余的。可变静态是一个非常非常糟糕的主意。)