Wiederholungen vermeiden
Dieses Prinzip sieht vor, dass derselbe Codesatz niemals dupliziert werden sollte. Dies gilt auch für Elemente wie Zeichenfolgentexte. Code-Duplikate erhöhen die Fehleranfälligkeit, wenn etwas geändert werden muss, und sollten gesucht und entfernt werden.
Blanke CSS-Regeln vermeiden
CSS-Regeln sollten speziell auf das Zielelement im Kontext Ihrer Anwendung ausgerichtet sein. Eine CSS-Regel, die auf .content .center angewendet wird, wäre beispielsweise zu breit angelegt und könnte sich auf viele Inhalte in Ihrem System auswirken, weshalb andere diesen Stil zukünftig überschreiben müssten. Dagegen wäre .myapp-centertext eine spezifischere Regel, da sie zentrierten Text im Kontext Ihrer Anwendung festlegt.
Verwendung veralteter APIs vermeiden
Wenn eine API veraltet ist, ist es besser, den neuen empfohlenen Ansatz zu suchen anstatt die veraltete API zu verwenden. Diese Vorgehensweise vereinfacht zukünftige Upgrades.
Lokalisierbaren Code schreiben
Alle Zeichenfolgen, die nicht autorenseitig bereitgestellt werden, sollten in einem Aufruf des i18n-Wörterbuchs von AEM über I18n.get() in JSP/Java und CQ.I18n.get() in JavaScript zusammengefasst werden. Diese Implementierung gibt die Zeichenfolge zurück, die an sie übergeben wurde, wenn keine Implementierung gefunden wird. Dies bietet die Flexibilität, die Lokalisierung zu implementieren, nachdem die Funktionen in der primären Sprache implementiert wurden.
Ressourcenpfade zur Sicherheit maskieren
Zwar sollten Pfade im JCR keine Leerzeichen enthalten, aber der Code sollte nicht fehlschlagen, wenn Leerzeichen vorhanden sind. Jackrabbit stellt eine Text-Hilfsklasse mit den Methoden escape() und escapePath() bereit. Für JSPs stellt die Granite-Benutzeroberfläche die Funktion granite:encodeURIPath() EL bereit.
Zur Absicherung vor Cross-Site-Scripting-Angriffen die XSS-API und/oder HTL nutzen
AEM stellt eine XSS-API bereit, mit der Sie Parameter einfach bereinigen und die Absicherung vor Cross-Site-Scripting-Angriffen gewährleisten können. Außerdem sind diese Schutzmechanismen bei HTL direkt in der Vorlagensprache integriert. Ein API-Cheat-Sheet können Sie unter Entwicklung – Richtlinien und Best Practices herunterladen.
Angemessene Protokollierung implementieren
Für Java™-Code unterstützt AEM slf4j als Standard-API für die Protokollierung von Meldungen. Für eine konsistente Administration sollte die API mit den Konfigurationen genutzt werden, die über die OSGi-Konsole verfügbar sind. Slf4j umfasst fünf verschiedene Protokollierungsebenen. Adobe empfiehlt, bei der Auswahl der Ebene, auf der eine Meldung protokolliert werden soll, die folgenden Richtlinien anzuwenden:
- ERROR: Wenn etwas im Code nicht funktioniert und die Verarbeitung nicht fortgesetzt werden kann. Dies geschieht häufig in Folge eines unerwarteten Ausnahmefehlers. Es ist hilfreich, bei solchen Szenarien Stapelüberwachungen einzuschließen.
- WARN: Wenn etwas nicht richtig funktioniert hat, aber die Verarbeitung fortgesetzt werden kann. Dies geschieht oft in Folge eines Ausnahmefehlers, mit dem gerechnet wurde, z. B. PathNotFoundException.
- INFO: Informationen, die bei der Überwachung eines Systems hilfreich sein dürften. Denken Sie daran, dass dies der Standard ist und die meisten Kunden ihn in ihren Umgebungen beibehalten. Verwenden Sie diese Ebene daher nicht zu häufig.
- DEBUG: Informationen der unteren Ebene zur Verarbeitung. Dies ist hilfreich, wenn ein Problem zusammen mit dem Support behoben wird.
- TRACE: Informationen der untersten Ebene, z. B. das Aufrufen/Beenden von Methoden. Dies wird normalerweise nur von Entwicklerinnen und Entwicklern verwendet.
Wenn JavaScript vorhanden ist, sollte console.log nur während der Entwicklung genutzt werden und alle Protokollanweisungen sollten vor der Veröffentlichung entfernt werden.
Nicht durchdachte Programmierung vermeiden
Vermeiden Sie es, Code zu kopieren, ohne zu wissen, was er tut. Im Zweifelsfall ist es ratsam, jemanden zu fragen, der über größere Erfahrung mit dem Modul oder der API verfügt, bei dem/der Sie sich nicht sicher sind.