/note/tech

Javaの 1. 1ファイルにpublic classは一つ 2. public classのクラス名がファイル名...

Javaの

1. 1ファイルにpublic classは一つ

2. public classのクラス名がファイル名

という制約、英断やけどめちゃくちゃすばらしい秩序だと思う。

@kazuhito_m

「自分の代わりに書いてくれてた続き」を追加w

3. パッケージ名とディレクトリ名が対応可能

4. パッケージ名とFQDNが対応可能

というのも加えてくだされ

#フォロー外から失礼いたしました

@shigerufujita

@kazuhito_m

これは本当にそう思う。JavaやPHPをやっていた人がPythonやGoでまず戸惑うのはここじゃないだろうか。

ただ、PythonやGoにおいてはクラスや構造体は主役ではないという事情も大きい。

JavaやPHPは言語仕様やフレームワークの制約でまずクラスを定義する必要がある(ことが多い)が、PythonやGoは関数が主役となるスタイル。

なので、Javaのようにクラスを接頭辞(あるいは名前空間)と見なすことができない。

そこで、接頭辞(あるいは名前空間)の役割をファイルに担わせている。

前提とするスタイルの違いが言語設計に現れているということだな。