Swift Style

johnrogers/claude-swift-engineering/plugins/swift-engineering/skills/swift-style

作者 johnrogers1dc2cf4d020b無授權條款231 個星標收錄於 2026年10月9日更新於 2026年10月9日儲存庫8 個月前更新

Swift code style conventions for clean, readable code. Use when writing Swift code to ensure consistent formatting, naming, organization, and idiomatic patterns.

AI 產生的概覽

Swift 程式碼風格規範,用於撰寫整潔、可讀的程式碼,涵蓋命名、格式、組織與慣用模式。

功能
提供一份 Swift 風格指南,涵蓋命名、黃金路徑、程式碼組織、空格、self 用法、計算屬性、閉包、型別推斷、語法糖、存取控制、記憶體管理、註解和常數。它也列出常見錯誤,例如縮寫、巢狀 guard、self 用法不一致、過於籠統的型別名稱以及隱含的存取控制。它產出的是指引而非檔案或程式碼。
適用情境
在撰寫或審查 Swift 程式碼,並希望維持一致的格式、命名和慣用模式時使用。也適合在定稿 Swift 程式碼前檢查常見的風格錯誤。
執行需求
不需要任何工具、套件、執行環境、憑證或網路存取;它僅包含指示,不附帶指令碼。

Swift Style Guide

Code style conventions for clean, readable Swift code.

Core Principles

Clarity > Brevity > Consistency

Code should compile without warnings.

Naming

  • UpperCamelCase — Types, protocols
  • lowerCamelCase — Everything else
  • Clarity at call site
  • No abbreviations except universal (URL, ID)
swift
// Preferredlet maximumWidgetCount = 100func fetchUser(byID id: String) -> User

Golden Path

Left-hand margin is the happy path. Don't nest if statements.

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

Code Organization

Use extensions and MARK comments:

swift
class MyViewController: UIViewController {    // Core implementation}
// MARK: - UITableViewDataSourceextension MyViewController: UITableViewDataSource { }

Spacing

  • Braces open on same line, close on new line
  • One blank line between methods
  • Colon: no space before, one space after

Self

Avoid self unless required by compiler.

swift
// Preferredfunc configure() {    backgroundColor = .systemBackground}

Computed Properties

Omit get for read-only:

swift
var diameter: Double {    radius * 2}

Closures

Trailing closure only for single closure parameter.

Type Inference

Let compiler infer when clear. For empty collections, use type annotation:

swift
var names: [String] = []

Syntactic Sugar

swift
// Preferredvar items: [String]var cache: [String: Int]var name: String?

Access Control

  • private over fileprivate
  • Don't add internal (it's the default)
  • Access control as leading specifier

Memory Management

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

Comments

  • Explain why, not what
  • Use // or ///, avoid /* */
  • Keep up-to-date or delete

Constants

Use case-less enum for namespacing:

swift
enum Math {    static let pi = 3.14159}

Common Mistakes

  1. Abbreviations beyond URL, ID, UUID — Abbreviations like cfg, mgr, ctx, desc hurt readability. Spell them out: configuration, manager, context, description. The three exceptions are URL, ID, UUID.

  2. Nested guard/if statements — Deep nesting makes code hard to follow. Use early returns and guards to keep the happy path left-aligned.

  3. Inconsistent self usage — Either always omit self (preferred) or always use it. Mixing makes code scanning harder and confuses capture semantics.

  4. Overly generic type names — Manager, Handler, Helper, Coordinator are too vague. Names should explain responsibility: PaymentProcessor, EventDispatcher, ImageCache, NavigationCoordinator.

  5. Implied access control — Don't skip access control. Explicit private, public helps future maintainers understand module boundaries. internal is default, so omit it.

來源與署名

來源:johnrogers/claude-swift-engineering位於plugins/swift-engineering/skills/swift-style提交1dc2cf4

授權條款: 無授權條款

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架