koogawa blog

iOS、Android、foursquareに関する話題

まず、失敗することを確認してから先に進む

これが正しい、とかを言いたいわけではなく、自分はいつもこうやっているよー、というのをメモに残しておきます。

ケース1

例えば、Aというアプリを動かすにはBとCのライブラリが必要、というケースがあったとします。 こういった場合、自分はまず、BとCのライブラリを敢えてインストールせずにAを動かそうとします。 そこでエラーが出ればBをインストールして試し、ダメならCもインストールします。

理由

素直にBとCをインストールしてから始めればいいものを、何故こんな面倒なことをするのか、理由を考えてみました。

1. エラーが起きた場合どうなるか把握できる

最初から成功してしまうと、エラーになった場合の挙動などを知らずに先に進むことになります。最初に敢えて失敗しておくことで、後々エラーが起こった場合、素早く対処することができます。

2. BとCがなくても動いてしまう場合がある

ドキュメントには「BとCが必要」と書いてあっても、試しに実行してみたら何の問題もなく動いてしまうケースがあります。その場合「何故動いたのか」を調べていくことになるので、結果的に知識を深めることができます。

ありきたりの言葉ですが、疑うことは大事ですね。

ケース2

iOSアプリ開発を例に挙げます。URLSession を使ってHTTP通信するケースを考えます。

let task = URLSession.shared.dataTask(with: url!) { data, response, error in
      if let data = data, let response = response {
        print(response)
      } else {
        print(error ?? "Error")
      }
    }

    task.resume()

この場合もまずは次のことを試します。

  1. urlnil を入れてみる
  2. url に実在しないデタラメのURLを入れてみる
  3. task.resume() を実行しない

理由

1. データがおかしくなった場合の挙動を知っておけるので、後々エラーになったときに役に立つ

これもケース1とほとんど同じですね。最初に失敗しておくことで、

  • アプリがクラッシュした → お、nil が混入しとるな
  • レスポンスが返ってこない → そもそもリクエストしてる?

といった対応ができるようになります。

2. いきなり成功すると不安になるから

「一発でビルドが通った」

これほど不安なことはありません。 この気持、わかってくれる方もいらっしゃるのでは??

まとめ

ここに書いた内容が、他の皆さんもやっている「当たり前」の進め方なのかはわかりません。だからこそメモに残してみました。 俺も同じだよ!などあれば教えてください。