日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

我的对象命名

發布時間:2023/12/3 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 我的对象命名 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這是最常見的辯論之一。 大多數人對此主題有自己的見解,卻沒人能真正說出哪個是正確的。 我當然不能,但是盡管如此,我還是決定與大家分享我的想法,投入兩美分,也許對某人會有幫助。

當我創建一個新類時,我要做的第一件事就是設計其接口(如您所知,我相信任何對象都必須實現至少一個接口)。 接口的名稱通常反映對象什么,而不是對象的作用或其他對象應使用的對象。 在極少數情況下,我認為形容詞是合適的,其中之一是Iterable 。

湯姆和杰里-杰里的表哥,威廉·漢娜和約瑟夫·巴貝拉

然后是該接口的實現。 由于將來可能會有更多的實現,因此我主要根據封裝的細節來命名對象。 因此,假設接口是HttpRequest ,那么如果遵循該接口的第一個對象使用ApacheHttpClient,則其名稱可能是ApacheRequest 。 然后,可能會有另一個實現,與另一個http客戶端(可能是jcabi-http)一起工作 ,在這種情況下,名稱將為JcabiRequest 。

到目前為止,還算不錯,也許沒有什么新鮮的,但是這里有個問題:根據模式的不同,我自己的類的名稱不一定一定很有意義。 例如,在我的一個項目中的某處,您將看到以下類:

