Swift Enum - правильное использование ресурсов

Часто для значений из Enum-а требуется сопоставить или локализованную строку, чтобы показать на экране пользователю или иконку/картинку.
Встречаю такой код:

enum LayerType {
	case wind
  case swell
}

// View слой (ViewController или Presentation слой)
var title = ""
switch layerType {
   case .wind: 
       title = NSLocalizedString("layerType_wind", comment: "")
   case .swell: 
       title = NSLocalizedString("layerType_swell", comment: "")
}

Такой код становится сложно поддерживать, потому что при добавлении case-ов в Enum потребуется изменять код во всех местах где используется Enum. То есть ходить по всем ViewController или View и менять Switch.

Код с зависимостью от rawValue еще хуже:

enum LayerType: String {
	case wind = "layerType_wind"
  case swell = "layerType_swell"
}

// View слой (ViewController или Presentation слой)
var title = NSLocalizedString(layerType.rawValue, comment: "")

Догадаться, что где-то во View-слое используется rawValue невозможно. К тому же при таком подходе не будет ошибки компиляции.

Считаю, что лучше сделать отдельный Extension для Enum-а и все связанные ресурсы объявлять там. Например, вот так

enum LayerType: String {
    case wind
    case swell
}

extension LayerType {
    var localizedTitle: String {
        let map: [LayerType: String] = [
            .wind: "layerType_wind",
            .swell: "layerType_swell"
        ]
        guard let locKey = map[self] else {return "Undefined"}
        return NSLocalizedString(locKey, comment: "")
    }
}

// View слой (ViewController или Presentation слой)
let layerType = LayerType.wind
var title = layerType.localizedTitle

Таким образом все локализации и связанные картинки, видео будут объявляться в одном месте.