ここでは、Ymirを使ってアプリケーションを開発する場合の注意点を説明します。
自動生成
YmirではGeneration-Gapパターンに従った自動生成機能を提供しています。Generation-Gapパターンが適用されたクラスの開発においては、通常開発者は次のルールに従って開発を進めます。
- 開発者はGapクラスにコードを追記していく。
- Baseクラスは自動生成によって置き換えられるため、基本的には開発者は手を入れない。
ところがYmirの場合は若干例外があり、以下の操作に限ってはBaseクラスを開発者が変更することが認められています。
- Baseクラスが持つメソッドにアノテーションを追加する
- Baseクラスが持つフィールドの型を変更する
- Baseクラスが持つメソッドの引数の型や返り値の型を変更する
- Baseクラスの親クラスを変更する(Pageクラスのみ)
- Baseクラスのメソッドの引数や返り値の型を変更する
Generics型の利用
(以下の制約はYmir-0.9.6では無くなりました。)
自動生成時にブラウザ上からDTOやPageプロパティの型を指定する場合、Generics形式の型を指定することはできません。
この制限は、Ymirの自動生成機構がコード再生成の場合に既存クラスのメタデータを使って既存コードと新コードのマージを行なっていることに起因しています。(メタデータからはGenerics型の情報を取得することができないのです。万が一できるのであればやり方を教えてください!)
同様に、Baseクラスに何らかの型情報を書く場合もGenerics形式で書くことはできません。
なおもちろんGapクラスではGenericsを使うことができます。
プロパティ名
Ymirでは他の多くのフレームワークと同様、JavaBeans規約に従ったプロパティ操作を行なっています。以下のようなプロパティ名はプロパティ操作を行なう際にあいまいであり予期せぬ動作を引き起こす危険性がありますので、利用しないことを推奨します。
| あいまいなプロパティ名 | 推奨されるプロパティ名 |
|---|---|
| A | a |
| aName | AName |
具体的には、リクエストパラメータ名、スコープにオブジェクトをバインドする際の名前などにあいまいなプロパティ名を用いないようにして下さい。