/*** Decorator which adds some HTTP headers on the decorated request.*/ public final class HttpHeaders implements HttpRequest {//... }

它本身看起來并不自然,對吧? 好吧,應該很清楚,這種類型的請求永遠都不應該“單獨”使用。 它的構造函數甚至不允許它,因為它應該包裝另一個HttpRequest ,或者另一個包裝器,或者一個具體的請求。 你能想到一個更好的名字嗎? 我相信,在命名一個類時,我們還必須考慮如何使用它,在什么上下文或模式下使用-如果將所有這些名稱放在一起時這些名稱有意義,那么您就可以了。 添加無用的名詞只會導致噪音。

HttpHeaders的用法如下:

Map<String, String> headers = ...;HttpRequest request = new HttpHeaders (new Get(URI.create(...)),headers);

此外,我討厭無用的后綴。 讓我們以最光榮的例子為例:“工廠”。 您是否注意到,當一個對象負責創建其他對象時,不再重要了嗎? 上下文,業務,領域,什么都沒有! 該不良對象的名稱必須帶有后綴“ Factory”,否則代碼將無法工作。

我的代碼中確實有工廠對象,但是“ factory”一詞在任何地方都沒有。 該項目是一個聊天機器人,最頂級的抽象之一就是“知識”,機器人知道該怎么做。 知識的每種實現都會創建代表它的步驟樹–機器人需要執行一個或多個步驟才能執行任何命令。 我所謂的“知識”實際上是一個工廠對象,因為它會創建其他對象(這些步驟)。 匯編代碼如下所示:

final Conversation talk = new Conversation(new Hello(new RunScript(new Confused())));talk.start(command);

Conversation , Hello , RunScript和Confused都在實現Knowledge并且它們以級聯機制一起工作,以便找到要執行的正確步驟。 上面的代碼片段翻譯為以下單詞:“對話開始,機器人可以說'你好',為您運行一些腳本,如果它不理解命令,可能會感到困惑”。

現在,這里是相同的代碼片段,但具有更常見的命名:

final StepsFactory factory = new ConversationFactory(new HelloFactory(new RunScriptFactory(new ConfusedFactory())));factory.getSteps(command);

哪一個更好? 它們都將以相同的方式工作,只是關于可讀性。 對我而言,這就像完成的建筑物還是周圍仍然有建筑腳手架的建筑物–沒有人想知道房屋的建造方式,所使用的所有腳手架和工具,這并不重要。 取而代之的是,每個人都渴望看到最終的構造,并且他們應該了解它的作用,而不要弄清楚實現它的目的。

另一個命名示例:

Log log = new WebLog(new LogFile("/comdor/ActionLogs", this.id),"https://webapps.amihaiemil.com" );

為什么選擇WebLog ? 因為封裝的日志最終將通過Web UI呈現給用戶。 調用log.address() ,字符串“ https://webapps.amihaiemil.com”將與文件名連接在一起以形成有效的URL。 這是WebLog類,您還可以看到Log類型的封裝變量(將顯示給用戶)被命名為“ onServer”,因為它是最終從中獲取的日志文件。服務器。

這幾乎就是我如何處理命名的想法。 而且,當然,我總是寫JavaDocs(如果沒有它們,Maven Central甚至不允許您發布任何東西),因此,如果名稱不夠好,它上面的JavaDoc總是會為您提供幫助。 你怎么看? 您使用什么命名約定?

翻譯自: https://www.javacodegeeks.com/2018/01/take-object-naming.html

總結

以上是生活随笔為你收集整理的我的对象命名的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲欧美视频二区 | 久久亚洲色图 | 免费看成人aa片无码视频羞羞网 | 欧美日韩国产a | 在线观看成年人视频 | 理论片午夜 | 毛片视频免费观看 | 尹人久久| 播播网色播播 | 久久人人爽人人爽人人片亚洲 | 欧美丰满一区二区免费视频 | 理论黄色片 | 久久久经典 | 亚洲a视频在线 | 超碰777 | 一区二区三区四区高清视频 | 奇米影视第四色7777 | 一区二区三区四区五区av | 天天狠天天插 | 99视频在线免费 | 精品久久久久久久久中文字幕 | 精品国产免费av | 成年丰满熟妇午夜免费视频 | 日韩欧美在线观看免费 | 婷婷久久综合网 | sese久久| 国产精品高潮呻吟久久 | 国产在线视频不卡 | 亚洲网色 | 欧美日韩国产专区 | 妇女一级片 | 尤物国产在线 | 免费网站在线观看黄色 | 一级片视频网站 | 综合 欧美 亚洲日本 | 99热麻豆| 色呦呦视频| 久草精品视频 | 九色porny视频 | 麻豆精品免费视频 | 黑人精品一区二区三区不 | 玖玖国产精品视频 | 亚洲成人精品一区二区三区 | 明日叶三叶 | 男女啪啪免费网站 | 波多野结衣免费视频观看 | 377人体粉嫩噜噜噜 www.av黄色 | 美女裸体网站久久久 | 免费涩涩 | 伊人99在线 | 日韩精品视频一区二区三区 | 在线观看av网站 | 日韩福利电影在线 | 国产精品美女久久久网av | 性色av浪潮av | 国产精品久久久久久久毛片 | 性高跟丝袜xxxxhd | 亚洲国产黄色 | 欧美在线天堂 | 91午夜理伦私人影院 | 亚洲电影中文字幕 | 色播欧美| 色一情一交一乱一区二区三区 | 亚洲 欧美 激情 另类 校园 | 国产精品传媒视频 | 中文天堂在线视频 | 国产v亚洲v天堂无码久久久 | 欧美日韩在线不卡 | 午夜av一区二区 | 伊人网视频在线观看 | 精品国内自产拍在线观看视频 | 五月天丁香 | 女人洗澡一级特黄毛片 | 黑人巨大精品欧美黑白配亚洲 | 五月天色综合 | 日本熟妇一区二区三区四区 | 日本午夜免费福利视频 | 少妇又紧又深又湿又爽视频 | 丰满人妻一区二区三区精品高清 | www日日| 亚洲影院在线 | 国产激情视频一区二区 | 亚洲精品一区二区三区精华液 | 欧美成人aaaaa| 午夜性片 | 亚洲综合图区 | 国产精品国产三级国产播12软件 | 姑娘第5集高清在线观看 | 国产午夜精品无码一区二区 | 久久精品亚洲无码 | 国产激情无码一区二区 | 欧美视频在线观看一区二区三区 | 色就是欧美| 在线电影一区二区三区 | 亚洲欧洲日韩 | 欧美熟妇精品一区二区蜜桃视频 | 二区三区免费 | 亚洲无吗av| 天天干天天天 |