実行メソッドのネーミングルールを検討してみる
従来の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なコードを書くことができるからです。