Posted at

コードの可読性・保守性・堅牢性にフォーカスしたリファクタリング集


エラーをはやめに返す


  • コードを読む量を減らせる


  • else を省略できるので正常系のネストがなくなる

// before

if error == nil {
// 正常系の処理が続く...
}
else {
Alert("error!")
}

// after
if error != nil{
Alert("error!")
return
}
// 正常系の処理が続く...


戻り値を必要としない配列ループの修正


  • 戻り値を意識させなくなるので、安心できる(mapだと「もしかして戻り値を扱う場合もあるのかも?」とおもわせてしまう)

// before

let _ = array.map { ... }

// after
array.forEach { ... }


forを使わずに要素の探索


  • 条件式のミスを減らせる(if "any" == file だと意図していない結果になる)


  • if A != B(AとBは等しくない) よりも説明的。 !A.contains(B)(BはAに含まれていない)

// before

for file in fileNames {
if "any" != file {
return
}
}
// after
if !fileNames.contains( "any" ) {
return
}