mcpField
S
swift-style

swift-style

github.com/johnrogers開発2331.5k 回インストール41 週間前に更新
リポジトリ

swift-style について

swift-styleは、読みやすく一貫したコードを目指すSwift開発者向けのコーディングスタイルスキルです。命名、制御フロー、コード構成、アクセス制御、メモリ管理の規約を扱います。

主な機能

  1. 01命名と呼び出し側の明確さ
  2. 02guardによる浅い制御フロー
  3. 03extensionとMARKによる構成
  4. 04空白とクロージャの規約
  5. 05アクセス制御とメモリ管理の指針

活用シーン

  1. 01Swiftコードのスタイル統一の確認
  2. 02新しいコードベースでの命名規約の適用
  3. 03型とプロトコル実装の整理

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/johnrogers/claude-swift-engineering --skill swift-style

インストール後、Claude Code で/swift-styleを入力して読み込まれたか確認します。

詳細

Swift スタイルガイド

クリーンで読みやすい Swift コードのスタイル規約です。

基本原則

明確さ > 簡潔さ > 一貫性

警告なしでコンパイルできるコードにします。

命名規則

  • UpperCamelCase — 型、プロトコル
  • lowerCamelCase — その他すべて
  • 呼び出し元から見て明確にします
  • 一般に定着したもの(URL、ID)を除き、省略形は使いません
// Preferred
let maximumWidgetCount = 100
func fetchUser(byID id: String) -> User

王道の書き方

左側の余白をハッピーパスにします。if 文をネストしないでください。

// Preferred
func process(value: Int?) throws -> Result {
    guard let value = value else {
        throw ProcessError.nilValue
    }
    guard value > 0 else {
        throw ProcessError.invalidValue
    }
    return compute(value)
}

コードの整理

extension と MARK コメントを使います。

class MyViewController: UIViewController {
    // Core implementation
}

// MARK: - UITableViewDataSource
extension MyViewController: UITableViewDataSource { }

空白

  • 波括弧は同じ行で開き、次の行で閉じます
  • メソッドの間には空行を1行入れます
  • コロンの前に空白は入れず、後ろには1つ入れます

Self

コンパイラーで必要とされない限り、self は避けます。

// Preferred
func configure() {
    backgroundColor = .systemBackground
}

計算プロパティ

読み取り専用の場合は get を省略します。

var diameter: Double {
    radius * 2
}

クロージャ

末尾クロージャを使うのは、クロージャパラメーターが1つの場合に限ります。

型推論

型が明らかな場合はコンパイラーに推論させます。空のコレクションには型注釈を使います。

var names: [String] = []

構文糖

// Preferred
var items: [String]
var cache: [String: Int]
var name: String?

アクセス制御

  • fileprivate より private を優先します
  • internal は追加しません(デフォルトです)
  • アクセス制御は先頭の指定子として記述します

メモリー管理

resource.request().onComplete { [weak self] response in
    guard let self else { return }
    self.updateModel(response)
}

コメント

  • 内容ではなく、理由を説明します
  • // または /// を使い、/* */ は避けます
  • 最新の状態を保つか、削除します

定数

名前空間にはケースのない enum を使います。

enum Math {
    static let pi = 3.14159
}

よくある間違い

  1. URL、ID、UUID 以外の省略形 — cfg、mgr、ctx、desc のような省略形は読みやすさを損ないます。configuration、manager、context、description のように完全な名前を使います。例外は URL、ID、UUID の3つです。

  2. guard/if 文のネスト — 深いネストはコードを追いにくくします。早期リターンと guard を使い、ハッピーパスを左揃えに保ちます。

  3. self の一貫性のない使用 — self を常に省略する(推奨)か、常に使用するかのどちらかにします。混在するとコードを読み取るのが難しくなり、キャプチャの意味もわかりにくくなります。

  4. 汎用的すぎる型名 — Manager、Handler、Helper、Coordinator は曖昧すぎます。PaymentProcessor、EventDispatcher、ImageCache、NavigationCoordinator のように、責務がわかる名前にします。

  5. アクセス制御の省略 — アクセス制御を省略しないでください。private、public を明示すると、後から保守する人がモジュールの境界を理解しやすくなります。internal はデフォルトなので省略します。

コメント