我很掙扎,因爲這個:如何處理時間耦合?
我的類有一些方法有時間耦合。這是,一些方法方法A必須首先被調用以「初始化」方法B需要正常工作的數據。
我通常會令時空耦合明確通過將違規依賴於「方法b」作爲參數,就像這個片斷:
private class SomeClass
{
private string field;
private int count;
public SomeClass()
{
MethodA();
MethodB(field);
}
private void MethodA()
{
field = "Something";
}
private void MethodB(string str)
{
count = str.Length;
}
}
雖然這使事情變得明確,我覺得我做的有問題。我最終沒有使用字段的方法(靜態方法!),所以類開始看起來不那麼緊密。
這是最好的方法嗎? (通過傳遞參數失去凝聚力)
編輯:關於建議使用字段作爲參數或使用生成器模式來避免無效狀態的一些答案:我不能這樣做,因爲在我的情況下我正在構建一個解析器。 MethodA讀取輸入並根據它設置狀態(讀取文件中的字符),然後調用MethodB。必須按照正確的順序調用它們。這是真正的問題:一個應該在另一個之前被調用。
你是否擔心你的私人方法的凝聚力,還是這是一個人爲的例子? – neontapir
@neontapir:更高的凝聚力聽起來不像他應該擔心的事情。 –
本文可能有所幫助:[方法調用之間的時間耦合](http://www.yegor256.com/2015/12/08/temporal-coupling-between-method-calls.html) – yegor256