Tennis Refactoring Kata in C#

RojerChen.2023.03.23

最近在找重構相關的練習題目,意外地找到了 Tennis Refactor Kata,如果有上過 91極速開發的話,對於 Tennis 這個題目應該是相當的熟習。我自己在練習的時候,會盡量以尚未練習過這個題目的角度出發,盡可能從程式碼的上下文來釐清有哪些項目重複,可以取代、消除。


好比說下面這一段程式碼,你會怎麼樣調整?

for (var i = 1; i < 3; i++)  
{  
  if (i == 1) tempScore = m_score1;  
  else { score += "-"; tempScore = m_score2; }  
  switch (tempScore)  
  {  
      case 0:  
          score += "Love";  
	      break;  
      case 1:  
          score += "Fifteen";  
	      break;  
      case 2:  
          score += "Thirty";  
	      break;  
      case 3:  
          score += "Forty";  
	      break;  
 }
}

如果你已經很熟悉了,你可能會馬上就用 scoreLookup 來處理分數的計算。我自己的處理方式,會先將 for loop 裡面的程式碼先擷取成 NormalScore 的方法

for (var i = 1; i < 3; i++)  
{  
  score = NormalScore(i, score);  
}

然後對應程式上下文,因為 for loop 會跑兩次,所以我們就可以把程式碼改成下方這樣,然後把 for loop 移除

score = NormalScore(1, score);  
score = NormalScore(2, score);  

接下來就在把第一個 NormalScore Inline 攤平,調整程式碼、再把第二個 NormalScore 攤平,這樣一步一步的調整程式碼。


我的練習:https://github.com/RojerChen/Tennis-Refactoring-Kata


延伸閱讀


    Blogger Comment

0 意見: