我遇到了一些具有以下结构的Java代码:
public MyParameterizedFunction(String param1, int param2)
{
this(param1, param2, false);
}
public MyParameterizedFunction(String param1, int param2, boolean param3)
{
//use all three parameters here
}
Run Code Online (Sandbox Code Playgroud)
我知道在C++中我可以为参数指定一个默认值.例如:
void MyParameterizedFunction(String param1, int param2, bool param3=false);
Run Code Online (Sandbox Code Playgroud)
Java是否支持这种语法?有没有理由说这两步语法更可取?
在我们的一些项目中,有一个类层次结构,它在链中向下添加更多参数.在底部,一些类可以有多达30个参数,其中28个只是被传递给超级构造函数.
我会承认,通过像Guice之类的东西使用自动化DI会很好,但由于某些技术原因,这些特定项目仅限于Java.
按类型按字母顺序组织参数的约定不起作用,因为如果某个类型被重构(您为参数2传入的圆现在是一个Shape),它可能会突然出现故障.
这个问题可能具体而且充满了"如果这是你的问题,你在设计层面做错了"的批评,但我只是在寻找任何观点.