簡體   English   中英

@FunctionalInterface 的命名約定

[英]Naming convention of @FunctionalInterface

按照慣例,類型應該用名詞命名,沒關系。 但是, @FunctionalInterface是一種特殊類型 - 對象類型,其行為類似於函數/方法。 在函數的情況下,我覺得選擇動詞更自然,例如decorate.apply(o)而不是名詞decorator.apply(o) 也有表達活動的名詞,例如: decoration.apply(o)

如果我查看java.util.function包,所有函數都以名詞命名: FunctionOperatorConsumerSupplier ……我應該更喜歡名詞動詞還是表達動詞的名詞

更新

有時,我們對返回對象/函數的工廠方法幾乎沒有幫助:

// toList factory returning Collector instance
list.stream().filter(...).collect(toList()); 

@FunctionalInterface只能標記類型(類、接口、注釋、枚舉)。

要命名類型,您應該使用名詞,而對於方法,您需要一個動詞。

班級

類名應該是名詞,大小寫混合,每個內部單詞的第一個字母大寫。 盡量保持你的類名簡單和描述性。 使用完整的單詞——避免首字母縮略詞和縮寫詞(除非縮寫詞的使用比長格式更廣泛,例如 URL 或 HTML)。

 class Raster; class ImageSprite;

方法

方法應該是動詞,大小寫混合,首字母小寫,每個內部單詞的首字母大寫。

 run(); runFast(); getBackground();

命名約定,Oracle

這是我如何定義功能接口的示例。

@FunctionalInterface
interface Decorator {

    void decorate();

}

在代碼中,它看起來可讀。

Decorator decorator = () -> {};
decorator.decorate();

我對“裝飾者與裝飾者”的看法:

"Decoration"更多的是描述過程/結果,而"Decorator"是一種機制/工具/手段來啟動該過程/獲得該結果。

如果我在代碼中看到Decoration類,我會想到一系列裝飾品(如裝飾品、油漆、牆紙)而不是實際裝飾的人。

如果我看到DecoratorPainter ,我會期待像decorate()paint()這樣的方法,因為這是他們可以/應該做的。

比較suppliance/supplier -> get()consumption/consumer -> accept(t)

暫無
暫無

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

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