読者です 読者をやめる 読者になる 読者になる

ninjinkun's diary

ninjinkunの日記

iOSアプリケーション開発のコードレビューで気をつけていること

日常的なコードレビューで気をつけていることリストです。GitHub会議(仮)で発表しようと思っていたのですが、日程の都合で参加できないので、書きためておいたメモを公開します。またどこかで発表するかもしれません。

  • AutoLayoutにできないか
    • AutoLayout化した方がすっきりしそうならAutoLayout化する
  • AutoLayout化できそうなものでやっていないものは、なぜコードで実装したか質問する
    • 例えばUITableViewCell
    • ちゃんと理由があれば別に良い。コードの方が良いことも多い
  • UIAppearanceで解決できないか
    • 各クラスの中にスタイルの指定が入るより、UIAppearanceでスタイル指定を分離して別クラスに書く方がデザイナーも弄りやすくて良い
  • 3.5インチ端末が考慮されているか
    • レイアウトが決め打ちだとここで問題が出ることが多い
  • 着信ステータスバーが考慮されているか
    • レイアウトが (略
  • 循環参照していないか
    • weakの付け忘れは多い
  • UIViewControllerに記述が多すぎないか
    • 設計の変更が必要になることが多いので、指摘のさじ加減は難しい
    • DataSourceやChild ViewControllerに分離できそうな場合はその旨を指摘する
      • 元の設計に余り手を入れなくても分割しやすいため
  • Modern Syntaxになっているか
  • 和暦対応しているか
    • 誰でも一度ははまる!
  • 非同期処理ならblockで成功、失敗が取れるようになっているか
    • やっておくと便利なことが多い
  • エラー処理の実装漏れはないか
    • 勢いで実装してると忘れがち
    • フィードバックの方法(アラートで出すのか云々)はプロジェクト次第
  • プロパティの公開範囲は適切か
    • そもそも公開する必要があるのか、公開するならreadonlyでも良くないか
  • 同期的なIOでユーザー体験に影響が出そうな部分はその旨を指摘
    • HTTPはだいたい気をつけるんだけど、ローカルのファイルアクセスは同期的にしがち
      • 大量のファイル、大きなファイルにアクセスする部分とか
      • ユーザーに気づかれないくらいのブロックなら別に良い
  • ViewControllerを閉じる時にHTTPリクエストのキャンセルは行われているか
    • 手を抜く場合もありますが…
  • 自前で実装する必要があるのか、OSSで解決できないか
  • 必要ならAppleのドキュメント、本、ブログ記事などを引用する
    • コーディングについてはCodeCompleteを引用することが多い (まあ他の本を読んでないだけ)
  • これをネタにLTとかできそうですねとか指摘する

自分が所属しているFablicではiOSエンジニア3人で開発しているので、ほぼレビューが溜まることがなく粛々と開発が進んで行きます。