スクリプトレットを JSP に含めると、コード内の問題のデバッグが難しくなります。さらに、JSPにスクリプトレットを含めることで、ビジネスロジックを表示層から分離するのが困難になります。これは、単一責任原則とMVC設計パターンの違反です。
コードを記述するのは一度ですが、何度も読まれます。私たちが書いたコードをきれいにするために前に時間をかけて、後で読む必要があるので、私たちや他の開発者は配当を払う。
別のプログラマーがモジュールを開かなくても内容がわかるようにすることが理想的です。同様に、メソッドが何を行うかを読まずに知らせることができます。 こうしたアイデアを受け入れれれば受け入れるほどコードを読みやすくなりコードを書いたり変えたりする時間が短くなります
AEM のコードベースでは、次のような規則が使用されます。
<Interface>Impl
という名前です。ReaderImpl
.<Variant><Interface>
という名前が付けられます。JcrReader
とFileSystemReader
。Abstract<Interface>
またはAbstract<Variant><Interface>
という名前が付けられます。com.adobe.product.module
です。 MavenアーティファクトまたはOSGiバンドルは、それぞれ独自のパッケージを持つ必要があります。これらの規則を必ずお客様の実装に適用しなければならないというわけではありませんが、コードをメンテナンスしやすい状態に維持できるように、規則を定義してそれに準拠することが重要です。
名前を見れば、その目的が明らかになるようにすることが理想的です。名前が本来の値ほど明確でない場合の一般的なコードテストは、変数やメソッドの目的を説明するコメントの存在です。
不明確 |
消去 |
int d; /elapsed time in days |
int elapsedTimeInDays; |
/get tagged images |
public List getTaggedImages() {} |
DRY(Don't repeat yourself)は、同じコードセットを繰り返してはならないということです。これは、文字列リテラルなどにも当てはまります。 コードの複製は、何かが変更されなければならず、探し出され、排除されるべきであれば、欠陥の扉を開く。
CSS ルールは、アプリケーションのコンテキスト内のターゲット要素に固有でなければなりません。例えば、.content .centerに適用したCSSルールは広範囲に及ぶため、システム全体に多くのコンテンツに影響を与える可能性があり、他のユーザーが将来このスタイルをオーバーライドする必要があります。 .myapp- centertextは、アプリケーションのコンテキスト内で中央に配置されるテキストを指定するので、より具体的なル ** ールになります。
API が廃止された場合は常に、廃止された API を使用する代わりに、推奨される新しいアプローチを確認することをお勧めします。これにより、将来のアップグレードがスムーズになります。
作成者によって指定されない文字列は、JSP/Java の I18n.get() および JavaScript の CQ.I18n.get() を使用して AEM の i18n ディクショナリへの呼び出しでラップする必要があります。実装が見つからない場合、この実装は渡された文字列を返すので、このオファーでは、主言語の機能を実装した後に柔軟にローカライゼーションを実装できます。
JCR のパスにスペースを使用することはできませんが、スペースが使用されていても、コードが中断しないようにする必要があります。Jackrabbit では、escape() および escapePath() メソッドを含む Text ユーティリティクラスを提供しています。 JSPの場合、Granite UIはgranite:encodeURIPath() EL関数を公開します。
AEM では、パラメーターを簡単にクリーンにして、クロスサイトスクリプティング攻撃に対する安全性を確保するための XSS API を提供しています。また、HTLはこれらの保護をテンプレート化言語に直接組み込んでいます。 API参照シートは、開発 — ガイドラインとベストプラクティスからダウンロードできます。
Java コードについては、AEM では、メッセージをログに記録するための標準 API として slf4j をサポートしており、管理の一貫性を確保するために OSGi コンソールから使用可能な設定と組み合わせて使用する必要があります。Slf4jは5つの異なるログレベルを公開します。 メッセージをログに記録するレベルを選択する際には、次のガイドラインを使用することをお勧めします。
JavaScript の場合は、開発時にのみ console.log を使用し、リリース前にすべてのログステートメントを削除する必要があります。**
内容を理解せずに、コードをコピーしないでください。疑わしい場合は、モジュールやAPIに関する経験がある方に、明確でない人に問い合わせることをお勧めします。