Tips to become a better Swift Developer
Type less, read less, produce more Extension ví dụ như việc bình phương 1 số, ta sẽ thường code như sau: // Okay Version func square ( x : Int ) - > Int { return x * x } var squaredOFFive = square ( x : 5 ) square ( x : squaredOFFive ) // 625 ...
Type less, read less, produce more
Extension
ví dụ như việc bình phương 1 số, ta sẽ thường code như sau:
// Okay Version func square(x: Int) -> Int { return x * x } var squaredOFFive = square(x: 5) square(x:squaredOFFive) // 625
Rõ ràng là variable squaredOFFive là không cần thiết mà chúng ta vẫn phải viết. Thay vào đó hãy code dùng extension như sau:
// Better Version extension Int { var squared: Int { return self * self } } 5.squared // 25 5.squared.squared // 625
Generics
Ví dụ việc in tất cả elements của 1 mảng
// Bad Code var stringArray = ["Bob", "Bobby", "SangJoon"] var intArray = [1, 3, 4, 5, 6] var doubleArray = [1.0, 2.0, 3.0] func printStringArray(a: [String]) { for s in a { print(s) } } func printIntArray(a: [Int]) { for i in a { print(i) } } func printDoubleArray(a: [Double]) {for d in a { print(d) } }
Quá nhiều functions, Hãy tạo chỉ 1 thôi:
// Awesome Code func printElementFromArray<T>(a: [T]) { for element in a { print(element) } }
For Loop vs While Loop
Ví dụ về việc in ra "count" 5 lần:
// Okay Code var i = 0 while 5 > i { print("Count") i += 1 }
Bạn tạo ra variable "i" để chắc chắn vòng lặp while có thể thoát ra =))
Listen, more variables → more memorization → more headache → more bugs → more life problems. Thay vì đó:
for _ in 1...5 { print("Count") }
Optional Unwrapping
Về cách sử dụng guard let vs if let Giả sử, tạo 1 program cho việc chào đón user mới:
var myUsername: Double? var myPassword: Double? // Hideous Code func userLogIn() { if let username = myUsername { if let password = myPassword { print("Welcome, (username)"!) } } }
Bạn thấy ngay pyramid of doom bởi vì dùng quá nhiều lệnh if lồng nhau. Ta có thể làm gọn gàng hơn như sau:
func userLogIn() { guard let username = myUsername, let password = myPassword else { return } print("Welcome, (username)!") }
Lựa chọn giữa Property vs Function
Ví dụ về việc tìm đường kính của một vòng tròn:
//