@Provides的书面顺序是否重要?

时间:2019-02-20 03:50:47

标签: java guice

以下示例中的ProvideA和ProvideB的顺序重要吗?喜欢应该首先编写哪种方法?如果不是从功能的角度来看,那么从最佳实践的角度来看是否重要?

@Singleton
@Provides
@Inject
A provideA(ExampleClass1<B> example1, ExampleClass2 example2) {
    return new A(example1, example2);
}

@Provides
@Singleton
@Inject
B provideB(A a) {
    return new B(new C(a));
}

1 个答案:

答案 0 :(得分:2)

不,方法的顺序无关紧要。

重要的是返回类型和注释。其余的(方法名称,方法位置和方法参数)无关紧要。

返回类型很重要,因为它是注入类型,这就是您要提供的内容。注释很重要,因为它们告诉您必须如何配置提供程序。

方法的顺序无关紧要,因为它不可预测,您可以在methodA之前写上methodB,但是编译器可能会决定在{{1}之前写methodB }在您的methodA文件中。它与C语言不同,在C语言中,您必须(至少)声明要使用的方法。

同样,方法名称和参数(甚至...参数顺序)也无关紧要。今天,您可能有一个名为.class的提供者方法,明天您可能已将其更改为foo(A a, B b),但仍会使用适当的参数来调用它。

您应该保持代码可读性

关于最佳实践,请始终保持代码可读。因此,如果您有关于将所有提供者方法和所有辅助方法放在一起的约定,那就这样吧。如果您的团队说要尽量减少声明使用之间的距离,请使用它。如果您的代码约定说要按字母的相反顺序对方法进行排序,则应这样做。

相关问题