はじめに
2022年も同じことを指摘されないように、先輩に指摘していただいたことをまとめてみました。
入社してから9ヶ月も経ち、2021年も終わるなんて...時の流れは本当早いですね。
1. 関数の引数はできる限り減らす
引数なし
public function getValueByCurrentRoute()
{
$route_values = [
'a_route' => 'A',
'b_route' => 'B'
];
$current_url = url()->current();
return $route_values[$current_url];
}
$value = getValueByCurrentRoute();
引数あり
public function getValueByCurrentRoute($current_url)
{
$route_values = [
'a_route' => 'A',
'b_route' => 'B'
];
return $route_values[$current_url];
}
$current_url = url()->current();
$value = getValueByCurrentRoute($current_url);
どちらも同じことをしていますが、どちらの場合が使い勝手が良いでしょうか。明らかに引数がない時の場合だと思います。なぜなら、引数にどのような値を取らなければならないのかを考える必要がないためです。実際は今回の例のように単純ではありませんが、複雑なコードを実装しているとついつい本来は不要である引数を関数に持たせてしまうことがあるので、関数の引数はできる限り減らすことが大事です。
2. 関数・メソッドの行数を意識する
複雑な処理をする関数・メソッドの行数はどうしても長くなりがちです。そのような時は処理単位でメソッドを作成することで、可読性を大きく向上させましょう。
class HappyBirthday
{
// 処理が長すぎて読みづらいパターン
public function makeChocolateCake()
{
// チョコを作成する処理をここから20行書く
// スポンジを作成する処理をここから20行書く
}
}
class HappyBirthday
{
// 可読性を考慮しているGoodなパターン
public function makeChocolateCake()
{
// チョコを作成する処理
$chocolate = $this->makeChocolate();
// スポンジを作成する処理
$sponge_cake = $this->makeSpongeCake();
}
private function makeChocolate()
{
// ここに20行
}
private function makeSpongeCake()
{
// ここに20行
}
}
では、「1つの処理単位が何行だったらレビュワーは読みづらいと感じてしまうのか」については、こちらの記事がおすすめです。
3. 「それ、getじゃなくてfetchにしよっか」
getXXXとfetchXXXというメソッドはどちらもXXXを取得することを表していますが、「どのようにXXXを取得するか」という点で異なります。メソッド名は、読み手にそのメソッドが「どのように何をするのか」を伝える役割を担っているので、メソッドの目的や手段がすぐに理解できるようなメソッド名を心がけましょう。以下、おすすめ記事です。
4. if文だけでなくswitch文も検討する
同じ変数を異なる値と比較し、値に応じて異なったコードを実行する時はswitch文の方が見やすいので、if文ばかりを使わないようにしましょう。以下のコードは公式からの引用です。
if ($i == 0) {
echo "iは0に等しい";
} elseif ($i == 1) {
echo "iは1に等しい";
} elseif ($i == 2) {
echo "iは2に等しい";
}
switch ($i) {
case 0:
echo "iは0に等しい";
break;
case 1:
echo "iは1に等しい";
break;
case 2:
echo "iは2に等しい";
break;
}
5. コメントをつけるときは誰がいつ見てもわかるようにする
// 不適切な値(1,2)が入る可能性があるため回避する
if (in_array($value, [1, 2])) {
このコードを'今'書いている人は「何が不適切なのか」理解していますが、それ以外の人にとってはどうでしょうか。おそらくこのコメントからだけでは「何が不適切なのか」が理解できません。そのため、その人は不適切である理由を調べなければなりません。このようなことを防ぐためにコメントは具体的に、この場合「何が不適切なのか」をきちんと書くべきです。また、コメントが無くても理解できるコードをなるべく書く力も大切です。
さいごに
指摘していただいた時、いつも思うのは**「先輩みたいになりたい!!」**。