以下のコードをイケてるまで行かなくてもマシなレベルで書くとしたら良い書き方はありますか?
知りたい点
Swiftのswitch文でもうちょいよい書く方法を知りたい。
Swiftならではのswitchの使い方など。
以下のコードだと return 0 や return 1 などDRYではないことが気にはなっています。
補足点
説明は便宜上わかりやすく書き直していて実際の実装はenumなどもう少しマシには書いてある状態。
といった感じです。
雑に質問投げて申し訳ないです。
Swift
1func testMethod(number: Int, tags: [String], products: [String]) -> Int { 2 if tags.isEmpty { 3 switch number { 4 case 0: 5 return 1 6 case 1...tags.count: 7 return 5 8 default: 9 return 0 10 } 11 } else { 12 switch number { 13 case 0: 14 return 1 15 case 1...tags.count: 16 if products.isEmpty { return 0 } 17 return 1 18 case 11...20: 19 return 5 20 default: 21 return 0 22 } 23 } 24} 25
s
どこらへんが「イケてない」と思っているのか書いて下さい。
例えば `case 0: return 1 ` や `default: return 0` など処理が重複していてDRYではない点。なんか頑張ればもう少し短くかけるかなと思ってやってみたものの思いつかなかったなど。
バグも含めてリファクタリングしないといけないのでしょうか?
例えば testMethod(number: 1, tags: [], products: []) で落ちますが、そういうのも残したままでリファクタリングしないといけないのでしょうか?
自分でそれをする時は絶対に必要というわけではないですが、他者にリファクタリングを依頼する場合はユニットテストが絶対に必要です。 まずはユニットテストを書いてください。 もしくはユニットテストが作成可能な仕様書を書いてください。
絶対w
ユニットテストのない書き換えをリファクタリングと呼んではだめですよ それはただの書き換えです 偉い人に怒られます
回答6件
あなたの回答
tips
プレビュー