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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Java 中的另一個構(gòu)建器中使用構(gòu)建器

在 Java 中的另一個構(gòu)建器中使用構(gòu)建器

萬千封印 2021-09-15 10:36:52
在 Java 中的另一個構(gòu)建器中使用構(gòu)建器是一個好習(xí)慣,還是向“更高”級別的構(gòu)建器添加方法以在幕后創(chuàng)建對象會更好?new Car.CarBuilder().engine(new Engine.EngineBuilder().name("Diesel").weight(5).build()).build();
查看完整描述

3 回答

?
米脂

TA貢獻1836條經(jīng)驗 獲得超3個贊

這歸根結(jié)底是一個主觀問題。


也就是說,作為對立面:Google 代碼庫中的 Java 代碼使用了大量構(gòu)建器,尤其是對于協(xié)議緩沖區(qū)等數(shù)據(jù)對象。如果內(nèi)聯(lián)表達式就足夠了,那么一般的風(fēng)格偏好傾向于避免使用局部變量,這會導(dǎo)致很多代碼看起來像您的示例。


一個顯著的區(qū)別是 Google 風(fēng)格鼓勵一種叫做矩形規(guī)則的東西(不幸的是,我找不到它的鏈接,盡管這里提到了它)。(我想說這個想法是 John DeTreville 提出的,但我不是 100% 確定。)本質(zhì)上,矩形規(guī)則說您希望語句中的每個表達式都適合矩形字符塊。在表達式的矩形內(nèi)可以有子表達式(每個子表達式在它們自己的矩形內(nèi)),但外部表達式的任何部分都不應(yīng)位于內(nèi)部表達式的矩形內(nèi)。


(當我在那里時,一致認為外部表達式的結(jié)束括號不算作侵入內(nèi)部矩形,但外部控制語句的結(jié)束括號算作。顯然你可以花一整天的時間討論這樣的風(fēng)格問題。)


這意味著編寫類似您展示的內(nèi)容的首選方式看起來更像是:


Car car =

    Car.builder()

        .engine(

            Engine.builder()

                .name("Diesel")

                .weight(5)

                .build()

        )

        .build();

或者,更常見的是(稍微彎曲矩形規(guī)則):


Car car = Car.builder()

    .engine(

        Engine.builder()

            .name("Diesel")

            .weight(5)

            .build())

    .build();

我個人認為最后一個例子最容易閱讀:它緊湊而不忙,并且將注意力吸引到語句的重要部分,而不會用不重要的細節(jié)分散注意力。并且文本的總體布局與數(shù)據(jù)結(jié)構(gòu)相匹配,這也有助于理解。


當然,這只是一種風(fēng)格選擇。但是,一個非常大且成功的代碼庫做出了這樣的選擇這一事實表明,以這種方式編寫代碼并沒有錯,如果您喜歡這樣做,您應(yīng)該可以繼續(xù)。


查看完整回答
反對 回復(fù) 2021-09-15
  • 3 回答
  • 0 關(guān)注
  • 168 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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