将上下文传递给函数有用吗?

Is it useful to pass context to a function?

我经常这样做:

public static void myUtilFunction(FacesContext context, [...]) {
    // TODO add code
}

而不是:

public static void myUtilFunction([...]) {
    FacesContext context = FacesContext.getCurrentInstance();
    // TODO add code
}

哪个更好?

从当前线程获取当前 FacesContext 实例的开销很小。所以我会选择不将它作为参数添加到实用程序方法中,以使您的代码更简洁、更具可读性。

此外,如果您查看 OmniFaces(JSF 实用程序函数方面的领先库),它们不要求您传递 FacesContext。例如:

Messages.addGlobalInfo("Hello");

该库由 BalusC(Whosebug 上的顶级 JSF 用户)维护,所以我认为您可以去学习他的示例。