iOS Framework Phần 1: Viết framework

Mục tiêu bài viết này là

  • Tạo 1 dynamic framework.
  • Đặt version và code đúng cách.
  • Đưa framework lên github để người khác có thể sử dụng.

Tạo Dynamic framework với Swift Package#

Swift 5.1
Xcode 11.3.1

Bước 1. XCode => Files => New => Chọn Swift Package
Bước 2. Mở file Package.swift thêm vào typedynamic

1
2
3
4
.library(
name: "GadevCore",
type: .dynamic,
targets: ["GadevCore"]),

Bước 3. Tạo file .xcodeproj

1
2
3
4
5
6
7
8
# Di chuyển vào thư mục project
cd /Users/mozaa/Locally/GadevCore

# Chạy lệnh
swift package generate-xcodeproj

# Sau đó Tắt XCode và mở lại
open GadevCore.xcodeproj

Bước 4. Tạo Scheme

  • New Scheme: GadevCore, GadevCoreTest với Target là GadevCore

Lưu ý: Edit Scheme và kiểm tra xem mục Run của target đã tích chọn chưa.

Coding#

Các nguyên tắc nên tuân theo#

  • Viết các tính năng mở rộng bằng cách sử dụng extension
  • Luôn viết Test Cases trước khi viết API, hãy thử tưởng tượng cách mà developers khác sử dụng API bạn viết.
  • Viết API tuân thủ Hyrum’s Law
  • Luôn viết Document cho API: Dùng tổ hợp phím Option + Command + / trên đầu function, đọc thêm

Một developer kinh nghiệm thì sẽ luôn đọc test cases để biết cách sử dụng framework.

Versioning đúng cách#

Version có dạng major.minor.patch

Vậy ta sẽ tăng số version như thế nào?

  • patch: Khi fix bug, tính năng ko có gì thay đổi, thì release version mới sẽ tăng patch.
  • minor: Khi add thêm chức năng thì tăng minor.
  • major: Khi có breaking change, developer phải chỉnh sửa các tính năng có gọi đến framework để nó có thể chạy tốt với bản update mới thì phải tăng major.

major version 0 = beta version
Tham khảo: https://semver.org/spec/v2.0.0.html

Sample#

Ví dụ framework đã viết: cung cấp 1 API convert mã màu Hex, và 2 API get/post.

Để đọc hiểu source code yêu cầu có kiến thức về GenericMocking


Tải source code về tại GitHub