パッケージの開発のための標準のコーディング方法とガイドライン
- 最終更新日2022/05/19
パッケージの開発のための標準のコーディング方法とガイドライン
このトピックでは、質の高いパッケージを開発するための標準のコーディング方法とガイドラインを説明しています。
- テスト
- 質の高いコードを実現します。パッケージに十分なユニット テストと統合テストを書き込みます。
- アイコン
- パッケージに適切なアイコンを設定します。
- 手動でバージョンを設定する
- SDK パッケージ ビルド バージョンは、ビルドが発生するたびに自動的に更新されます。ただし、共通の [build.gradle] ファイルのコマンド プロジェクトでは手動で設定できます。
- ビルドの前に、[build.gradle] ファイルを更新します。
- 次のように、ピリオドで区切って、最大 4 桁の数字を入力します。
. . . ext { version '2.0.8' } dependencies {...}
- 依存関係
- パッケージ JAR のすべての依存関係を組み込みます。一時的な場所に依存関係を抽出し、ランタイムに依存関係をロードします。依存関係をロードした後で、必ず一時的な場所をクリアしてください。
- 依存関係にある JAR ファイル
- 依存関係にある JAR ファイルがパッケージされるように、依存関係にある JAR ファイルを、実装として [build.gradle] ファイルに追加します。
. . . dependencies { compileOnly name: 'command-annotations' compileOnly name: 'bot-runtime' compileOnly name: 'bot-api' implementation name: 'i18n-api' implementation name: 'mydependentjavafile.jar' apt name: 'command-processor' compileOnly group: 'org.apache.logging.log4j', name: 'log4j-core', version: "$loggerVersion" testImplementation "org.testng:testng:$testNgVersion" testImplementation name: 'bot-runtime' testImplementation name: 'bot-api' } . . .
- 既存のパッケージに新しいアクションを追加
- 新しいアクションを既存のパッケージに追加する際は、パッケージングの前に必ずクリーン操作を行います。クリーン ビルドを行うことを推奨しています - gradlew.bat clean build shadowJar.
- エラー メッセージ
- 意味のあるエラー メッセージを指定します。
-
必ず意味のあるエラー メッセージを指定します。たとえば、
BotCommandException
で i18n API を使用するローカル言語では、新しい例外BotCommandException(MESSAGES.getString("Run.Exception.InvalidWorkingDirPath"))
をスローします。 - 絶対に
ex.message
などの一般的なエラー メッセージをスローしないでください。
-
必ず意味のあるエラー メッセージを指定します。たとえば、
- 基本的な検証
- この開発キットに含まれる
@NotEmpty
のような検証の注釈ルールを使用します。コードに基本の検証を追加しないでください。「検証の注釈」を参照してください。 - ループ
- コードに長いランニング ループを使用しません。長いランニング ループは、CPU の使用量を増加させ、「Bot is unresponsive」のようなエラーの原因となります。
- ログ記録の追加
- Bot ランタイム フレームワークで提供されているデフォルトの [log4J] ロガーを使用します。独自のロッガーを使用しないでください。詳細はサンプル コードをご覧ください。
- ログ記録レベル
-
- ERROR/FATAL: ユーザーが影響を受け、回避策がない重大なエラーイベント。
- 警告: 予期しないエラーが発生したが、システムが回復した状態。
- 情報: 状態変更に関する情報メッセージ (たとえば、リクエストの受諾など)。
- DEBUG: 何か問題が発生したときにデバッグするために必要な詳細な診断情報。
-
TRACE: アプリケーションの動作に関するすべての情報が取得されます。
ログ レベルが不明な場合は、[TRACE] に設定します。
- リソースのロード
- 次の例に示すように、すべてのリソースは現在のスレッド コンテキスト クラス ローダーを使用してロードする必要があります。
Thread.currentThread().getContextClassLoader().getResourceAsStream("resource.json");