對設計模式 重構的一點點小理解 完善版

2021-09-01 04:49:28 字數 2711 閱讀 2811

一、先說點偏題的,學習與動手實踐的區別

二、我的理解

工作2 年多來,看了一些設計模式、重構的書籍、資料。

現在自己突然覺得:

設計模式和重構其實講的是同乙個東西,他們的思想和原則其實是一樣或者說是相近的,只是從不同角度和方向而已。

設計模式、重構是從不同的出發點,用了一些相近的思想和原則來指導我們如何寫出更合適的**。

1、設計模式更多的是從設計的角度出發,來指導的。是從上到下

過程 是【問題-- 分析、設計(key )-- 最優答案】

2、重構更多的是從**角度,從優化角度,來指導的。是從下到上

過程 是【問題-- 一般答案-- 優化(key )-- 最優答案】

設計模式強調 分析、設計,強調思考、思想

重構強調 先動手,有錯就改

如果是解決同乙個問題,a

、不管你是用設計模式,從設計角度出發,一開始用設計模式中得原則和思想來分析,然後完成**。 b

、還是你是先寫**,完成功能,然後用重構中得原則、思想、方法來對**重構,然後得到這種**。

如果都得到最優結果,不管你是用a 方式,還是用b 方式,我覺得**結構是非常相近的。

所以我認為設計模式和重構其實是同乙個東西。

三、我的心得體會

工作中:【盡量少用設計模式,一定要多重構】

原因不好說,我也說不清楚。

我主要認為的是,設計模式會讓開發進度漫長,很容易過度設計,可能會讓**變的複雜,易讀性降低。

另外,

重構後的**就會慢慢趨向模式,因為這兩種手段的最終最優結果是一樣的

我的這些心得體會,一切一切的原因都是 :

1、無論是誰,對業務【現實世界】、系統【**】的理解,都是逐步深入的,你不可能一下子就會對業務、和未來的系統有很深入的理解;

2、現實與系統是有差距的,不同的,即現實世界的問題、邏輯與**中邏輯、問題是有差距的,不同的;

3、有一些**中得東西、問題,並不是從現實世界中分析、抽象出來;

設計模式中有很多原則:單一職責、關閉、依賴倒置、迪公尺特等等,

重構中也有很多手段和方法,

但我覺得設計模式和重構的思想中,最重要的分兩個類別(這兩個類別有交差):

抽象

職責耦合度變化的和不變的

【1 、抽象:類、函式的真正作用或者說其思想,不是封裝,而是抽象。必須學會抽象,抽象出相同的部分,封裝其變化的 部分; 2

、職責:這個太重要了,一定要認真分析每個類、每個模組、每個元件的職責,是設計模式和重構最關鍵的部分。在分析職責的時候,不僅僅只分析自身的職責,還要分析跟外部的聯絡,這也是其職責的一部分。 3

、耦合度:耦合度包括兩部分-- 現實世界中耦合的抽象,降低**維護成本、複雜度的需要使用的**。 】

理想中得過程:

1、接近完美的設計------ 》2 、接近完美的**

現實中較好的過程:

1、乙個不錯的抽象框架與設計----- 》2 、乙個不錯的**架構----- 》3 、逐步重構**----- 》4 、完善設計---- 》5 、接近完美的**

真正工作中的過程:

1、

腦子裡有的大部分是功能方面的邏輯和思路,只有非常少得抽象------ 》

2、

用物件導向的語言,開發面向過程的。【這一步有很大的作用,能很快很容易加深對業務和**的理解】------- 》

3、情況a :覺得整體**、結構很爛、很臭、不舒服、不清晰等等,

原因:很可能設計上有問題,設計的不夠好,

解決辦法:這時候,需要用加深後的理解,重新設計或者完善設計。

情況b :自己覺得**區域性範圍有問題,耦合度強,職責不清晰,很難復用等,

原因:很可能是**結構不好,沒抽象好,沒職責分配的不好,

解決辦法:進行**重構

在實際工作中,

為了進度,為了敏捷,

還有就是軟體的本質:需求不確定,變化性,還有人的思維的侷限性:很難面面俱到,

所以大部分,工作中是【設計模式+ **的重構】的增量迭代。

即,一開始簡單出發,從確定的功能 + 能預期到的變化,進行簡單設計, 然後完成功能,完成**,融合再重構,改設計。。。

一點點小總結

最近幾次考試很不在狀態,掛分成了常態,每場必爆30 200分不等 qwq 總結一下之前爆過的奇葩方法,希望以後不要再犯了。聯賽模擬測試1,由於兩個壓縮包乙個中文名乙個英文,然後發現要提交的是英文,而我要提交的是中文,於是直接中文的改名,然後重名,然後直接點取消。然後把中文的刪掉,交上去檢查一下,發現...

對模型期望的一點點理解

在機器學習中,通常會假設所有的樣本 於同乙個分布 真實分布 這個分布是乙個抽象的概念,當這個分布具體到某乙個模型中時,我們引入另乙個假設即 通過以 delta 為引數的模型,能夠正確表達真實的分布 我們訓練模型的目標也就是 訓練模型的引數 theta 使其不斷的接近 delta 最終使得模型能夠較為...

深度學習的一點點一點點知識

我們手裡有大量的x和y,求權重訓練的是權重資料樣本 xwy 身高0體重0 血型0.3 腳指頭0.8 一組x計算出對應的乙個y 計算過程是w 下面的就是最基礎的公式 我們已知資料是大量的x和y 希望通過 西塔 來獲得w 我們的學習才剛剛開始,首先需要理解的是與門 x1x2y0 0001 0100 11...