Snippets

cia_rana クソコードを直してあげてください

Created by cia_rana last modified
function checkArg(arg) {
  return ["g", "c", "p"].indexOf(arg) >= 0;
}

function battle(a, b) {
  if(!(checkArg(a) && checkArg(b))){
    throw new Error('Arguments should be "g", "c" or "p". Your arguments: ' + a + ', ' + b + '.');
  }
  
  if(a === b){
    console.log("draw");
  }else if(a === "g" && b === "c" || a === "c" && b === "p" || a === "p" && b === "g"){
    console.log("win");
  }else{
    console.log("lose");
  }
}

require('readline').createInterface({
  input: process.stdin,
  output: process.stdout,
  terminal: false
}).on('line', function(buff) {
  var ary = buff.split(" ");
  try{
    battle(ary[0], ary[1]);
  } catch(e) {
    console.log(e.message);
  }
});

Comments (1)

  1. cia_rana

    リファクタリング内容

    • node.jsのインデント規則はスペース2つ。
    • 関数名は意味が分かるようにつける(今回はfunc02で、battleに変更)。ただし、過度につけない。
    • 関数の引数をカンマで区切るときはカンマの後ろにスペースを入れる。
    • 関数名の引数を囲む括弧とそれ続く始め波括弧「{」の間は半角スペース1つ空ける。
    • 不必要に関数を増やさない(今回の場合func01)。
    • 2項演算子を使う場合、2項と演算子の間には半角スペース1つを入れる。
    • 特に理由がない限り、loose equality「==」ではなく、strict equality「===」を使う。
      文字列と数値の比較では文字列が数値になるなど意図しない挙動になることがあるので。
    • battleの引数が"g", "c", "p"以外は例外を発生させる。
    • battleの引数a, bが同じとき、あいこと分かるので"draw"と出力する。
      また、勝ちの組み合わせのときは"win"、そうでないときは"lose"なので、if-if else-else文でつなぐ。
HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.