tôi có hai lựa chọn khi thực hiện giao thức phù hợp trong Swift, với kết quả cuối cùng:Nơi triển khai giao thức Swift?
- Thực hiện các giao thức trong lớp - có nghĩa là, nhà nước phù hợp ở phía trên cùng của định nghĩa lớp, và đưa thi bên trong thân lớp hoặc
- Triển khai giao thức trong tiện ích - tức là, mã hóa sự tuân thủ giao thức hoàn toàn bên ngoài lớp học.
Dưới đây là một ví dụ:
public class MyClass : CustomDebugStringConvertible {
... // Something
public var debugDescription : String {
return "MyClass"
}
}
vs
class MyClass {
... // Something
}
extension MyClass : CustomDebugStringConvertible {
public var debugDescription: String {
return "MyClass"
}
}
mẫu mã trong cuốn sách Swift có xu hướng tập trung vào các phương pháp tiếp cận đầu tiên; Apple's source code of Swift core cho thấy rằng họ chỉ sử dụng phương pháp thứ hai (xem Bool
và Optional
để biết ví dụ).
Có cách nào âm thanh để quyết định giữa hai cách tiếp cận tùy thuộc vào tình huống hay đơn giản là vấn đề tùy chọn mã hóa?
Nó hoàn toàn là một vấn đề ưu tiên, và do đó là một vấn đề của ý kiến. Cá nhân tôi gần như luôn luôn làm thứ hai, nhưng không hoàn toàn luôn luôn. Xem thêm nhận xét của tôi về tiện ích tại đây: http://www.apeth.com/swiftBook/ch04.html#_extending_object_types – matt