デザイン

単機能・小さい部品の方が共有化し易い

業務ロジックの共通化を行いたいという話を聞いて見てみると業務機能単位で考えてことが多くあります。しかしあまり上手く共通機能を抽出できないことが多いようです。大きな機能は仕様が複雑で安定しないためだと思いますが、ではどうすればよいのでしょう…

詳細設計は必要です

業務アプリで詳細設計書と呼ばれるものをプログラムを作成したあとにリバースして作成しているようなことも良くみます。これは詳細設計をせずにプログラムを書いていることになります。詳細設計は意味のないことなのでしょうか?無駄な作業なのでしょうか? …

仕様化はインサイドアウトで進めよ

よくソフトウエア開発で仕様の整合性が保たれていないなどの嘆き声を聞くことがある。 この問題は様々な要因によると思うが、仕様化の進め方に問題があることは十二分に想像できる。 ではどのような点が問題なのであろうか? ソフトウエア開発では、要件獲得…

RESTとドメインモデル

RESTはデータモデル的で振る舞いがないように思われているが僕はそうじゃないと考えている。 導出項目や構造制約を実装したビジネスルールが表現可能なモデルをRESTとして公開するのはそれほど難しいことではないし、おかしなことでもないよね。今度、ドメイ…

Expression Builder

入力チェックのライブラリに応用してみた。言語内DSLとしての読みやすさに期待したのだが、それ以上に表現力が広がった。2番目のRangeのように文字列パース方式と組み合わせるとより効果的だった。 // 0=<入力数値<10 ValidatorExpression rule1 = new Valid…

ベースクラス インジェクション

これはベースクラスでインジェクションを行うというお気に入りの方法です。メリットは、特別なコンテナフレームワークが必要ない点です。ベースクラスがコンポーネントに対するインジェクションの管理を行います。このため、インスタンス管理を柔軟にできる…

インタフェースの多用

最近DIばやりしていてインタフェースを多用する事例を良くみますが、どうなんでしょうかね。 1インタフェース=1クラスになっていて、機能追加があったときにわざわざインタフェースと対応するクラス両方直すようなことになっていたりすることはないのかな…