kmizu:型定義といった場合二つの意味が考えられます。 (2023/09/21補足:型定義といった場合、多くの場合は新しく型を定義する機能のことを指すかと思いますが、質問者様の書き方だと、変数の型宣言の構文なども含む話の可能性があると感じたのでそれぞれの解釈を採用した場合の回答を書いています。念のため) 1. 変数の型指定の方法 2. クラスや構造体、型の別名など、型そのものを定義する方法 質問者様がどちらの意味で質問されたのかがわからないので、両方について回答します。まず、変数の型指定の方法ですが、私が知っている限り、大まかには ① 型名 変数名 (C, C++, Java, C# など) ② 変数名: 型名 (Scala, Kotlin, Eiffel, Pascal, ML, OCamlなど) ③ 変数名 (as|AS) 型名 (Visual Basicなど) ④ 変数名 型名 (Go) この四つの方式に絞られます(マイナーな言語でそれ以外の方式もあるでしょうけど、ひとまず除外します。それと、この前にvalやvarをつけるとかつけないの話もありますが、これもおいておきます)。この中だと個人的には②か③が好みです。①の前置の型宣言は構文解析がしづらいですし、読むときも型名が長くなると変数名にたどりつくまでに微妙に目が疲れるという欠点があります。②か③のどっちが好みかというとgrepのしやすさなど考えると③かなあと思うものの、趣味で使うのがScalaなせいもあって②に慣れているのでどっちでもいいかなというのが正直なところです。④はGo以外が採用しているのを知りませんが、空白区切りはどうにも見づらくて微妙に好みじゃないなあという感じです。 次に型自体を定義する方法について考えてみると、これは言語によって多種多様です。現存するメジャーなプログラミング言語の多くはクラスを定義できますが、そのクラスの定義方法一つとってもかなり多彩ですし。強いていうと、C++方式の、アクセス制御をセクションに分けて記述する方式: class Foo { private: // なくてもいい void foo(); protected: void bar(); public: void baz(); }; は、publicなメンバーやprivateなメンバーがコーディング規約を設けなくてもまとまるので好みです。拙作のOnion言語でもこの方式を採用しています。 この方式、他の言語であんまり採用されていないんですが、結構便利なのになんでなんでしょうね……。(Read more)