2021年4月30日 星期五

[C++ / C#] 程式碼的時序耦合 Temporal Coupling ?

網路社群中很多人也積極分享著新學到的知識,

剛好看到一篇 

筆記-什麼是時序耦合(Temporal Coupling)?



直接引用作者的解釋:

"時序耦合指的是這個 Class 中含有的 Functions 有隱性的「先後順序」的耦合性,這是一個「Design Smell」"

對於時序耦合這個名詞我很陌生,

卻對於內容有一點熟悉的連結,

似乎在哪邊看過?

答案就是在Clean Code裡面看過類似的這個觀念,,

回家翻了一下,在第336頁中有短暫提到,

開發程式的時候,難免會有同一件事情要經過多個步驟(function)去處理的過程,

以下舉例:

今天有三個function負責

點菜();

製餐();

上菜();

如果上述三個function順序錯誤,就會造成執行上的錯誤。

例如:

上菜();

點菜();

製餐();

哪有人還沒點菜就先上菜的。

為了開發出來的code不要讓使用者犯下這種錯誤,

你可以透過function產生的參數與function需要輸入的參數,

來避免這樣的時序耦合,

例如:

菜單 = 點菜();

熱騰騰的餐點 = 製餐( 菜單  );

上菜( 熱騰騰的餐點 );

這樣子使用者在使用這三個function的時候,

就一定得依照各個function所需要的參數來進行呼叫,

間接地建立了使用順序,

能夠避免時序錯亂的問題。



2 則留言:

社會新鮮人如何投資?

我的觀點是,在 沒有很多 本錢 的情況下, 別寄望每個月幾千元放到股票或者最近很夯的高股息ETF就能讓你致富, 先投資自己,讓自己的本業收入提高吧。