关于 swift-style
swift-style 是面向 Swift 开发者的代码风格技能,旨在统一代码习惯并提升可读性。内容涵盖命名、控制流、代码组织、访问控制和内存管理。
主要功能
- 01命名与调用点清晰度
- 02使用 guard 保持控制流简洁
- 03通过扩展和 MARK 组织代码
- 04空格与闭包约定
- 05访问控制与内存管理建议
适用场景
- 01检查 Swift 代码风格一致性
- 02在新代码库中采用命名约定
- 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)
}
代码组织
使用扩展和 MARK 注释:
class MyViewController: UIViewController {
// Core implementation
}
// MARK: - UITableViewDataSource
extension MyViewController: UITableViewDataSource { }
空格
- 左花括号与语句位于同一行,右花括号另起一行
- 方法之间空一行
- 冒号前不加空格,后加一个空格
Self
除非编译器要求,否则避免使用 self。
// Preferred
func configure() {
backgroundColor = .systemBackground
}
计算属性
只读属性省略 get:
var diameter: Double {
radius * 2
}
闭包
仅当参数只有一个闭包时,才使用尾随闭包。
类型推断
类型明确时让编译器推断。空集合应使用类型注解:
var names: [String] = []
语法糖
// Preferred
var items: [String]
var cache: [String: Int]
var name: String?
访问控制
- 优先使用
private,而不是fileprivate - 不要添加
internal(它是默认值) - 将访问控制放在修饰符列表开头
内存管理
resource.request().onComplete { [weak self] response in
guard let self else { return }
self.updateModel(response)
}
注释
- 解释原因,而非内容本身
- 使用
//或///,避免使用/* */ - 保持注释更新,否则删除
常量
使用无关联值枚举进行命名空间管理:
enum Math {
static let pi = 3.14159
}
常见错误
-
使用 URL、ID、UUID 以外的缩写 —
cfg、mgr、ctx、desc等缩写会降低可读性。请拼写完整:configuration、manager、context、description。仅允许使用 URL、ID、UUID 这三种缩写。 -
嵌套 guard/if 语句 — 深层嵌套会让代码难以理解。使用提前返回和 guard,让理想路径保持在左侧。
-
不一致地使用 self — 要么始终省略
self(推荐),要么始终使用。混用会增加代码阅读难度,并使捕获语义变得模糊。 -
过于笼统的类型名称 —
Manager、Handler、Helper、Coordinator都太含糊。名称应说明职责:PaymentProcessor、EventDispatcher、ImageCache、NavigationCoordinator。 -
隐式访问控制 — 不要省略访问控制。明确声明
private、public有助于后续维护者理解模块边界。internal是默认值,因此应省略。
评论
支持 Markdown