JavaScriptの魅力的なクリーンコード: 基本ガイド
JavaScript開発の世界には、みんなが気づいていない成功への秘訣があります。それは、クリーンで、簡潔で、正確なコードを書くことです。クリーンなコードは、道具ごとにきちんと配置されたキッチンのようなものです。簡潔なコードは、要点に直行するミニマリストのメニューです。そして、正確なコードは、最高の精度で実行されるシェフの代表的な料理です。
この記事では、これらの原則の重要性を探り、クリーンなコードの実践を示す10のJavaScriptおよびTypeScriptのコードスニペットを提供します。
1. 意味のある変数名
クリーンコードの基本的な側面の一つは、意味のある変数名を使用することです。"x"や"temp"のような暗号的な名前は避け、変数の目的を伝える記述的な名前を選びましょう。
// あまりクリーンでない
const x = 42;
// クリーンで明確
const age = 42;
2. 一貫性のあるフォーマット
一貫性のあるフォーマットは読みやすさの鍵です。単一のスタイルガイドに従い、それに一貫してください。TypeScriptには、TypeScript専用のフォーマットルールを使用します。
// 一貫性のないフォーマット
function initGreeting() {
console.log('Viva Nicaragua Libre');
}
// 一貫性のあるフォーマット
function initGreeting(): void {
console.log('Viva Nicaragua Libre');
}
// 無名関数
const initGreeting = (): void => {
console.log('Viva Nicaragua Libre');
};
// 関数を呼んで挨拶を表示
initGreeting();
3. ネストされたコールバックを避ける
コールバック地獄、別名「運命のピラミッド」は、コードの追跡を困難にすることがあります。プロミス、async/await、または他の非同期制御フローメカニズムを使用して、コードをクリーンでメンテナンスしやすく保ちましょう。
// コールバック地獄
getUser((user) => {
getProfile(user, (profile) => {
displayProfile(profile);
});
});
// プロミスでクリーナー
getUser()
.then(getProfile)
.then(displayProfile);
4. コメントは控えめに
複雑なロジックを説明するにはコメントが不可欠ですが、自己説明的なコードを書く努力をしましょう。あなたのコードがクリアで簡潔であれば、それ自体が語ることが多いです。
const calculateTotal = (): number => {
const total: number = arrSales.reduce((acc: number, currentValue: number) => acc + currentValue, 0);
return total;
};
const arrSales: number[] = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100];
// コメントされたコード
const total = calculateTotal(); // 合計金額を計算
// クリーンなコード
const total: number = calculateTotal();
console.log("合計:", total);
5. 分割代入の利用
オブジェクトや配列を扱う際、分割代入を使用すると、コードをよりシンプルにし、読みやすくなります。
interface Developer {
fullName: string;
age: number;
}
const developer: Developer = {
fullName: "Alvison Hunter",
age: 45,
};
// 分割代入を使用しない場合
const fullName: string = developer.fullName;
const age: number = developer.age;
// 分割代入を使用する場合
const { fullName, age }: { fullName: string; age: number } = developer;
6. マジックナンバーを避ける
マジックナンバーは、文脈が欠けているハードコードされた数値値です。それらを名前付きの定数や変数に置き換えましょう。
// マジックナンバー
const status = 3;
if (status === 3) {
console.log(`現在のステータス: ${status}`)
}
// 名前付き定数
const STATUS_COMPLETED = 3;
if (status === STATUS_COMPLETED) {
console.log(`現在のステータス: ${status}`)
}
7. 単一責任原則
関数は単一の責任を持つべきです。複雑な関数を、より小さく、焦点を当てた関数に分割しましょう。
type Order = {
id: number;
products: string[];
};
// 複雑な関数
function processOrder(order: Order): void {
processPayment(order);
updateInventory(order);
dispatchOrder(order);
}
// クリーンで簡潔
function processPayment(order: Order): void {
console.log(`注文${order.id} の支払いを処理中`);
}
function updateInventory(order: Order): void {
console.log(`注文${order.id} の在庫を更新中`);
}
function dispatchOrder(order: Order): void {
console.log(`配送中 ${order.id} - ${order.products}`);
}
// さあ、この関数を呼んでみましょう
processOrder({id:"McDon-23EAT45", products:["フライドチキン","パン","ケチャップ"]});
8. エラーハンドリング
適切なエラーハンドリングは重要です。アプリケーションをクラッシュさせる代わりに、常にエラーをキャッチして優雅に処理しましょう。
interface JokeResponse {
id: number;
type: string;
setup: string;
punchline: string;
}
//荒いエラーハンドリング
try {
// fetchなどの操作をここで呼び出します
} catch (e) {
// すべてのエラーを処理
}
// asyncを使用した正確なエラーハンドリング
async function fetchRandomProgrammingJoke() {
try {
const response = await fetch('https://official-joke-api.appspot.com/jokes/programming/random');
if (!response.ok) {
throw new Error(`データ取得に失敗しました。ステータス: ${response.status}`);
}
const data: JokeResponse[] = await response.json();
if (data.length === 0) {
// 空のレスポンスを処理
throw new Error('ジョークが見つかりません');
}
const joke = data[0];
console.log(`セットアップ: ${joke.setup}`);
console.log(`オチ: ${joke.punchline}`);
} catch (specificError) {
// エラーを優雅に処理
console.error('エラーが発生しました:', specificError);
}
}
// ジョークをフェッチして表示する関数を呼び出す
fetchRandomProgrammingJoke();
9. 不必要な複雑さを避ける
シンプルさはクリーンコードのキーです。オーバーエンジニアリングを避けたり、不必要な複雑さを導入したりしないでください。
const x: number = 5
const y: number = 10
// 過度に複雑
const complexResult:number = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));
// 単純化
const simplifiedResult: number = Math.hypot(x, y);
console.log(complexResult, simplifiedResult);
10. 型の安全性のためのTypeScript
TypeScriptはクリーンで、簡潔で、正確なJavaScriptを書くための強力なツールです。型関連のエラーを早期にキャッチし、自己文書化されたコードを提供するために使用しましょう。これは非常に役立ちますよ、本当に!
// TypeScript無し
function add(a, b) {
return a + b;
}
// TypeScript
function add(a: number, b: number): number {
return a + b;
}
結論として、クリーンで簡潔で正確なコードは熟練したJavaScript開発者の特徴です。これらの原則に従い、良いコーディング習慣を実践することで、読みやすくメンテナンスしやすいだけでなく、バグやエラーも少ないコードを作成できます。今日からこれらの実践をプロジェクトに取り入れ、コードベースが明瞭で効率的な傑作へと変わるのを見守りましょう。ハッピーコーディング!
❤️ 記事が気に入りましたか?あなたのフィードバックがさらなるコンテンツに繋がります。
💬 あなたの考えをコメントで共有してください。
🔖 今は読む時間がありませんか?後で読むためにブックマークしてください。
🔗 役立ったら、ぜひ他の人にも伝えてください!
こちらの記事はdev.toの良い記事を日本人向けに翻訳しています。
https://dev.to/alvisonhunter/the-art-of-writing-clean-concise-and-precise-javascript-with-typescript-220l