[Video Summary] Ch. 1.16 A First Refactoring with Functions in SwiftUI (2025)

Mô tả nhanh

Video này hướng dẫn cách sử dụng hàm để viết code tốt hơn trong ứng dụng SwiftUI, bao gồm việc tạo hàm playSound có thể tái sử dụng và hàm nonRepetingRandom để tạo số ngẫu nhiên không lặp. Video cũng giới thiệu khái niệm refactoring (tái cấu trúc code).

Video

Click vào hình dưới để mở:

Mô tả chi tiết

Video này hướng dẫn cách sử dụng hàm để viết code tốt hơn trong ứng dụng SwiftUI, bao gồm việc tạo hàm playSound có thể tái sử dụng và hàm nonRepetingRandom để tạo số ngẫu nhiên không lặp. Video cũng giới thiệu khái niệm refactoring (tái cấu trúc code).

Các bước thực hiện chính:

  1. Tạo hàm playSound:
    • Chuyển code chơi âm thanh hiện tại vào trong một hàm mới có tên playSound.

    • Hàm này nhận một tham số soundName kiểu String để xác định tên file âm thanh cần chơi.

    • Gọi hàm playSound trong buttonAction với tên file âm thanh tương ứng.

    • Hàm playSound có thể được sao chép và sử dụng trong các ứng dụng khác sau khi import thư viện AVFoundation và khởi tạo audioPlayer

    • Code mẫu:

    func playSound(soundName: String) {
        guard let url = Bundle.main.url(forResource: soundName, withExtension: "mp3") else {
            print("Unable to find \(soundName) in assets catalog")
            return
        }
        
        do {
            audioPlayer = try AVAudioPlayer(contentsOf: url)
            audioPlayer?.play()
        } catch {
            print("Error Playing Sound \(error)")
        }
    }
    
  2. Khái niệm Refactoring (Tái cấu trúc code):
    • Refactoring là quá trình viết lại code để cải thiện hiệu quả, khả năng đọc và bảo trì mà không thay đổi kết quả đầu ra.
    • Nguyên tắc "Don't Repeat Yourself" (DRY - không lặp lại chính mình) là một nguyên tắc quan trọng trong refactoring.
  3. Tạo hàm nonRepeatingRandom:
    • Phân tích ba khối code tạo số ngẫu nhiên không lặp cho tin nhắn, hình ảnh và âm thanh.
    • Tạo một hàm nonRepeatingRandom có hai tham số đầu vào:
      • lastNumber: Số ngẫu nhiên đã sử dụng lần cuối (Int).
      • upperBounds: Giới hạn trên của phạm vi số ngẫu nhiên (Int).
    • Hàm này trả về một số ngẫu nhiên mới không trùng với lastNumber và nằm trong khoảng từ 0 đến upperBounds.
    • Sử dụng hàm nonRepeatingRandom để thay thế cho các khối code hiện tại trong buttonAction.
    • Ví dụ code:
        func nonRepeatingRandom(lastNumber: Int, upperBounds: Int) -> Int {
              var newNumber = 0
            repeat {
                newNumber = Int.random(in: 0..<upperBounds)
            } while newNumber == lastNumber
            
            return newNumber
        }
    
  4. Cập nhật buttonAction:
    • Thay thế ba đoạn code tạo số ngẫu nhiên không lặp bằng cách gọi hàm nonRepeatingRandom, ví dụ:
       lastMessageNumber = nonRepeatingRandom(lastNumber: lastMessageNumber, upperBounds: messages.count - 1)
       messageString = messages[lastMessageNumber]
      
       lastImageNumber = nonRepeatingRandom(lastNumber: lastImageNumber, upperBounds: numberOfImages - 1)
        imageNameString = "\(imageNames[lastImageNumber])"
      
       lastSoundNumber = nonRepeatingRandom(lastNumber: lastSoundNumber, upperBounds: numberOfSounds - 1)
        playSound(soundName: soundNames[lastSoundNumber])
      


Chúc bạn có một buổi học thật hiệu quả!