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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

变色龙功能

發(fā)布時(shí)間:2023/12/3 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 变色龙功能 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在《神秘博士》中,卡梅利恩(Kamelion)角色是可以采取任何形式的機(jī)器人。 據(jù)稱,他們使用的物理道具非常麻煩,只有其創(chuàng)建者才能理解,而該創(chuàng)建者并沒(méi)有幫助糾正它。

因此,Chamelion功能...

考慮以下代碼:

public List<Document> getAllDocuments(Request request, int userId, String field) { Query q = createQueryFrom(request); switch (field) { case "title" : q.addCriteria(Criteria.where( "title" ).is(request.getTitle()); break ; case "name" : q.addCriteria(Criteria.where( "name" ).is(request.getName()); break ; ?default : throw new IllegalArgumentException( "Bad field: " + field); } return q; }

上面有很多事情。 讓我們來(lái)了解它。 出現(xiàn)了某種請(qǐng)求,我們可以從中進(jìn)行基本查詢。 然后,根據(jù)調(diào)用方提供的字段,我們使用該字段向查詢中添加條件,并將操作數(shù)從請(qǐng)求中拉出。

最重要的是,如果調(diào)用者提供了一個(gè)我們不知道如何查詢的字段,我們就必須拋出一個(gè)錯(cuò)誤。

這個(gè)功能怎么了?

我會(huì)告訴你怎么了...

這不是功能。 這是兩個(gè)功能。 另請(qǐng)參閱兩種音樂(lè) 。

調(diào)用代碼可能如下所示:

// one call site getAllDocuments(request, id, "title" ); // another getAllDocumetns(request, id, "name" );

我們正在使用字符串選擇來(lái)控制單個(gè)函數(shù)的一半流程。

比這更糟的是……當(dāng)某些調(diào)用者發(fā)明一個(gè)我們從未聽(tīng)說(shuō)過(guò)的字符串時(shí),我們需要拋出一個(gè)異常。

讓我們?cè)僦貥?gòu)一下:

public List<Document> getAllDocumentsByTitle(Request request, int userId) { Query q = createQueryFrom(request); q.addCriteria(Criteria.where( "title" ).is(request.getTitle()); return q; } public List<Document> getAllDocumentsByName(Request request, int userId) { Query q = createQueryFrom(request); q.addCriteria(Criteria.where( "name" ).is(request.getName()); return q; }

通過(guò)將其分為兩個(gè)功能,它可以自我記錄,易于遵循并且不需要處理流氓字符串。 它可能會(huì)稍微快一點(diǎn),但這并不是真正的主要驅(qū)動(dòng)力。

但是重復(fù)呢?

我懷疑變色龍功能的一種驅(qū)動(dòng)程序是減少代碼重復(fù)的錯(cuò)誤嘗試。 請(qǐng)注意,以上示例提供了在兩個(gè)函數(shù)( createQueryFrom)中重用的代碼示例,但每個(gè)函數(shù)中都有獨(dú)立的邏輯。 它不是重復(fù)的代碼。

我從中提取的示例可能最初有多行代碼,現(xiàn)在我們看到createQueryFrom可能引起了對(duì)重復(fù)的恐懼,這反過(guò)來(lái)又造成了怪物。 堅(jiān)持不懈地重構(gòu)以減少正確的重復(fù),這樣的事情就不會(huì)發(fā)生。

翻譯自: https://www.javacodegeeks.com/2019/08/chameleon-function.html

總結(jié)

以上是生活随笔為你收集整理的变色龙功能的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。