JavaRush /Java Blog /Random-TW /羅伯特馬丁,《乾淨的代碼》。給開發者的「功夫代碼」書評
Artem Murk
等級 35
Днепр

羅伯特馬丁,《乾淨的代碼》。給開發者的「功夫代碼」書評

在 Random-TW 群組發布
你好,Javarashevites!本文是 Robert Martin 所著《Clean Code》一書的評論。我們將一起研究改進和優化程式碼的方法,最後,一個小但有趣的任務等著您。
羅伯特馬丁的《整潔代碼》。 給開發者的「功夫代碼」書評——1
每天,當我們打開程式碼編輯器時,我們都會遇到許多類別、函數和變數。最好的選擇是,如果這是您從頭開始編寫的程式碼,編寫一次,其中只有幾行,您獨自處理它,沒有編輯,也沒有客戶的進一步支援。但!正如實踐所表明的那樣,是的,我想你自己也明白這種情況不會發生。基本上,我們必須以某種方式與團隊成員進行交互,維護「Hindu」程式碼,並將產品解析為數百萬行。我經常聽到我的培訓同事這樣回答:“這段程式碼是我寫的,我不會向任何人展示它”,但是當我在Help for Help 上看到此類程式碼的請求時,需要很長時間時間(有時真的很長一段時間)去深入研究和理解這個人想告訴我什麼,我甚至想說「擦掉並重新重寫」!感謝那些願意幫助你、正確寫作的人的時間和精力,如果你不知道如何做,學習永遠不會太晚。Robert Martin 的書在這種格式的書籍中脫穎而出,因為它包含許多 Java 範例。這對我來說可能有點狂熱,但它是用 OOP 風格編寫的,即以零件和章節的形式編寫。這本書易於理解和閱讀,很容易在旅途中或晚上睡前閱讀。Clean Code 分為 3 個部分。在第一部分中,我們被要求瀏覽本書的理論,以了解設計模式和良好禮儀的規則。第二部分邀請我們練習重構和寫作,第三部分是範例中程式碼「味道」的最終總結。嗯,作者涉及了許多主題,您主要需要 Java Core 的知識,但也有專門介紹 JUnit 單元測試、Log4j 日誌記錄、設計中最簡單模式的知識的部分(但正如我上面所說,沒有其中很多,所有難以理解的內容都可以成功地用谷歌搜索,是的,並在JavaRush 課程中對其進行分析)。本書各章節之間沒有關聯,您可以順利地從您喜歡的章節開始閱讀。我從書中學到的主要思想的簡要總結。我將感謝您對它們的評論,您可以在評論中分享您自己對這些陳述的看法。

1.評論==邪惡。

在大多數情況下,註解是我們試圖掩蓋糟糕程式碼的拐杖。在某些情況下,如果存在持續的程式碼重構,他們也會謊報方法或變數的用途。

2.註解程式碼,死程式碼。

將這些程式碼留在您的應用程式中無異於垃圾。未使用的程式碼會隨著時間的推移而積累,並幹擾應用程式的清潔度,請不時檢查此類模組的程式碼。

3. 方法、類別和變數的標題。

值得單獨撰寫文章來討論這個主題。不要偷懶,寫下可以說明其用途的名稱。了解拼字標題的一些標準。該主題是詳細研究的“必備”主題。

4. 每個方法和變數在類別層次結構中都有其位置。

通常,類別可以具有變數和方法(靜態和非靜態)、建構子、巢狀類別和內部類別以及枚舉。總之,資訊量很大,需要確定每個人在班級中的位置。如果你看java核心類,你會發現結構是清晰的,我們可以看到每個部分在它的位置,當然在你的專案中它可以在專案內改變,但不能在每個類別中改變。對於我自己,我定義了以下建構結構:在類別的開頭,我有靜態變量,然後是物件變數+枚舉(如果存在)。在變數之後,我定義類別建構函數。然後我編寫處理該類別的方法。在方法之後我寫 getter 和 setter。最後我有內部課程。您可以使用我的結構或在評論中編寫您自己的結構。

5. 方法的抽象層次。

對我來說,這是第一大發現。每個方法僅包含一個抽象層級的運算子。您不應該將多層操作混合在一起。

6.錯誤處理。

Checked 和 Unchecked Exception,在專案中使用哪個更好(你覺得怎麼樣?寫評論)?我是checked 的支持者,但這本書有助於從外部看待Unchecked Exceptions。事實上,未經檢查的異常不會破壞方法簽名,特別是考慮到異常一次「刺穿」多個層。最小的變化帶來的不便導致在捕獲它之前重新定義整個方法鏈,這在許多情況下對於開發來說是極其不方便的。

7. 代碼格式化。

格式正確的程式碼不僅清晰,而且可讀性強。你會立即了解括號和裡面的動作。使用 if, else 結構中的條件範例,您不應該將所有內容寫在一行中,最好移動長鏈。

8. 條件的否定。

盡量避免在條件下否認,這更多的是心理因素,我們的大腦不能很好地感知否認,是的!之前的表達可能不會被注意到。例如,否定 if (!condition.isTrue) 更好地重寫該方法,它會讓像這樣 (condition.isFalse) 更容易

9. 函數必須執行一項操作。

如果您的方法執行許多操作,則將它們分割為單操作方法。這些方法非常容易支援、易於測試,並且在必要時可以替換或刪除。

10.不要重複自己的話。

不要重複程式碼 DRY(不要重複自己)。這是將顯著減少程式碼的基本規則之一,請記住這一點。嘗試將所有重複的程式碼放入一個單獨的函數中。當然,我們可以多談DRY、KISS(Keep it simple Stupid)、SOLID、YAGNI。這些術語對於理解和設計至關重要。它們值得單獨寫一篇文章,也許我會再次寫它們,因為本文專門回顧《乾淨程式碼》一書。
羅伯特馬丁的《整潔代碼》。 開發者「功夫碼」書評——2
正如所承諾的,這對您來說是一項小而容易的任務。該程式必須根據給定的數據計算肥胖指數。在註釋中寫下程式碼中的錯誤數量和修復。附:如果使用正確,則該程式碼可以正常工作並執行其功能。
//Weight in kg.
//Height in metres.
public class sample {
    public static void main (String[] args) {
        humanIMB humanIMB = new humanIMB(80,1.52);
        System.out.println(humanIMB.Result());
    }
}
class humanIMB {
    public double W; //Weight Human
    public double H; // Height Human
    private static double imb;
    public humanIMB(double w, double h) {
        W = w;
        H = h;
        imb = W / (H * H);
    }
    public double takeW() {
        return W;
    }
    public void putW(double w) {
        W = w;
        imb = W / (H * H);
    }
    public double takeH() {
        return H;
    }
    public void putH(double h) {
        H = h;
        imb = W / (H * H);
    }
    public static double takeImt() {
        return imb;
    }
    public static String Result() {
        String  string = null;
        if (imb >=18.5 & imb <25) {
            string ="Норма, ты в форме!";
        }
        if (imb >=25 & imb <30) {
            string ="Предожирение. Эй, поосторожнее с пирожными ";
        }
        if (imb >=30) {
            string ="Ожирение. SCHWEINE! Хватит жрать, иди на треню!";
        }
        if (imb <18.5) {
            string ="Дефицит массы тела. В модели решил переквалифицироваться?";
        }
        return string;
    }
}
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION