国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

優秀代碼的必知必會(一)?

ChanceWong / 2472人閱讀

摘要:但由于模式本身有嚴重的缺陷,由于構造方法在多次調用中被分割,導致可能處于不一致的狀態,并且還需要額外增加工作以確保線程安全。方法必須遵從類指定的常規約定,將不同的哈希碼分配給不同的實例對象。

1.使用靜態工廠方法替代構造方法

靜態工廠方法的優點:
不像構造方法,它是有名字的。
它不需要每次調用時都創建一個新對象。
它可以返回 其返回類型的任何子類型的對象。
返回對象的類可以根據輸入參數的不同而不同。
在編寫包含該方法的類時,返回的對象的類不需要存在。

2.當構造方法參數過多時請使用 builder 模式

當一個對象中,屬性過多時,使用構造方法時,參數過多導致難以維護,并且很難讀懂每個參數的含義是什么。

使用 構造方法 來構建必傳參數,而用 setter 的方式來傳可選參數呢?這看似參數少,創建實例也很容易,并且所生成的代碼也易于閱讀。但由于 JavaBeans 模式本身有嚴重的缺陷,由于構造方法在多次調用中被分割,導致 JavaBeans 可能處于不一致的狀態,并且還需要額外增加工作以確保線程安全。

最好處理參數過多的方法是使用 builder 模式,它結合了可伸縮構造方法模式的安全性和 JavaBeans 模式的可讀性,然后在調用 builder 對象的 setter 相似方法來設置每個可選參數。

3.使用依賴注入的方式注入資源

依賴注入的實踐將極大地增強類的靈活性、可重用性和可測試性。

4.不要創建不必要的對象

如果對象是不可變的,它總是可以被重用的,比如 String 類是 final 的,不可變的,最好不要用 new String("test"), 因為它每次都會創建一個新的對象。在性能有嚴格要求的情況下,優先使用基本類型而不是裝箱的基本類型,也要注意無意識的自動裝箱,因為它們會影響性能。

5.消除過期的對象引用

這個也就是常說的內存泄露。當一個類自己管理內存時,應該警惕內存泄漏問題。 每當一個元素被釋放時,元素中包含的任何對象引用都應該被清除。

另一個常見的內存泄漏來源是緩存。一旦將對象引用放入緩存中,很容易忘記它的存在,可以用 WeakHashMap 來表示緩存。

6.避免使用 Finalizer 和 Cleaner 機制,請使用 try-with-resources 語句

用于 Finalizer 和 Cleaner 機制的不確定性,我們不知道它到底何時會執行。例如,依賴于 Finalizer 和 Cleaner 機制來關閉文件是嚴重的錯誤,因為打開的文件描述符是有限的資源。 如果由于系統遲遲沒有運行 Finalizer 和 Cleaner 機制而導致許多文件被打開,程序可能會失敗,因為它不能再打開文件了。可以用 try-with-resources 語句 或 try-finally 語句,當打開多個文件時,try-finally 語句的可讀性就不如 try-with-resources 語句,因此推薦使用 try-with-resources 語句。

7.重寫 equals 方法時同時也要重寫 hashcode 方法

重寫 equals 方法時,需要滿足以下特性。
自反性:一個對象必須與自身相等。
對稱性:任何非空引用 x 和 y,如果且僅當 y.equals(x) 返回 true 時 x.equals(y) 必須返回 true。
傳遞性:如果第一個對象等于第二個對象,第二個對象等于第三個對象,那么第一個對象必須等于第三個對象。
一致性:如果兩個對象是相等的,除非一個(或兩個)對象被修改了, 那么它們必須始終保持相等。
非空性:對于任何非空引用 x,x.equals(null) 必須返回 false。

每次重寫 equals 方法時都必須重寫 hashCode 方法,否則程序將無法正常運行。 hashCode 方法必須遵從 Object 類指定的常規約定,將不同的哈希碼分配給不同的實例對象。

8.始終重寫 toString 方法

Object 類提供了 toString 方法的實現是包名+類名+@+哈希碼的無符號十六進制。toString 的通用約定要求,返回的字符串應該是“一個簡潔但內容豐富的表示,對人們來說是很容易閱讀的”。就需要 toString 方法,方便可讀性。

9.考慮實現 Comparable 接口

在需要可比較的場景中,最好實現 Comparable 接口,以便在基于比較的集合中輕松對其實例進行排序,搜索和使用。 比較 compareTo 方法的實現中的字段值時,請避免使用"<"和">"運算符。 最好使用包裝類中的靜態 compare 方法或 Comparator 接口中的構建方法。

10.使類和成員的可訪問性最小化

一個優秀設計的組件隱藏了它的所有實現細節,干凈地將它的 API 與它的實現分離開來。然后,組件只通過它們的 API 進行通信,并且對彼此的內部工作一無所知。稱為信息隱藏或封裝,是軟件設計的基本原則。

Java中的四種訪問級別:
private——只能自己訪問。
package-private——默認級別,同包中的任意類訪問。
protected——子類和自己可以訪問。
public —— 任何類都可訪問。

PS:
清山綠水始于塵,博學多識貴于勤。
我有酒,你有故事嗎?
微信公眾號:「清塵閑聊」。
歡迎一起談天說地,聊代碼。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/74152.html

相關文章

  • 前端必必會HTTP請求系列(二)簡單點的HTTP協議

    摘要:通過請求和響應的交換達成通信協議中已經規定了請求是從客戶端發出,最后由服務端響應這個請求并返回。隨后的字符串指明了請求訪問的資源對象。協議自身不對請求和響應之間的通信狀態進行保存,也就是說這個級別。從前發送請求后需等待并受到響應。 showImg(https://segmentfault.com/img/bVbmDsG?w=1024&h=538); http協議用戶客戶端和服務器之間的...

    xbynet 評論0 收藏0
  • 前端必必會HTTP請求系列(三)HTTP報文內的http信息

    摘要:報文用于協議交互的信息被稱為報文。現在出現的各種首部字段及狀態碼稍后會闡述。狀態碼響應報文包含了多個范圍的內容使用。如果服務器無法響應范圍請求,則會返回狀態碼和完整的實體內容。 showImg(https://segmentfault.com/img/bVbthNL?w=900&h=500); http報文 用于HTTP協議交互的信息被稱為HTTP報文。請求端的http報文叫做請求報文...

    Invoker 評論0 收藏0
  • 前端必必會HTTP請求系列()了解Web及網絡基礎

    摘要:誕生了在深入學習之前我們來了解一下他的背景,同時了解一下當時制定的初衷,這樣有助于我們更好的理解。為知識共享而規劃的在年月,互聯網還只屬于少數人,在互聯網的前期,誕生了。的成長時代年月,成功研發了世界上第一臺服務器和瀏覽器。 showImg(https://segmentfault.com/img/bVblTgr?w=800&h=400);在當前大前端的環境下,前后端分離,前后端同構等...

    qylost 評論0 收藏0

發表評論

0條評論

ChanceWong

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<