學習之路四十一丶簡論重構

2022-01-19 17:28:43 字數 1333 閱讀 8269

四月份的最後一天,寫點心得,記錄一下。

這個月一直忙著開發乙個基於win32 api的程式,大量運用了控制代碼等很多api的知識。

尤其隨著**量越來越大,邏輯越來越複雜,**的清晰,健壯,擴充套件性成了乙個需要重視的問題,也就是要適時的重構了。

一丶重構的時機

上個星期在修改一塊重大邏輯的時候,需要修改很多**,當時我犯了乙個錯誤,一開始想了乙個思路,但一上來沒寫多少就開始想著重構**,目的是使其**清晰以及可擴充套件。

可是隨著時間的流失,不僅沒有重構好,而且該改的邏輯也沒有改好,我很鬱悶,為什麼會這樣呢?於是開始了沉思 - 重構的時機應該是什麼時候?

重構的時機要把握的恰到好處,太早缺乏**之間的連貫性,因為你**都沒有寫好,就想著開始重構了,那可不好;太晚**寫好了,邏輯也通了,但是改起來特別費力,是牽一髮而動全身,說不定還改出了更多問題呢,需要花更多的時間去修改**以及 fix bug。

所以重構的時機因人而異,因你的能力,因你的業務流程熟悉度,不過我選擇的時機是中間靠前一點

因為這個時候你已經寫了將近一半的**,業務邏輯也已經實現了一半了,那麼是否出現**冗餘,閱讀性差,抽象程度差的問題,如果有的話就要想想該怎麼重構了,如果沒有繼續往下寫,保持好狀態。

當快要接近完成的時候,再來看看以前的**,因為從現在的眼光看以前寫的,總會有新的想法,如果有,趕緊實施,寫出高質量**。

所以重構的時機要自己掌握好,其實有幾點可以表明你需要重構:

1.冗餘,重複**太多;

2.邏輯層次不清晰,變數命名自己都搞不清楚了;

3.類,方法各個層次之間很混亂;

4.無法進行有效的擴充套件;

5.健壯性太差

所以在遇到上面一些問題之後,就要思考需要用哪些重構技巧來改善**質量了,這個需要積累,加油。

二丶重構的一些技巧

這裡就寫一些我重構用的方法:

1.去重,提取共用方法

記得寫過乙個去除重複的try-catch的**,用到了委託以及反射來減少重複**

2.抽象

介面,繼承,虛方法,抽象類。

其實最重要的是你要深刻理解你的業務,並且抽取他們共同的部分,以及通過虛方法來實現乙個方法的不同操作

3.抽象工廠

抽象工廠又可以分為:單例工廠和多例項工廠

4.配置檔案

自定義配置檔案,可以更有效的控制不同方式做不同的事

5.靈活運用attribute

6.取更有意義的變數,屬性,方法,類的名稱,長一點沒有什麼大礙

7.反射

好了,就這些,還有很多沒學習了,繼續加油......

以同步至:個人文章目錄索引

CUDA學習(四十一)

表面功能 在下面的部分中,boundarymode指定邊界模式,即處理超出範圍的表面座標的方式 它等於cudaboundarymodeclamp 在這種情況下,超出範圍的座標被鉗位到有效範圍 或cudaboundarymodezero 在這種情況下超出範圍的讀取返回零並且超出範圍的寫入被忽略 或cu...

機器學習基礎(四十一) KNN

所謂 k 近鄰的數學表達,也即統計計數 再進行表決 的數學表達。y argmaxcj xi nk x i y i cj i 1,2,n j 1,2,k k 值的選擇會對 k 近鄰法的結果產生重大影響。如果選擇較小的 k 值,就相當於用較小的鄰域中的訓練例項 xi nk x 如果選擇較大的 k 值,將...

Hadoop學習四十一 HBase基礎

一.概述 再次學習hbase實戰和hbase權威指南時,對hbase了解又深了許多。本文列出一些值得關注的點。二.hbase物理和邏輯儲存結構 user表包含兩個列族info activity,為此表預分割槽 1,3 3,正無窮 此時user表在hbase裡的物理和邏輯儲存結構如上圖。乙個user表...