前回も少し触れましたが、基本的に僕のプログラミングの原点がJSなので
多言語を習得する上で、JSを比較対象にして、当てはめて考えるのが理解しやすいかなと。
なので、自分なりに学習した範囲で少しずつまとめてみます。
(Unityでの使用方法が主なので、もしかしたらC#単体での使い方とは少し異なるかもしれません)
export
JS:export
C#:public
JSでいうところのESModuleのexport, importに相当する機能(importについては後述)
厳密にはexportの明示的に「外部に公開する」という振る舞いをさせる機能は無いようですが、class作成時にpublic classとして作成することで、「外部に公開している」クラスとして扱うことが出来る。
//JS
export class hoge {...}
//C#
public class Hoge
{...}
これについては実際の振る舞いは厳密には少し違うけど、書き方には殆ど差はないですかね。
(C#の{}の前で改行する記述慣れない・・・)
import
JS:import
C#:using
上記に付随する記述として、呼び出し先での記述方法
コチラはimportと似た書き方が出来るので、比較的とっつきやすい。
//JS
import hoge from '@/hogeComponent';
//C#
using Hoge;
JSに比べると読み込み元のディレクトリを辿る記述がないのでかなりコンパクト。
addEventListener
JS:addEventListener
C#:GameObjectのComponentにScriptを追加(アタッチ)する
これはどちらかというと概念的な捉え方ですが、JSのようにスクリプト上でイベントを登録するといった使い方をそもそもしないようです。
感覚的にはスクリプトとイベントリスナー登録が物理的に分離しているのでこれはこれでわかりやすいかも。
C#は基本的に1つ1つの挙動ごとにスクリプトファイルを分ける、特にUnityではコンポーネント単位で書き分ける(コンポーネント志向、COP)ので、その挙動をそれぞれのオブジェクトにアタッチ(登録)して実行する。
コンポーネント分けについては、Reactのコンポーネント管理と似ている。同じぐらい細分化して、コンポーネント毎に処理を分けて作成する。
ファイル数は多くなってしまうが、1つ1つ分離しているので、特定の処理を見つけたい時はそのファイルのみを参照すれば基本的に解決するので、ファイル管理さえしっかりしていればわかりやすい。