ここ最近のiOS開発で機能改修時に、クソコード、構成の問題で、見積もりを盛らなきゃと思った方が多々ありました。
今後の他案件の見積もりで参考できるようにメモっていきます。
基本的に筆者の好みでまとめているだけなので、どなたにも当てはまるものではないです。
改修案件を受けた時に該当する実装が存在したら、工数見積もりの掛数あげちゃいましょう!
iOSならでは
UI
- NavigationBar、TabBarが意味もなくオリジナルで作成されている
- 拡大モードで動作している
- autolayoutが使われていない
- 必要以上にStoryBoardを分割している(全体の見通しをしにくく、調査工数が上がるため)
- 普通のネイティブアプリなのに、stroyboardを使っていない(不必要にコードのみでUIが作られていると、改修時の調査に5倍以上時間がかかるので、見積もりを跳ね上げる必要が出てしまいます。)
Model
- DateFormatterの初期化が適切に行われていない
- FMDBとか使ってる
- DB,APIの処理がViewControllerの中にある
Swiftならでは
- Swiftのバージョンが古い
- getHogeの様なメソッドがある
Objective-Cならでは
- nilチェックがいらないところでチェックしている
- getHogeの様なメソッドがある
どの案件にも適用できそうなところ
コード管理
- コード管理ツールが使われていない
- IDEのwarningだらけ
- コード規約がなく、プログラムのフォーマットがバラバラ
- 動作しないUTが存在する
- UTと言いつつ、ほとんどテストパターンを網羅していないテストが多い(信頼できないので、ない方がいい)
- MVVMを導入したつもりのプロジェクト(結構な確率でMVVMではない何かになっているので、ただぐちゃぐちゃで読みにくい)
- プロジェクトのフォルダ構成に統一性がない
- 長くメンテナンスされていない(1年半以上目安。SDKの一部機能が非推奨になっていたり、最新OSverでは正常に動作しなくなっていたりと、工数upの元になりやすい)
プログラム
- 使われていないクラスや、プロパティが多数ある
- 必要以上にBaseControllerなど各所に継承が使われている
- Controller周りのプログラムが600行超えているものが多数ある
- 適切なライブラリがあるのに、車輪の再発明をしてる
- メンテされていないライブラリを使っている