IT業界で気づいたことをこっそり書くブログ

くすぶってるアプリエンジニアが、日々気づいたことを適当に綴っていきます(受託→ベンチャー→フリー→大企業→ベンチャー→法人化(今年))

機能・画面は一貫性を保とう

ココらへんの話ってどのくらい認知されてるんでしょうか?

 

機能や画面というのは、どういうルートで入ってきても一貫性を持った結果が出せるととても良い状態です。

 

f:id:otihateten3510:20180316131808p:plain

 

 

文脈依存性がないとも言えます。

 

文脈依存はなぜ良くないか

別に良くないというほどじゃないんですが、上図を見ると分かる通り、この機能は実質2機能です。
内部で何割かは共通化されているでしょうが、2機能です。
2機能だと、1機能に比べて色々大変です(ざっくりw)

 

文脈は、状態数を爆発させる

2機能、というと違和感があるかもしれません。
1機能2状態でもいいです。

そして文脈は状態数を爆発させます。
この時はこういう状態で、あのときはこういう状態、と増やしていくと、文脈と文脈は掛け算されていつの間にか数十状態ということもありえます。

そうするともはや仕様がおもすぎて何もできなくなります。バグも多いですしテストも多いです。コードもスパゲティになります(仕様がスパゲティなんです

仕様を決める際には、慎重に状態数を減らさなければなりません。

 

補足

一貫性というのはあくまでルールです。出力が1つじゃないといけないというわけではありません。

また、クラス、関数、機能、画面内で無用な分岐を減らしていくことで、状態数爆発にすぐ気づくことができるようになります。
安易な共通化は本当に悪としか思えません。

一方で、文脈に応じて柔軟な出力を出せるとユーザーフレンドリーでもあります。ただ、仕様上の状態数をあまり増やさずに、多種多様な出力に見せることは可能です。そこに頭を捻る必要があります。ちょっとした追加機能で状態数を増やすのは避けるべきです。