12/08/2018, 17:16

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:

//             
0