プログラミング初心者から中級者にとって、「動くコード」と「良いコード」の違いを理解することは、エンジニアとしての成長に欠かせません。今回は、現場で本当に使われている実践的なテクニックをご紹介します。
1. 関数は1つのことだけをする(単一責任の原則)
悪い例:
function processUser(userData) {
// ユーザーデータの検証
if (!userData.email || !userData.name) {
throw new Error('必須項目が不足しています');
}
// データベースに保存
const user = database.save(userData);
// メール送信
emailService.sendWelcomeEmail(user.email);
// ログ出力
console.log(`新規ユーザー登録: ${user.name}`);
return user;
}
良い例:
function validateUserData(userData) {
if (!userData.email || !userData.name) {
throw new Error('必須項目が不足しています');
}
}
function saveUser(userData) {
return database.save(userData);
}
function sendWelcomeEmail(email) {
return emailService.sendWelcomeEmail(email);
}
function processUser(userData) {
validateUserData(userData);
const user = saveUser(userData);
sendWelcomeEmail(user.email);
console.log(`新規ユーザー登録: ${user.name}`);
return user;
}
なぜこれが重要?
- バグの原因を特定しやすい
- テストが書きやすい
- 再利用性が高まる
2. エラーハンドリングを適切に行う
多くの開発者が見落としがちなのが、エラーハンドリングです。
悪い例:
async function fetchUserData(userId) {
const response = await fetch(`/api/users/${userId}`);
const data = await response.json();
return data;
}
良い例:
async function fetchUserData(userId) {
try {
const response = await fetch(`/api/users/${userId}`);
if (!response.ok) {
throw new Error(`HTTP Error: ${response.status}`);
}
const data = await response.json();
return { success: true, data };
} catch (error) {
console.error('ユーザーデータの取得に失敗:', error);
return { success: false, error: error.message };
}
}
3. 意味のある変数名・関数名を付ける
悪い例:
function calc(a, b, c) {
return a * b * c / 100;
}
const d = new Date();
const x = d.getFullYear() - 2000;
良い例:
function calculateTax(price, taxRate, discountRate) {
return price * taxRate * discountRate / 100;
}
const currentDate = new Date();
const yearsSince2000 = currentDate.getFullYear() - 2000;
4. 定数を使って「マジックナンバー」を排除
悪い例:
function isAdult(age) {
return age >= 20;
}
function calculateDiscount(price, membershipYears) {
if (membershipYears >= 5) {
return price * 0.1;
}
return 0;
}
良い例:
const ADULT_AGE = 20;
const SENIOR_MEMBERSHIP_YEARS = 5;
const SENIOR_DISCOUNT_RATE = 0.1;
function isAdult(age) {
return age >= ADULT_AGE;
}
function calculateDiscount(price, membershipYears) {
if (membershipYears >= SENIOR_MEMBERSHIP_YEARS) {
return price * SENIOR_DISCOUNT_RATE;
}
return 0;
}
5. コメントは「なぜ」を書く、「何を」は書かない
悪い例:
// 年齢を18と比較する
if (user.age >= 18) {
// ログインを許可する
allowLogin(user);
}
良い例:
// 法的要件により、18歳未満はサービス利用不可
if (user.age >= 18) {
allowLogin(user);
}
まとめ:小さな改善が大きな差を生む
これらのテクニックは一見地味に見えますが、プロジェクトが大きくなるほど、チーム開発になるほど、その威力を発揮します。
今日から実践できること:
- 既存のコードを1つずつリファクタリングしてみる
- 新しく書くコードでは必ずエラーハンドリングを入れる
- 変数名に迷ったら、3ヶ月後の自分が理解できるかを考える
コード品質の向上は一朝一夕にはいきませんが、継続することで確実にスキルアップできます。ぜひ今日から始めてみてください!
よく参考にさせていただいているEngineerCompassさんのサイトはこちら

Engineer Compass -
コメント