[英]Naming convention of @FunctionalInterface
按照慣例,類型應該用名詞命名,沒關系。 但是, @FunctionalInterface
是一種特殊類型 - 對象類型,其行為類似於函數/方法。 在函數的情況下,我覺得選擇動詞更自然,例如decorate.apply(o)
而不是名詞decorator.apply(o)
。 也有表達活動的名詞,例如: decoration.apply(o)
。
如果我查看java.util.function包,所有函數都以名詞命名: Function
、 Operator
、 Consumer
、 Supplier
……我應該更喜歡名詞、動詞還是表達動詞的名詞?
更新
有時,我們對返回對象/函數的工廠方法幾乎沒有幫助:
// toList factory returning Collector instance
list.stream().filter(...).collect(toList());
@FunctionalInterface
只能標記類型(類、接口、注釋、枚舉)。
要命名類型,您應該使用名詞,而對於方法,您需要一個動詞。
班級
類名應該是名詞,大小寫混合,每個內部單詞的第一個字母大寫。 盡量保持你的類名簡單和描述性。 使用完整的單詞——避免首字母縮略詞和縮寫詞(除非縮寫詞的使用比長格式更廣泛,例如 URL 或 HTML)。
class Raster; class ImageSprite;
方法
方法應該是動詞,大小寫混合,首字母小寫,每個內部單詞的首字母大寫。
run(); runFast(); getBackground();
這是我如何定義功能接口的示例。
@FunctionalInterface
interface Decorator {
void decorate();
}
在代碼中,它看起來可讀。
Decorator decorator = () -> {};
decorator.decorate();
我對“裝飾者與裝飾者”的看法:
"Decoration"
更多的是描述過程/結果,而"Decorator"
是一種機制/工具/手段來啟動該過程/獲得該結果。
如果我在代碼中看到Decoration
類,我會想到一系列裝飾品(如裝飾品、油漆、牆紙)而不是實際裝飾的人。
如果我看到Decorator
或Painter
,我會期待像decorate()
或paint()
這樣的方法,因為這是他們可以/應該做的。
比較suppliance/supplier -> get()
和consumption/consumer -> accept(t)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.