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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

命名对象实体对象_我的对象命名

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

命名對象實體對象

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

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

湯姆和杰里–杰里的表哥,威廉·漢娜(William Hanna)和約瑟夫·巴貝拉(Joseph Barbera)

然后是該接口的實現。 由于將來可能會有更多實現,因此我主要根據封裝的細節來命名對象。 因此,假設接口是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

命名對象實體對象

總結

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

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

主站蜘蛛池模板: 久久av一区二区 | xxxx少妇| 久久高清国产 | 久久小草 | 糖心视频在线 | 中日韩精品一区二区三区 | av天天堂 | 亚洲天天做 | 国产中文一区二区三区 | 欧美极品jizzhd欧美 | 91国在线 | 免费麻豆av | 一级片aaaaa| 日韩avxxx | 波多在线视频 | 国产露脸无套对白在线播放 | 色网站入口| 女的高潮流时喷水图片大全 | 在线观看毛片网站 | 日本xxxx高清 | 亚洲一区二区三区电影 | 国产精欧美一区二区三区蓝颜男同 | 先锋av网| 色综合一区二区三区 | 特级丰满少妇一级aaaa爱毛片 | 午夜在线观看av | 欧美在线观看视频 | av在线片| 伊人国产女 | 日韩欧美中文字幕在线播放 | 久久久久久欧美精品se一二三四 | 黄色av网址在线 | 国产91在线播放精品91 | а√天堂8资源在线官网 | 蜜桃视频中文字幕 | 久久久噜噜噜久久中文字幕色伊伊 | 免费男女乱淫真视频免费播放 | 69国产精品视频 | 色噜噜综合网 | 国产精欧美一区二区三区白种人 | 成人av片在线观看 | 精品国产a线一区二区三区东京热 | 亚洲最大福利网站 | 精品人妻无码一区二区色欲产成人 | 爱爱爱网 | 成人在线观看www | 国产精品二区在线 | 中日韩精品在线 | 国产高清在线观看 | 少妇高潮毛片 | 成片免费观看视频 | 中文字幕av专区 | 小萝莉末成年一区二区 | 国产女主播喷水高潮网红在线 | 天堂网2018 | 日本高清视频一区 | 亚洲狠狠婷婷综合久久久久图片 | jizz日本18 | 男女激情四射网站 | 在线免费观看a级片 | 国产精久久久久 | zzjizzji亚洲日本少妇 | 精品欧美一区二区三区久久久 | 欧美经典一区 | 国产伦精品一区二区三区免.费 | 天天曰天天射 | 国产微拍精品 | 国产精品激情偷乱一区二区∴ | 色吊丝中文字幕 | 日韩欧美久久 | 中文字幕第4页 | 欧美黄色录像 | 九月丁香婷婷 | 婷婷久久五月 | 亚洲美女视频在线观看 | 精品黄色一级片 | 成人mv | 精品人妻伦九区久久aaa片 | 九色自拍视频 | 91直接进入| 日韩精品一区二区在线观看 | 懂色a v | 国产破处av | 日日影院 | 亚洲精品网站在线观看 | 深夜成人在线观看 | 日韩欧美在线免费 | se日韩| 国产午夜免费福利 | 超薄肉色丝袜一区二区 | 亚洲无码乱码精品国产 | 国产三级视频 | 在线观看av不卡 | 国产精品自拍亚洲 | www.插插插 | 就爱av| 夜夜摸夜夜操 | 亚洲精品无码久久 | 国产成人精品一区二 |