深いネストのリファクタリング。
returnできるところでさっさとreturnする。
・よくある深いネストのケース
改善前
Java
public int func1(int a, int b)
{
int result;
if (a > 10)
{
if (a > 20)
{
if (a > 30)
result = b;
else
result = 3;
}
else
result = 2;
}
else
result = 1;
return result;
}
↓
改善後
Java
public int func1(int a, int b)
{
if (a < 10)
return 1;
if (a < 20)
return 2;
if (a < 30)
return 3;
return b;
}
・意図したデータが与えられたかどうかのチェックを行うたびにネストさせるケース
改善前
Java
public bool isValid(Data a)
{
if(a != null)
{
if(a.Count > 0)
{
if(a.Error == null)
{
if (a.Result != null)
return true;
}
}
}
return false;
}
↓
改善後
Java
public bool isValid(Data a)
{
if (a == null)
return false;
if (a.Count > 0)
return false;
if (a.Error == null)
return false;
if (a.Result != null)
return true;
else
return false;
}
参照
http://anopara.matrix.jp/2014/06/27/do-not-write-deep-nested-code/