1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

リーダブルコード(1-4章)

Last updated at Posted at 2024-10-27
1 / 31

100番煎じぐらいだが自分なりにまとめてみる。


1章 理解しやすいコード


理解しやすいコードとは?

  • 優れたコード:他の人が読んで「意味を理解するまでの時間が短い」コード
  • コードは、他の人が最短時間で理解できることが大切
  • 「短い」コードよりも「読みやすい」コードを目指そう

リーダブルコードの基本姿勢

  • コードを短く書くことも大事だけど、理解しやすさのほうがもっと大事
  • 他の人が読んだとき、理解に時間がかかるようなコードは避ける
  • 三項演算子も、使い方によっては読みづらくなることがある

具体例:リーダブルでない三項演算子の使い方(VB.NET)

  • 三項演算子の使い方によっては、理解しづらくなることもある
' 見にくい例:三項演算子を多重に使い、意味が分かりにくい
Dim accessLevel As String = If(user.IsAdmin, "Admin", If(user.IsMember, "Member", "Guest"))

' 見やすい例:分かりやすくコードを分ける
Dim accessLevel As String = "Guest"
If user.IsAdmin Then
    accessLevel = "Admin"
ElseIf user.IsMember Then
    accessLevel = "Member"
End If

まとめ:心がけたいポイント

🎯 最優先は「理解のしやすさ」
短いコードよりも、分かりやすいコードを目指そう

👥 チームのことを考えよう
自分だけでなく、他の人が読むことを意識しよう
3ヶ月後の自分はまるで他の人だよ


2章 名前で伝えるコードの意図


名前付けの基本

  • 名前は明確で正確に、必要な情報を含めよう
  • tmpretvalなどの汎用的すぎる名前は避け、意味が伝わる名前を心がけよう
  • 「なぜこの名前なのか」を自問してみよう

具体例:名前に情報を含める(VB.NET)

  • 意味が分かりづらい名前は誤解を招く可能性がある
' 良くない例:汎用的すぎる名前
Dim tmp As String = user.Name & user.PhoneNumber

' 改善例:名前に情報を含め、役割が分かりやすい
Dim userContact As String = user.Name & user.PhoneNumber

避けたい命名パターン

' あまり良くない例
Dim tmp As String = user.Name & user.PhoneNumber
Dim i, j, k As Integer  ' 複数のループで使用
Dim retval As Boolean

For i = 0 To items.Count - 1
    For j = 0 To subItems.Count - 1
        ' ネストしたループの中身
    Next
Next

このコードの問題点:

  • tmpから値の意図が読み取れない
  • i, j, kでは何のイテレーターか分からない
  • retvalが何の結果なのか不明

👍 改善例:意図を込めた命名

' 改善後の例
Dim userContactInfo As String = user.Name & user.PhoneNumber
Dim productIndex As Integer
Dim categoryIndex As Integer

For productIndex = 0 To products.Count - 1
    For categoryIndex = 0 To categories.Count - 1
        ' ループの目的が明確になった
    Next
Next

改善のポイント:

  • userContactInfo - 保持している情報の内容が明確
  • productIndex, categoryIndex - 何のループカウンターか分かる
  • イテレーター名から処理の意図が読み取れる

まとめ:心がけたいポイント

🎯 名前で意図を伝えよう

  • 汎用的な名前(tmp, flag)を避けよう
  • 変数の目的や内容が伝わる具体的な名前を選ぼう
  • 単位や状態など、必要な情報は名前に含めよう

👥 チームの視点で考えよう

  • 他のメンバーが読んだとき、すぐに理解できる名前を選ぼう
  • 数ヶ月後の自分が見ても分かる名前にしよう

3章 誤解を防ぐ命名のコツ


名前による誤解を防ごう

  • プログラミングでは、名前の付け方一つで意図が正確に伝わるか、誤解を招くかが変わってきます。
    具体例を見ながら、誤解を防ぐ命名のテクニックを学んでいきましょう。

実践例:より明確な命名

限界値を扱う場合

' あいまいな命名
Dim limit As Integer = 100
Dim items As Integer = 50
Dim range As Integer = 30

' 👍 明確な命名
Dim maxItems As Integer = 100
Dim currentItems As Integer = 50
Dim minRequiredItems As Integer = 30

ブーリアン値の命名

' 意図が分かりにくい
Dim active As Boolean = True

' 👍 状態が明確な命名
Dim isActive As Boolean = True

範囲を示す場合

' 境界があいまい
Dim start As Integer = 0

' 👍 範囲が明確
Dim firstIndex As Integer = 0

よく使う接頭辞/接尾辞

用途 接頭辞/接尾辞
限界値 max_, min_ maxConnections, minBalance
範囲 first_, last_ firstElement, lastRecord
真偽値 is_, has_, can_ isEnabled, hasPermission, canEdit
num_, count_ numErrors, countUsers
平均 avg_ avgScore
合計 total_ totalAmount

まとめ:心がけたいポイント

🎯 あいまいさを排除しよう

  • 限界値には max/min を使おう
  • 真偽値には is/has を使おう
  • 範囲を示すなら first/last を使おう

💭 説明する気持ちで名付けよう

  • 他人に説明できる名前を心がけよう
  • コメント無しでも理解できる名前を目指そう

4章 美しさ

読みやすさは「見た目」から

  • 適切に整理されたコードは、ロジックの理解を助け、バグの発見も容易に

実践例:見やすいコードの書き方

読みづらい例

' 複雑な処理が一行に詰め込まれている
Dim report As String = user.Name & ", " & user.PhoneNumber & " | " & CalcOrderSummary(order.Id, CalcDiscount(order.Total))

👍改善例:適切に分割して整理

' 処理を分かりやすく分割
Dim userContact As String = user.Name & ", " & user.PhoneNumber
Dim orderSummary As String = CalcOrderSummary(
    order.Id, 
    CalcDiscount(order.Total)
)
Dim report As String = userContact & " | " & orderSummary

👍インデント

For Each order In orders
    If order.IsActive Then
        For Each item In order.Items
            ' ネストが視覚的に分かる
        Next
    End If
Next

👍空白行による区切り

' ユーザー情報の取得
Dim user = GetUser(userId)

' 注文情報の処理
Dim order = GetOrder(orderId)
Dim orderItems = GetOrderItems(order)

👍整列

※わたしは、これは採用しないことが多い

Dim firstName   As String  = "John"
Dim lastName    As String  = "Doe"
Dim age         As Integer = 30
Dim isActive    As Boolean = True

まとめ:心がけたいポイント

👀 視覚的な整理を意識しよう
インデントで階層を表現、空白行で区切りをつける

📋 一貫性を保とう
チーム全体で同じスタイルを使う


1~4章まとめ:より良いコードを目指して 📚

1. 理解しやすいコード 🎯

  • 他の人が最短で理解できることを最優先に
  • 短いコードより読みやすいコードを意識しよう
  • チーム全体の生産性向上につながる

2. 名前に情報を詰め込む 💡

  • 名前は明確で正確に、必要な情報を含めよう
  • 「なぜこの名前なのか」を自問してみよう
  • シンプルさと正確さのバランスを大切に

3. 誤解されない名前 🤝

  • 読む人に誤解されない名前をつけよう
  • max/min、is/hasなど、意図が伝わる接頭辞を活用
  • 他人に説明できる名前を心がけよう

4. 美しさ ✨

  • インデント改行スペースでコードを整えよう
  • 視覚的な美しさは読みやすさにつながる
  • チーム全体のコード品質向上に貢献

ポイントを意識して、明日から少しずつ改善していきましょう! 💪

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?