簡體   English   中英

@Provides的書面順序是否重要?

[英]Does the order in which @Provides written matter?

以下示例中的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));
}

不,方法的順序無關緊要。

重要的是返回類型和注釋。 其余的(方法名稱,方法位置和方法參數)無關緊要。

返回類型很重要,因為它是注入類型,這就是您要提供的類型。 注釋很重要,因為它們告訴您必須如何配置提供程序。

該方法的順序並不重要,因為它是不可預測的,你可以寫methodA之前methodB ,但是編譯器可能決定將其寫入methodB之前methodA在你.class文件。 它與C語言不同,在C語言中,您必須(至少)聲明要使用的方法。

同樣,方法名稱和參數(甚至...參數順序)無關緊要。 今天,您可能有一個名為foo(A a, B b)的提供程序方法,明天您可能已將其更改為bar(X x, Y y) ,仍然會使用適當的參數對其進行調用。

您應該保持代碼可讀

關於最佳實踐,請始終保持代碼可讀。 因此,如果您有關於將所有提供者方法和所有輔助方法放在一起的約定,那就這樣吧。 如果您的團隊說要盡量減少聲明使用之間的距離,請使用它。 如果您的代碼約定說要按字母的相反順序對方法進行排序,請這樣做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM