java 参数命名冲突_Java中的命名参数
java 參數命名沖突
創建具有許多參數的方法是一個主要的缺點。 每當需要創建這樣的方法時,就在空氣中聞一聞:這是代碼的味道。 強化單元測試,然后進行重構。 沒有借口,沒有屁股。 重構! 使用構建器模式,甚至更好地使用Fluent API。 對于后者,注釋處理器的影響可能會有很大幫助。
綜上所述,當我們面對現實生活而不是我們在業余愛好項目中可以遵循的理想主義模式時,我們可能會達到人生的關鍵。 遺留下來的企業庫怪物具有數以千計的參數方法,并且您沒有權限,時間,勇氣或興趣(對您不利)來修改……操作……對其進行重構。 如果有時間,您可以創建一個構建器作為外觀,將丑陋的API隱藏在其后。 創建構建器仍然是您甚至在編寫之前就必須進行單元測試的代碼(您知道:TDD),而您可能沒有時間。 調用怪異方法的代碼也已經存在,您只需對其進行維護即可。
您仍然可以做一些小技巧。 它可能并不完美,但是仍然有些完美。
假設有一個方法:
public void monster(String contactName, String contactId, String street, String district,...Long pT){ ... }第一件事是在調用者的位置明智地選擇局部變量。 可惜已經選擇了名稱,您可能不想更改它。 可能有某些原因,例如遵循了應用程序范圍的命名約定,即使您的樣式不是這樣,也可能有意義。 因此調用:
monster(nm, "05300" + dI, getStrt(), d, ... , z+g % 3L );不完全是我在說的。 這就是您所擁有的,您可以使用它,也可以在代碼中插入新變量:
String contactName = nm; String contactId = "05300" + dI; String street = getStrt(); Street district = d; ... Long pT = z+g % 3L; monster(contactName, contactId, street, district, ... ,pT );或者甚至可以用Java中不常見的方式編寫它,盡管完全合法:
String contactName, contactId, street, district; ... Long pT; monster(contactName = nm, contactId = "05300" + dI, street = getStrt(), district = d, ... ,pT = z+g % 3L );好吃嗎 要看。 我不會在口味上爭論。 如果您不喜歡那樣,還有另一種方法。 您可以定義輔助方法和非常簡單的靜態方法:
static <T> T contactName(T t){ return T;} static <T> T contactId(T t){ return T;} static <T> T street(T t){ return T;} static <T> T district(T t){ return T;} ... static <T> T pT(T t){ return T;}monster(contactName(nm), contactId("05300" + dI), street(getStrt()(, district(d), ... ,pT(z+g % 3L) );該代碼仍然很丑陋,但是在調用者處更具可讀性。 你甚至可以收集靜態方法為工具類或接口在Java中8的情況下,命名為喜歡with , using , to等等。 您可以將它們靜態導入到您的代碼中,并進行如下一些方法調用:
doSomething(using(someParameter), with(someOtherParameter), to(resultStore));如果您回答了最后一個問題,那么所有這些都將使您感到蹺:參數pT是什么* 。
( * “ whatever”(您可以隨意替換為其他單詞)
翻譯自: https://www.javacodegeeks.com/2014/09/named-parameters-in-java.html
java 參數命名沖突
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的java 参数命名冲突_Java中的命名参数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何准确衡量商务本的性能表现商务本性能怎
- 下一篇: vivo手机官网(vivo手机官网登录)