2017-10-19 61 views
0

我正在設計一個系統,我想要一系列函數調用來配置我控制的設備數量。不同級別的功能層次可以訪問相同的數據嗎?

假設我有A()致電B(arg 1)致電C(arg 1, arg 2) + D(arg 1, arg 2, arg 3)

在當前狀態下,arg 1..3A可見。它會更好於:

  1. B訪問arg 1..3,發現它們本身並利用它們來調用C + DOR
  2. 在黑暗中離開B,並有A它們傳遞到B,這將只是通過 他們到C + D

我的直覺是,第二選項是更好,因爲我想要的變量爲最低的在他們插手的功能。

回答

0

我寧願代碼分離成兩種類型:

  • 交互件
  • 邏輯

交互件沒有 「邏輯」(無控制流程,即cyclomatic complexity = 1),它們僅具有協作者(實例或函數引用其他代碼部分)。他們的工作是協調對這些合作者的功能調用。邏輯是邏輯 - 循環,ifs,異常處理,不管你需要什麼,但沒有合作者(或者至少保持它們)。

在你的例子中,A是交互者,而B,C和D是邏輯。我會給A,B,C和D一個呼叫。A將結果從B(可能是參數2和3)轉發給C和D.

這樣,您可以用簡單的基於狀態測試,如果你願意,你可以用基於模擬的測試來測試A.我說「如果你想要」,因爲A主要是聲明性代碼,並且單獨測試它並不是很有價值(當然假設整個系統在某個地方有一個驗收測試)。

對於基於狀態和基於模擬的測試,請參閱this answer

提示:交互者的合作者主要是邏輯,但也可以是其他交互者...

相關問題