-2
私はウェブサービスを迅速にやっています。私はalamofireを使用しています。コードが動作しているが、私はそれが "可読"ではない(クリーンなコードではない)と思う。私はこれをどのように最適化できるか考えていますか? LET文はerror
と上記data
のように、コンマと一緒に連鎖させることができれば感謝テストを受け入れるとネストされたものを避ける
static func checkBookValidity(serialNumber: String, callBack: Result<Bool?> ->()) {
let router = Router.CheckBookLuggage(serialNumber: serialNumber)
let request = Alamofire.request(router)
request.validate()
request.response { (request, response, data, error) in
if let error = error {
if error.code == NSURLErrorNotConnectedToInternet {
callBack(.Failure(.NoConnection))
}
else {
if let data = data {
do
{
if let json = try NSJSONSerialization.JSONObjectWithData(data, options: .AllowFragments) as? [String : AnyObject] {
let erroType = WSError.errorTypeWithJson(json, httpErroCode: error.code)
callBack(.Failure(erroType))
}
} catch {
callBack(.Failure(.ServerError))
}
}
else {
callBack(.Failure(.ServerError))
}
}
}
else {
if let data = data {
do
{
if let json = try NSJSONSerialization.JSONObjectWithData(data, options: .AllowFragments) as? [String : AnyObject] {
if let resultDic = json["result"] as? [String:AnyObject], let exists = resultDic["exists"] as? Bool {
if exists {
if let owner = resultDic["email"] as? String {
// ...
}
}
else {
callBack(.Success(false))
}
}
}
} catch {
callBack(.Failure(.ServerError))
}
}
}
}
}
['guard'ステートメント](https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Statements.html#//apple_ref/doc/uid/TP40014097)を見てください。 -CH33-ID434);) – Hamish
あなたはおそらくhttp://codereview.stackexchange.com/ – kye
でこの質問をするべきです。ありがとう、私はガードステートメントを知っている:)。オプションのバインディングと呼び出し関数を組み合わせてガードを使用できるかどうか考えていますか? (私の例を参照してjsonの解析と "データ"のバインドを試みる) – samir