第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何以清晰易讀的方式根據(jù)參數(shù)創(chuàng)建數(shù)組?

如何以清晰易讀的方式根據(jù)參數(shù)創(chuàng)建數(shù)組?

守著一只汪 2023-08-09 14:55:48
這是我的問題:我想以非常清晰易讀的方式創(chuàng)建一個(gè)數(shù)組,以便讀者能夠立即知道數(shù)組的元素。當(dāng)數(shù)組固定后,就很容易也很清楚了:    String[] columns = new String[] { "unit", "file_row", "unit_row", "content" };    String[] types = new String[] { "INTEGER", "INTEGER", "INTEGER", "TEXT" };但我也有變量數(shù)組,具體取決于參數(shù):    // Is an argument of my method, containing the variable elements of the future array    String[] method_arg = new String[] {"key1", "key2"};    // The clear and readable way doesn't work anymore    String[] columns = new String[] { "unit", method_arg, "hash"};    String[] types = new String[] { "INTEGER", method_arg_types, "INTEGER"};    // And the ways that work are ... much less readable    String[] columns = new String[] {"unit"};    columns = Stream.concat(Arrays.stream(columns), Arrays.stream(method_arg)).toArray(String[]::new);    columns = Stream.concat(Arrays.stream(columns), Arrays.stream(new String[] {"hash"})).toArray(String[]::new);    // Awkward    String[] types = new String[method_arg.length + 2];    Arrays.fill(types, "TEXT");    types[0] = "INTEGER";如何使代碼保持清晰易讀?代碼相當(dāng)靈活,使用列表應(yīng)該不是問題,但我寧愿避免使用非標(biāo)準(zhǔn)庫。另外,我知道一個(gè)解決方案是創(chuàng)建一個(gè)方法來創(chuàng)建這些數(shù)組,例如    join_arrays(new String[] {"unit"}, method_arg, new String[] {"hash"});但如果有解決方案使代碼清晰并避免創(chuàng)建專用函數(shù),那就更好了。如果沒有,我將求助于這個(gè)選項(xiàng)。感謝您有一個(gè)愉快的一天 !
查看完整描述

3 回答

?
森欄

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超5個(gè)贊

我通常最終會(huì)使用自定義方法來解決此類問題:

private <T> T[] makeArray(T... elements) {
    return elements;
}

你的例子看起來像:

String[] columns = makeArray("unit", method_arg, "hash");
String[] types = makeArray("INTEGER", method_arg_types, "INTEGER");


查看完整回答
反對(duì) 回復(fù) 2023-08-09
?
心有法竹

TA貢獻(xiàn)1866條經(jīng)驗(yàn) 獲得超5個(gè)贊

我認(rèn)為您誤解了代碼的清晰度和可讀性。首先,您完全正確,代碼的清晰度和可讀性具有最高價(jià)值。但是,這并不意味著讀者應(yīng)該立即看到代碼的結(jié)果 - 在您的情況下是數(shù)組的內(nèi)容。這意味著讀者首先可以清楚地看到代碼的作用,其次可以清楚地看到代碼是如何做的。有很多方法可以確保清晰度。

  • 將較長的方法分解為較短的方法,最好是 4 - 5 行,但最多不超過 10 - 15 行。確保每個(gè)方法僅處理一個(gè)邏輯上不可分割的問題。

  • 確保方法名稱具有信息性

  • 參數(shù)數(shù)量保持最少 (0 - 3)

  • 參數(shù)的名稱和順序是有意義的。

  • 返回值與方法的目的相匹配。

當(dāng)然,這不是完整的列表。


查看完整回答
反對(duì) 回復(fù) 2023-08-09
?
梵蒂岡之花

TA貢獻(xiàn)1900條經(jīng)驗(yàn) 獲得超5個(gè)贊

Java 有一個(gè)更簡單的方法,恕我直言,這更容易一點(diǎn),并且可以被編譯掉:-)


示例用法,類似于其他建議:


private static void method(String method_arg, String method_arg_types) {

? ? String[] columns = array("INTEGER", method_arg, "INTEGER");

? ? String[] types = array("INTEGER", method_arg_types, "INTEGER");

}

作為 var-args 實(shí)現(xiàn)方式的副作用,實(shí)現(xiàn)要容易得多。


@SafeVarargs

public static <T> T[] array(T... values) {

? ? return values;

}

它也在org.assertj.core.util中實(shí)現(xiàn),恕我直言,它應(yīng)該是 JDK 的一部分:-)



查看完整回答
反對(duì) 回復(fù) 2023-08-09
  • 3 回答
  • 0 關(guān)注
  • 217 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)