Swift Swift Library

Nhiều bạn newbie sẽ rất khó trả lời câu hỏi: Làm sao để viết code swift đúng chuẩn thế giới? Bạn viết code và người khác đọc được một cách dễ dàng, tuân theo tiêu chuẩn của cộng đồng Swift.

Khi viết ngôn ngữ lập trình nói chung, Swift nói riêng không ai có thể nói bạn viết sai hay đúng như nào. Ví dụ đoạn code sau:

class classSample {
    var BienGido = ""

    func TenHam() {
        print(BienGido)
    }
}

Khi biên dịch chương trình, nó không báo lỗi. Nhưng đoạn code trên mắc 3 lỗi code style nghiêm trọng:

  1. Tên lớp bắt đầu bằng chữ thường. Luật bất thành văn, khi đặt tên class ở đa số tất cả các ngôn ngữ lập trình, người ta đều phải bắt đầu bằng chữ in hoa. Lý do là: tên lớp là 1 class – nó là 1 danh từ. Ở bộ môn tiếng Việt lớp 3, có quy định: danh từ chỉ tên riêng đều phải viết hoa, ví dụ: Hà Nội, Hồ Chí Minh, Lào Cai.. Cũng tương tự, ở programing language cũng có quy luật tương tự.
  2. Đặt tên biến bắt đầu bằng chữ hoa. Tên biến ở đây là thuộc tính để lưu trữ giá trị của class. Do vậy bạn không thể đặt tên viết hoa được, vì nó đại diện cho nhiều đối tượng kế thừa từ lớp. Bạn không thể nói là tim là 1 danh từ riêng được. Vì con người nào cũng có tim cả.
  3. Tên hàm bắt đầu bằng chữ hoa. Tương tự, tên hàm là phương thức cho class, cho nên nó cũng là chung cho các đối tượng kế thừa từ lớp. Nó bắt buộc phải viết thường.

Sau khi sửa lại, đoạn code sẽ như sau:

class ClassSample {
    var bienGido = ""

    func tenHam() {
        print(bienGido)
    }
}

Tuy nhiên, với 1 bạn mới dấn thân vào con đường lập trình, thì ai sẽ là người nhắc nhở bạn những rule này? Thật may mắn, Swift đã có 1 thư viện hỗ trợ cho bạn viết code 1 cách clean nhất, lỡ bạn có đặt tên biến viết hoa hay tên class viết thường như trên, thì nó tự động báo cho bạn biết để sửa, nhằm đảm bảo code là đẹp nhất.

Tin tôi đi, khi bạn dùng library này, bạn sẽ ngày càng chuẩn chu hơn trong việc viết code và tự tin phang vào đứa nào dám bảo bạn viết sai quy tắc của IOS programing.

Tên của em nó là SwiftLint

Đầu tiên bạn cần phải cài đặt em nó vào project mới của bạn. Project của bạn có thể là đã có sẵn hoặc tạo mới từ đầu, bạn thoải mái chọn lựa.

Cách cài đặt có thể xem readme của nó, hoặc không thì tôi làm đơn giản như sau:

Nếu bạn thích Homebrew, thì bạn gõ dòng lệnh:

brew install swiftlint

Còn nếu đam mê CocoaPods thì gõ:

pod init
pod 'SwiftLint'

Đọc đến đây có nhiều bạn hỏi tôi là “Ơ thế Homebrew là gì mà CocoaPods là gì?” Bạn ơi, ngồi xuống đây làm điếu thuốc, uống chén nước để tôi nói bạn nghe này:

  • Homebrew và CocoaPods là 2 thư viện hỗ trợ bạn cài thư viện ngoài 1 cách nhanh chóng và đơn giản bằng dòng lệnh.

Mặc định máy Macbook của bạn sẽ không có cài đặt nó đâu, và nếu bạn muốn chơi với 2 em nó thì có 2 cách: 1 là bạn google từ khóa “cách cài đặt Homebrew” hay là CocoaPods, sau đó bạn tìm 1 video nào đó trên youtube chẳng hạn, xem rồi thẩm thôi. Cách 2 là đợi tôi có thời gian tôi giải thích bọn nó làm gì. Bật mí là để hiểu bản chất hơn về việc xây dựng thư viện thì bạn dùng Homebrew hay hơn CocoaPods, sau này có thời gian chúng ta sẽ xây dựng các library của các bạn và đẩy lên cho cộng đồng nhé. Bạn sẽ hiểu hơn các khái niệm static hay dynamic library. Còn bây giờ chưa phải lúc làm chuyện đó 😀 chúng ta vẫn còn non.

Quay lại với swiftLint, hiện tại khi cài đặt thư viện xong, bạn mở lên thì nó vẫn chưa hoạt động với project của bạn. Chúng ta cần giao thông với em ấy và thực hiện 1 vài bước setting nhỏ như sau:

  1. Bạn vào setting -> Chọn vào tab Build Phases và nhấn vào nút + -> “New Run Script Phase”. Thêm đoạn script sau:
"${PODS_ROOT}/SwiftLint/swiftlint"

Đoạn code trên nhằm báo cho Xcode dùng Swiftlint để check code convention.

Bạn sửa tên Run scipt thành swiftlink. Sau đó kéo cái script này lên gần trên cùng, sau cái [CP] Check Pods Manifest.lock như hình:

Để kiểm tra lại, bạn thử sửa đoạn code tên class viết thường xem nó báo lỗi không nha!

Lỗi vì tên class viết thường

Thử với nhiều code lỗi như sau:

import Foundation

class classSample {
    enum enumLoi {
        case case1
        case Case2
    }
    var BienGido = ""

    func TenHam() {
        var EnumLoi: enumLoi = .case1
        switch EnumLoi {
        case .case1:
            print("case1")
        case .Case2:
            print("case2")
            break
        }
        print(BienGido)
    }
}

Thông báo lỗi bạn thu được:

Các lỗi code sinh ra

Các dòng đỏ báo lỗi bạn có thể dịch như sau:

  1. Tên phải uppercase, viết hoa chữ đầu
  2. enumLoi cũng phải viết hoa chữ đầu
  3. Case2 phải viết chữ thường
  4. Tên biến không được viết hoa chữ đầu
  5. Tên hàm phải bắt đầu bằng chữ thường
  6. Tương tự 5
  7. Trong case đã có lệnh print nên không cần thiết phải có break

Sau khi chuẩn hóa ta có đoạn code sau:

class ClassSample {
    enum EnumDung {
        case case1
        case case2
    }
    var bienGido = ""

    func tenHam() {
        var enumDung: EnumDung
        enumDung = .case1

        switch enumDung {
        case .case1:
            print("case1")
        case .case2:
            print("case2")
        }
        print(bienGido)
    }
}

Ồ vậy là bây giờ bạn đã yên tâm mỗi khi viết code, có quên có sai ở đâu đo thì yên tâm đã có thằng check cho bạn rồi. Và đảm bảo sau 1 thời gian sử dụng swiftlint thì bạn viết code sẽ chuẩn mực hơn, sexy hơn.

Hi vọng bài viết này sẽ giúp được cho các bạn ngày càng phát triển kỹ năng coding của mình.

Source tham khảo:

https://github.com/codetoanbug/CodestyleSample

Code Toàn Bug

Code nhiều bug nhiều!

2 thoughts on “Lập trình IOS: Làm sao để viết code swift đúng chuẩn thế giới?

  1. Nên code bằng tiếng anh (hoặc 100% tiếng Việt) và tránh để variable type vào trong tên biến/class/enum.

Leave a Reply

Your email address will not be published. Required fields are marked *