コードレビューについて
コードレビューで意識することをまとめていきます。
マジックナンバーが含まれていないか
マジックナンバーとは、コード内に直接数値リテラル(例えば 3 や 100 などの数値)が埋め込まれていて、その意味が分かりにくい状態のことを指します。
マジックナンバーがあると、コードが読みにくく、メンテナンスや拡張が難しくなるため、良いコーディング習慣では避けるべきものとされています。
たとえば、次のようなコードがあります
if (user.age >= 18) {
console.log("User is an adult");
}
この 18 という数値は「成人年齢」を表していると推測できますが、コードだけでは具体的な意味が明確にされていません。このような状況では、将来的にその値を変更する際や他の人がコードを理解する際に困難が生じる可能性があります。
マジックナンバーを避ける方法
マジックナンバーを避けるためには、その数値に意味を持たせた定数を使う方法が一般的です。
const ADULT_AGE_THRESHOLD = 18;
if (user.age >= ADULT_AGE_THRESHOLD) {
console.log("User is an adult");
}
このように定数を使うことで、コードの可読性が向上し、値の意味が明確になります。また、同じ値を複数箇所で使用している場合にも、一箇所で定義するだけでメンテナンスがしやすくなります。
条件が複数ある場合は、その条件を変数に分解してから if 文に入れる
コードの可読性が向上し、条件の意図が分かりやすくなります。また、同じ条件を再利用する場合にも便利です。
たとえば、以下のような場合を考えます
// before: 複雑な条件が直接if文に入っている
if (user.age >= 18 && user.isMember && (user.subscription === 'premium' || user.subscription === 'standard') && !user.isSuspended) {
console.log("User has access");
} else {
console.log("Access denied");
}
上記のコードは条件が長く、何をチェックしているのかが一目で理解しにくいです。これを変数に分解して、条件を整理しましょう。
リファクタリング後
const isAdult = user.age >= 18;
const isMember = user.isMember;
const hasValidSubscription = user.subscription === 'premium' || user.subscription === 'standard';
const isActive = !user.isSuspended;
if (isAdult && isMember && hasValidSubscription && isActive) {
console.log("User has access");
} else {
console.log("Access denied");
}
isAdult, isMember, hasValidSubscription, isActive という名前をつけることで、各条件の意味が分かりやすくなります。
if 文がシンプルになり、何を確認しているのかが読みやすくなります。
さらに関数化する例
場合によっては、条件ごとに関数を作成すると、さらに可読性が高くなることがあります。
たとえば、アクセス権限を確認するロジックを関数化する方法です。
const isAdult = (user) => user.age >= 18;
const isMember = (user) => user.isMember;
const hasValidSubscription = (user) => user.subscription === 'premium' || user.subscription === 'standard';
const isActive = (user) => !user.isSuspended;
function hasAccess(user) {
return isAdult(user) && isMember(user) && hasValidSubscription(user) && isActive(user);
}
if (hasAccess(user)) {
console.log("User has access");
} else {
console.log("Access denied");
}
このように、条件ごとに関数を分けることで、個々の条件を再利用できるようにもなり、テストも行いやすくなります。
条件がさらに複雑になる場合、関数を使用することで、コードの管理が容易になります。
PHPDocを書きましょう
PHPDocとは、PHPのコードに対してドキュメントコメントを追加するための規格です。
このコメントは、コードの可読性を向上させ、他の開発者や自分が後からコードを理解しやすくするために使用されます。
PHPDocコメントを使用することで、IDE(統合開発環境)やドキュメント生成ツールがコードの説明を理解し、自動的にドキュメントを生成したり、コード補完を提供したりすることが可能になります。