2016-06-02 11 views
-1

私はTic Tac Toeのゲームを作りましたが、2つの同様のメソッドを1つにリファクタリングしたいと思います。リファクタリングのメソッド

def computer_offense(brd, square='') 
    WINNING_LINES.each do |line| 
    square = find_at_risk_square(line, brd, COMPUTER_MARKERR) 
    break if square 
    end 
    square 
end 

def computer_defense(brd, square) 
    WINNING_LINES.each do |line| 
    square = find_at_risk_square(line, brd, PLAYER_MARKER) 
    break if square 
    end 
    square 
end 
+10

この質問はcodereviewネットワーク – Ilya

+0

に移動する必要がありますありがとうllya、私は将来それを行います。 –

答えて

1

あなたはこのようにリファクタリングすることができます

def computer_offense_or_defense(brd, square='', offense=true) 
    WINNING_LINES.each do |line| 
    square = find_at_risk_square(line, brd, offense ? COMPUTER_MARKERR : PLAYER_MARKER) 
    break if square 
    end 
    square 
end 

だからここで以前に今あなたがcomputer_offense_or_defense(brd, square,true) を呼び出すことができますし、computer_defenseのためにあなたはあなたがこのようにそれをリファクタリングすることができます

computer_offense_or_defense(brd, square,false) 
+0

ありがとうございます。とてもシンプルなようですが、私はそこに着くことができませんでした。 –

0

を呼び出すことができますcomputer_offenseと呼ばれます

def computer_offense(brd, square='') 
    get_square(brd, square, COMPUTER_MARKERR) 
end 

def computer_defense(brd, square) 
    get_square(brd, square, PLAYER_MARKER) 
end 

def get_square(brd, square, marker) 
    WINNING_LINES.each do |line| 
    break if square = find_at_risk_square(line, brd, marker) 
    end 
    square 
end 
関連する問題