1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Android/iOS】コードレビューで気を付けるべき点について

Last updated at Posted at 2024-06-10

以下にAndroid(Kotlin)/iOS(Swift)それぞれのコードレビューで気を付けるべき点について記載していく。

Android(Kotlin)

・参考1:翻訳: Kotlinベストプラクティス『Idiomatic Kotlin. Best Practices』
 https://qiita.com/takahirom/items/87d46150088aadccb481

・スコープ関数を適切に使用しているか?(またはスコープ関数を使うことで可読性を高めているか)
 参考2:KotlinのRun, Let, Apply, Alsoを使い分け
 https://qiita.com/JohnSmithWithHaruhi/items/e8f411c379483d4902aa

・LiveDataを使用する場合、Observeは意図したタイミングで実行しているか?
 例えば、onViewCreatedで一度だけObserveするのではなく、
 ユーザー操作で何度も通るパスで何度もObserveすると、
 PostValueされて通知が飛んだ時にOvserveされた回数分だけ通知が動くことに。。

iOS(Swift)

・参考1:【Swift・iOS】コードレビューからコーディングする際の注意点をまとめてみた。
 https://qiita.com/shogunzozo/items/7432a2881e8b37e2f45c

・参考2:Swiftのコードレビューの時に確認しているポイント24選
 https://qiita.com/tsuta0856/items/4545bf8c2ffbfb05bb1f

・参考3:循環参照の理解から対策まで
 https://qiita.com/yoshidasss/items/d263823d2786b567df02

・layoutSubviews
 カスタムViewのinit()でself.frameに依存したsubviewのレイアウト処理は書くべきではありません。
 画面の回転などによって変化していないため。
 Viewのframeが変化した時に自動的に呼び出されるlayoutSubviews()でself.frameに依存したsubviewのレイアウト処理を書くべき

・適切な位置にMARKが記載されているか?
 ちなみにSwiftで区切り線を引きたいときは、「//MARK:- *****」でOK

i/A共通

・コーディング規約を満たしているか?

・ヘッダーコメント、クラスやメソッドのDocコメントは適切か?

・レイアウトで完結するのに、コードで処理していないか?

・複雑な処理、後から見た人が分からないコードになっていないか?
 こういう場合はメソッド分けを検討する、もしくはコメントを手厚く書く

・テストコード
 修正、または新規に作成したコードは、XCTestやUIテストを通っているか?
 またはカバレッジ率は問題ないか?(これは案件ごとに異なるかも)

・誤字脱字は無いか?

・デザインパターンに則って修正されているか?
 UI操作、ロジック、APIリクエスト、DBアクセスなど、デザインパターンに則って適切に振り分けられているか?

・余計な(不要な)修正は入っていないか?
 Podを使っている場合はPodの変更が不要にもかかわらず変更してるとか、
あるファイルの変更点が無駄な改行1行のみの変更点がある、とか
TODO、FIXMEコメントやデバッグ用のコードが残っていないか?

・ライフサイクルを意識した修正となっているか?

・適切なスコープになっているか?
 変数、メソッドのスコープは適切か?
不要なアクセスになっていないか?

・関数型プログラミングしているか?
 副作用を避け、純粋関数を使用することで、テストが容易になり、スレッドセーフなコードを書くことができます
 参考:https://qiita.com/nemo-855/items/92b37ef2e9083c0d6c16

※純粋関数は以下2つを満たす関数のこと
 参照透過性がある
 外部に対する副作用がない

・汎用コードを作成する
 プロジェクト固有のコードから汎用コードを分離することを考える。

 これは、プロジェクトの他の部分から分離された、境界線の明確な小さな問題に集中できるからだ。こうした会問題に対する解決策は、より綿密で正確なものになる。それに、あとでコードを再利用できるかもしれない

・一度に一つのタスクを行う
 読みにくいコードがあれば、そこで行われているタスクを全て列挙する。そこに別の関数やクラスに分割できるタスクがあるだろう。

 それ以外は、関数の論理的な段落になる。タスクをどのように分割するかよりも、分割するということが大切なのだ。

 ※タスクを分割する際にうまく言葉で説明できないのあれば、何かを見落としているか、問題点や設計、または仕様に関する詳細が明確になっていないということだ。プログラム、あるいは自分の考えを言語化することで、明確に問題や設計を把握することにつながる。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?