難しいことをしようとしているから
それは、難しいことしようとしているから。
しかも、わざわざ難しいことをしようとしているから。
設計が難しくなっている。
画面(UI・レイアウト)設計 と API設計。
この2つがシンプルであれば、あっという間に実装→テストは終わる。
画面(UI・レイアウト)設計
画面の構造が複雑だったり、1つの画面でいろんなことを同時にやろうとすると、一気に実装にかかる時間、テストに要する時間が増えていく。
そして画面の構造が複雑だと、保守性も下がっていく。
API設計
APIの構造が複雑だと、実装者はできている自信が持てない。とりあえず設計書通りに作るしかなくなる。
JUnitを組むのにもかかる時間が増える。テストケースも増える。
まずは最低限必要なものを設計して、その後で余力があれば追加機能を設計→実装すればいい。
複雑になるのを防ぐには、分割すること。画面を分けるか、APIを分けるか。分けると各要素は単純になり、設計も実装も簡単になる。
難しいことを考えているときは、まず分割できないか考えよう。設計の肝は、適切な単位に分割することである。
顧客のいうことを何でもかんでもそのまま実現する方法を考えるのが設計ではない。