假设一个类,其职责是为 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);
}
局部变量选项可以更好地封装方法工作原理的详细信息。正如您所指出的,这将更容易维护,并且不太可能产生副作用。如果开销成为问题,您可以进行优化。我不确定是否有最佳实践,因为设计取决于对你来说重要的东西。无论哪种方式,最好的办法都是在代码中记录您的推理。