[Mac M2 Pro 12CPU, Sonoma 14.3.1]
SwiftUIアプリでトグルボタン2つと言語設定で分岐させたif文がメンテ不能な程にややこしくなったため、条件演算子を使ってリファクタリングしました。
条件 ? 真の場合の値 : 偽の場合の値
Clangではあり得なかったことですが、Xcodeでややこしいコードを書くと根を上げてエラーになりリファクタリングを強制されます。
[整理前]
VStack (spacing: -6){
if bezelDisplay {
if !coloredCMP {
if languageCode!.contains("ja") {
Text(getFormattedWeekday(entry.date).prefix(2))
.font(.system(size: 15))
.bold()
.foregroundColor(Color(hex:colorCircular1Hex))
.containerBackground(for: .widget){
Color.blue
}
.widgetLabel {
Text(getYear(entry.date) + " " + getFormattedYear(entry.date))
.font(.system(size: 20))
}
} else {
Text(getFormattedWeekday(entry.date).prefix(2))
.font(.system(size: 15))
.bold()
.foregroundColor(Color(hex:colorCircular1Hex))
.containerBackground(for: .widget){
Color.blue
}
.widgetLabel {
Text(getYear(entry.date))
.font(.system(size: 20))
}
}
} else {
<以下略>
[整理後]
VStack (spacing: -6){
let fontSize: Font = coloredCMP ? .system(size: 18) : .body
let yearText: String = bezelDisplay ? (languageCode!.contains("ja") ? getYear(entry.date) + " " + getFormattedYear(entry.date) : getYear(entry.date)) : ""
Text(getFormattedWeekday(entry.date))
.font(fontSize)
.bold()
.foregroundColor(Color(hex: colorCircular1Hex))
.containerBackground(for: .widget) {
Color.blue
}
.padding(.vertical, 2)
.widgetLabel {
Text(yearText)
.font(.system(size: 20))
}
Text(getDay(entry.date))
.font(.system(size: 20))
.bold()
.foregroundColor(Color(hex:colorCircular3Hex))
.containerBackground(for: .widget){
Color.blue
}
}