【Console Application】外部関数 28【学習記】

いわゆる include よー🤤

Q.
それで、 import できたの?
A.
それが、 import できないの😞

→命名規則は Unresolved になる理由とは特に関係ない

#IntelliJ #Kotlin #import
#package
#学習記


命名規則を探れ

それじゃ、 package の命名規則の調査からやろうかな🤤

前回までに調べてる時にチラチラと見る事が実は有ったんだけど Kotlin の package 命名規則は基本 Java 準拠の筈なのよね🤔
でも Java を学習していた時は使えた命名方法が Kotlin ではできない、みたいのを見たような気がするのよね🙄
その辺りを抑えたら実は簡単に解決したりしないかな🤤(無理

Kotlin スタイルガイド
https://developer.android.com/kotlin/style-guide?hl=ja
パッケージ名では、連続した単語がアンダースコアなしで単純に連結され、すべて小文字となります。
// Okay
package com.example.deepspace
// WRONG!
package com.example.deepSpace
// WRONG!
package com.example.deep_space

どこぞの記事だと2つめの記述を認める様な物が見受けられるけど Google 様がこう言っている🤔

Chapter 6. Names
https://docs.oracle.com/javase/specs/jls/se15/html/jls-6.html
--丸括弧内はGoogle翻訳
The first component of a unique package name is always written in all-lowercase ASCII letters and should be one of the top level domain names, such as com, edu, gov, mil, net, or org, or one of the English two-letter codes identifying countries as specified in ISO Standard 3166.
(一意のパッケージ名の最初のコンポーネントは、常にすべて小文字のASCII文字で記述され、com、edu、gov、mil、net、orgなどのトップレベルのドメイン名の1つ、または英語の2つのドメイン名の1つである必要があります。 ISO標準3166で指定されている国を識別する文字コード。 )

In some cases, the Internet domain name may not be a valid package name. Here are some suggested conventions for dealing with these situations:
(場合によっては、インターネットドメイン名が有効なパッケージ名ではないことがあります。 これらの状況に対処するためのいくつかの推奨される規則を次に示します。)

If the domain name contains a hyphen, or any other special character not allowed in an identifier (§3.8), convert it into an underscore.
(ドメイン名にハイフン、または識別子で許可されていないその他の特殊文字(§3.8)が含まれている場合は、それをアンダースコアに変換します。)

If any of the resulting package name components are keywords (§3.9), append an underscore to them.
(結果のパッケージ名コンポーネントのいずれかがキーワード(§3.9)である場合は、それらにアンダースコアを追加します。)

If any of the resulting package name components start with a digit, or any other character that is not allowed as an initial character of an identifier, have an underscore prefixed to the component.
(結果のパッケージ名コンポーネントのいずれかが数字で始まる場合、または識別子の最初の文字として許可されていないその他の文字の場合は、コンポーネントの前にアンダースコアを付けます。)

The name of a module should correspond to the name of its principal exported package. If a module does not have such a package, or if for legacy reasons it must have a name that does not correspond to one of its exported packages, then its name should still start with the reversed form of an Internet domain with which its author is associated.
(モジュールの名前は、その主要なエクスポートされたパッケージの名前に対応している必要があります。モジュールにそのようなパッケージがない場合、またはレガシーの理由で、エクスポートされたパッケージの1つに対応しない名前を付ける必要がある場合でも、その名前は、作成者が使用しているインターネットドメインの逆の形式で始まる必要があります。)

oracle 様による Java の package 名は…簡単に言うと
・全部小文字ね
・ドメイン名に変な文字(含むハイフン)有るなら全部アンダーバーにしてね
・パッケージ名がキーワード予約語や数字始まりならアンダーバー付けて回避してね

………🤪🤪🤪❓❓❓❓❓❓❓

Java ではアンダーバーはやむを得ないが Kotlin では使ったらだめよって言ってるのかな😞

それなら Android Studio の基盤 IntelliJ の jetbrains さんは何て言ってるんだろ🤔

出てこない🙄

コーディング規約
https://dogwood008.github.io/kotlin-web-site-ja/docs/reference/coding-conventions.html
よく分からない場合はJava のコード規約に従ってください
キャメルケースの使用(そして命名でのアンダースコアの使用を避ける)

色々辿ると "kotlinlang.org" のドキュメント日本語版がどうやらこの "dogwood008.github.io" の資料っぽい🤔
それにしても「良くわからない場合は」って突き放しすぎでは🤪


とりあえず対応してみる

Google 様と oracle 様の言う感じからすると、とりあえず小文字にしてみるべきかなと感じたけど google 様曰くアンダーバーも排除しないとならない🙄
つまり、全部小文字で変な記号も排除してみようねって事かな?🤔
とりあえず、やってみようね🤤

画像1

画像2

🙄🙄🙄デスヨネー

欠片も関係なし😞

………

ふむ、なら "com.example" の配下にしてみる?🤪

画像3

画像4

… com は良いけど example は知らんって言われた🙄ソンナ

画像5

package の指定を加えるとほぼ元の状態に…🙄
じゃぁこの状態でアンダーバー排除?🤔

画像6

画像7

…まぁ判ってた…😞

結  論
命名は関係ない


次回は

引き続き無限回廊を彷徨う事に🙄
手がかりを失って何を調査すれば解決できるのやら…😞

この記事が気に入ったらサポートをしてみませんか?