重構 過大的類

2021-08-29 13:56:19 字數 783 閱讀 1858

在物件導向的設計程式中,有個「單一職責」原則,也就是說,這個類的功能比較單一,只做一件事情,而且引起這個類物件變化也是唯一的。

說白了就是乙個類只幹一件事情,而且引起這個發生變化的介面也只有乙個。

如果判斷乙個類是過大呢?乙個簡單的辦法就是:這個類中的變數太多了,而且這些變數的含義功能優勢多方面的。出現這種情況就要考慮要把這個類分成幾個小類了。

提煉的時候,盡量把類內相關的變數放到一起。比如長方向的長和寬。

有時候類並非所有的時刻都使用所有的實力變數,把同一時刻使用的變數封裝成乙個類。

擁有太多的變數,往往就會有太多的**,**一多,就會出現重複的**,最後就會變得很混亂。

所以盡量讓每個類只負責乙個功能,不僅有利於除錯**,更有利於整個**的結構整潔。

例子:飛機類

class plane ;
上面的例子可以看出定義了乙個plane類,這個類中既包含了駕駛員的個人資訊,又包含了飛機本身的資訊。所以這個類對於我們來說還是太大了。我們要把這個類分解出兩個小類。

#pragma once

#include //飛行員類

class pilot ;

pilot::pilot()

pilot::~pilot()

//飛機屬性類

class planeattr ;

planeattr::planeattr()

planeattr::~planeattr()

class plane ;

以上!

類之間的重構

類之間的重構操作 主要的內容就是分解龐大的類,合併不負責任的類,在類間搬移值域和函式。1 movemethod 你的程式中,有個函式與其所在的類意外的另乙個類進行更多的交流,呼叫後者,或者背後者呼叫,說明這個函式可能不適合在這個類裡面,適當的時候移動到適當的類裡面。減少類之間的高度耦合。讓類乾淨利索...

重構,我的CSTSocket類,NO MFC。

是不是一直在尋找socket這樣的功能,所有的,對我是說所有的,都是在限定的時間範圍返回結果。socket i o模型中select模型提供了這樣的可能,當然一些超時還要經過一些技巧才行。這是我重構的自己完全動手的第2個可重用類。由於加了 define time infinite 0xfffffff...

python類繼承與重構

usr bin python coding utf 8 class employee 所有員工的基類 empcount 0 def init self,name,salary self.name name self.salary salary employee.empcount 1 def disp...