実行メソッドのネーミングルールを検討してみる

従来のStrutsであれば、「通常のアクション」が XxxActionだとすると、
「画面初期化用のアクション」は InitXxxAction とするのが慣習でした。


SAStrutsでは従来のStrutsと異なり1つのアクションが
複数の実行メソッドを持つことができます。


このアーキテクチャの違いに着目し、
実際のプロジェクトで使うことを想定して
SAStruts用の実行メソッドのネーミングルールを検討してみました。


SAStrutsでは従来の「画面初期化用のアクション」はアクション内の
実行メソッドに対応します。では、このメソッドのネーミングルールをどうすべきか?
ズバリ、対応するJSP名(JSPファイル名の拡張子を取り除いた名前)が
シンプルで良いんじゃないかと。具体的には以下のような感じです。

    @Execute(validator = false)
    public String add() {
        ・・・ 画面に表示するデータを準備する ・・・
        return "add.jsp";
    }


以前、ひがさんがWEB+DB PRESS vol.36の記事で以下のようなことをおっしゃっていました。

業務ロジックは、主に2つのパターンに分けられます。
- 画面に表示するデータを準備する
- 画面に入力されたデータを処理する


この『画面に表示するデータを準備する』メソッドを
SASturtsではJSP名に対応させるようにすれば、
超シンプルではないでしょうか。
Teedaではinitialize()とprerender()に相当するメソッド)
名前があった方がわかりやすいので、ひとまず、viewメソッドと名付けておく。
jspメソッドとかの方がいいかな。)


また、『画面に入力されたデータを処理する』は、
do で始まるメソッド(通称: doメソッド)にすると分かり易いと考えています。
(doメソッドでリダイレクトするケースはほとんどないので、URLをdoで汚す心配はなさそうです。)

    @Execute(input = "add.jsp")
    public String doAdd() {
        ・・・ 画面に入力されたデータを処理する ・・・
        return add(); 
    }


doメソッドの return文は、return "add.jsp"; のようにしても動くことは動きます。
しかし、doメソッドの最後に『画面に表示するデータを準備する』メソッドを呼び出すスタイルをオススメします。なぜなら、メソッドの責務を明確にして、DRYなコードを書くことができるからです。