0

假设一个类的职责是为 JDBC 查询设置参数。

它将有一个fillParameters()方法和一个 PreparedStatement 作为字段,因为在所有私有子方法之间共享。

此外,这些子方法需要了解当前的 JDBC 参数索引。

因此可以采用两种解决方案:

  • 将当前索引作为本地参数传递给每个方法(如果有很多子方法,则为冗余)

  • 将当前索引位置声明为字段(或属性),以便无需通过多个方法参数传递它。但缺点是,如果我们想象对这个方法的第二次调用是使用同一个对象实例进行的(出于特定原因,没有真正的用例,但想象一下......),它可能会导致副作用。实际上,在调用由子方法执行的所有进程之前,必须将当前索引位置重新初始化为 0。

什么是最佳实践?

public void fillParameters(){
this.currentIndex = 0; //reinitialize to first index !
//....call to each submethods without need to pass currentIndex as local parameter
}

或者 :

public void fillParameters(){
int currentIndex = 0;
//....call to each submethods with currentPosition as index like :
feedFirstParameter(++currentIndex);
feedSecondParameter(++currentIndex);
}
4

1 回答 1

1

局部变量选项更好地封装了您的方法如何工作的细节。正如您所指出的,这将更容易维护并且不太可能产生副作用。如果开销成为问题,您可以优化。我不确定是否有最佳实践,因为设计取决于对您而言重要的内容。无论哪种方式,最好的办法都是在代码中记录您的推理。

于 2012-04-08T21:01:57.217 回答