ReadViewSDK/Doc/CONVENTIONS.md
2026-07-13 16:09:45 +09:00

4.7 KiB
Raw Blame History

编码规范

分析日期: 2026-05-21

说明:本仓库以 iOS/Swift 为主,未检测到统一的 lint/format 工具配置;代码风格在不同模块间存在差异。文档按项目规则使用中文描述,但代码标识符保持英文。

语言与工程约束

  • 主要语言SwiftPodspec 声明 s.swift_versions = ["5.10"],见 RDEpubReaderView.podspec
  • 最低系统版本Podspec iOS 15.0RDEpubReaderView.podspec),示例工程 Podfile/构建设置里常见为 iOS 15.6ReadViewDemo/Podfile
  • 依赖管理CocoaPodsReadViewDemo/PodfileReadViewDemo/Podfile.lock

命名约定

文件/类型命名Swift

  • 以类型名为文件名的单文件组织较常见:Sources/RDEpubReaderView/EPUBCore/RDEPUBParser.swift
  • 大量使用前缀区分模块域:
    • RD...:阅读器 UI/控制器相关(如 Sources/RDEpubReaderView/RDEpubReaderView.swiftSources/RDEpubReaderView/RDEpubURLReaderController.swift
    • RDEPUB...EPUB Core/UI/渲染相关(如 Sources/RDEpubReaderView/EPUBCore/RDEPUBModels.swift
  • Extension 文件使用 + 命名:Sources/RDEpubReaderView/EPUBUI/RDEPUBReaderController+ContentDelegates.swift

变量/函数命名:

  • 基本遵循 Swift lowerCamelCaseparse(epubURL:)Sources/RDEpubReaderView/EPUBCore/RDEPUBParser.swift
  • 常量多用 static letkRDEPUBHighlightAttributeNameSources/RDEpubReaderView/EPUBCore/Models/RDEPUBAnnotationModels.swift

代码风格与排版(从现有代码归纳)

缩进与换行:

  • 多数文件使用 4 空格缩进(示例:ReadViewDemo/ReadViewDemo/ViewController.swiftSources/RDEpubReaderView/EPUBCore/RDEPUBModels.swift
  • 历史代码中更常见”强制换行/多行括号”风格

空行与分组:

  • UI 相关文件常用空行分隔属性/初始化/布局段落
  • // MARK: 用于分区组织(示例:Sources/RDEpubReaderView/RDEpubReaderGestureController.swiftSources/RDEpubReaderView/EPUBTextRendering/RDEpubPlainTextBookBuilder.swift

类型组织:

  • 偏好用 extension 拆分职责/协议实现(示例:ReadViewDemo/ReadViewDemo/ViewController.swiftUITableViewDataSource/Delegate
  • API 暴露处使用 publicpublic final classpublic enum/struct(示例:Sources/RDEpubReaderView/EPUBCore/RDEPUBModels.swift
  • “对外只读、内部可写”常用 public internal(set)(示例:Sources/RDEpubReaderView/EPUBCore/RDEPUBParser.swift

导入与依赖使用

import

  • UIKit/UI 文件:import UIKit(大量文件)
  • Core/模型文件:import Foundation(如 Sources/RDEpubReaderView/EPUBCore/RDEPUBModels.swift
  • 三方依赖按需引入:
    • SnapKit:布局
    • SSAlertSwift:弹窗/提示

Pods 目录说明:

  • ReadViewDemo/Pods/** 为依赖源码/生成配置,通常不作为本仓库代码风格的“标准样式”参考。

错误处理与日志

  • Core 解析层倾向用 throws + 自定义 Error(示例:Sources/RDEpubReaderView/EPUBCore/RDEPUBParser.swiftSources/RDEpubReaderView/EPUBCore/RDEPUBModels.swiftRDEPUBParserError
  • UI/控制器层常见 guard 早返回(示例:ReadViewDemo/ReadViewDemo/ViewController.swift
  • 未检测到统一日志框架(未发现专用 logging package/config出现时以系统 API/局部输出为主(需按具体文件核对)。

注释与文档

  • 项目规则(强约束):代码标识符保持英文,但代码注释/文档/提交信息使用中文(见 CONTEXT.md)。
  • 历史文件常带 Xcode 头部注释块(示例:Sources/RDEpubReaderView/ReaderView/RDEpubReaderView.swift)。
  • 公共 API 处存在少量三斜线文档注释(示例:Sources/RDEpubReaderView/RDEpubReaderView.swift 的中文说明)。

Lint / Formatter / 静态检查

未检测到(仓库根与常见位置):

  • SwiftLint 配置:.swiftlint.yml / swiftlint.yml
  • SwiftFormat 配置:.swiftformat
  • 通用格式化配置:.editorconfig
  • 其他ESLint/Prettier/Biome 等(本仓库非 JS/TS 主体)

可执行的工程级格式化/检查:

  • 主要依赖 Xcode或 Swift 编译器)自身检查;如需引入 SwiftLint/SwiftFormat应先新增对应配置文件并在 CI/构建脚本中接入。

Evidence关键证据文件

  • CONTEXT.md
  • ReadViewDemo/Podfile
  • RDEpubReaderView.podspec
  • ReadViewDemo/ReadViewDemo/ViewController.swift
  • Sources/RDEpubReaderView/ReaderView/RDEpubReaderView.swift
  • Sources/RDEpubReaderView/EPUBCore/RDEPUBParser.swift
  • Sources/RDEpubReaderView/EPUBCore/RDEPUBModels.swift
  • Sources/RDEpubReaderView/EPUBUI/RDEPUBReaderController.swift