Skip to content

convetion

ハル edited this page Mar 13, 2021 · 14 revisions

1. なぜ決めるの?

  • 可読性を向上させるため

  • 慣れた際のコーディングを楽にするため

  • バグを未然に防止するため

1.1. コーディング規約

  • Data-pack Helper PlusのError, Warning, Informationには原則として従ってね ただしDHP側のバグの場合はその限りじゃないよ

  • 全てのfunctionにはfunctionの説明、アクセス修飾子を記載してね

    -> IMP-Docの書き方

  • #declareのされてないtag, storage等を使用しないでね

    -> declareの書き方

  • functionアクセス修飾子は最低限のスコープで記載してね

  • functions/?/_index.d.mcfunctionにまとめてそのディレクトリ以下のdeclareコメントを記載してね

    ただし特定のfunction内で完結する場合はそのfunctionのIMP-Docの下に@privateで記載してね

  • スコアを使うときは最初に必ず上書き操作(execute store, players set, operation =)をしてね。それをしないとき挙動を保証しないよ

  • スコアを使うときは最後に必ず使ったscore_holderをリセットしてね

1.2. 命名規則

  • 1tick内に削除される一時保存用のstorageの名前空間は_index.dのディレクトリ名を利用してね assetはその限りじゃないよ

  • object, tag, score_holderの命名にはChainedPascalCaseを使用してね (2文字以下の略称の場合UPPERCASEを使用してね)

    -> ChainedPascalCase

  • score_holderは先頭に$を付けてね

  • CustomNBT, teamの命名にはPascalCaseを使用してね

1.3. コメント規則

  • 簡潔でも良いから各所にコメントを記載してね

  • コメントは#の後に1スペースを空けて記載してね

  • コメントの表す処理部はスペース4のインデントをしてね

2. 細かい説明

2.1. IMP-Docの書き方

IMP-Docはfunctionの1行目に特定の記述をすることで使えるようになるよ

これを書くとfunction名をホバーしたときにそれが表示されてわかりやすくなるんだよね

書き方は大体下の通りだよ

#> %functionパス%
#
# %functionのやってることの説明%
#
# %アクセス修飾子%

詳しい説明はここ見てね

2.1.1. アクセス修飾子

アクセス修飾子を設定すると条件に一致しないファイルから呼び出そうとするとエラーが表示されるようになるよ

基本的な書き方は

  • @private

    そのfunction以外から呼び出すとエラーが表示されるよ

  • @within

    自由に制限を作れるよ

    基本構文は@within <ファイルの種類> <パス>だね

    例えば@within function example:testみたいな感じ こう書いた場合functionexample:test以外から呼び出すとエラーが表示されるよ

    あと、@withinはワイルドカードも使えるんだよ

    例えば@within * example:*/**みたいな感じ こう書いた場合どのファイルの種類でも構わなくて、名前空間がexampleでディレクトリが二層になっていればエラーが表示されないよ

    使えるワイルドカードは

    • ?

      一文字なんでも fo?だとfoo,foxとかは大丈夫

    • *

      ファイル名なんでも example:*だとexample名前空間直下にあるファイルは大丈夫

    • **

      そのファイル以下ならなんでも example:**だとexample名前空間をもつファイルならなんでも大丈夫

  • @internal

    そのDatapack内以外から呼び出すとエラーが表示されるよ

  • @public

    どこからでも呼び出せるよ

詳しい説明はここ見てね

2.2. declareの書き方

#> tempとかprivateとかそういう感じの適当な名前
# %アクセス修飾子%
    #declare <type> <value>

例:

#> temp
# @private
    #declare score_holder $test
    #declare tag TestTag

詳しい説明はここ見てね

2.3. ChainedPascalCase

基本的にはPascalCaseだよ

違う点として親を持たせたいときとかにメソッドチェーンのような書き方が許されるよ

例:

  • PascalCase

  • Chained.PascalCase

  • Year2020.December

  • Chained.PascalCase.MorePascalCase

Clone this wiki locally