私は最近、Javaでパブリック内部列挙型/クラスを使用してはならないと主張するコーディング標準に出くわしました。私がこの大会に出会ったのはこれが初めてであり、その理由について満足のいく説明を見つけることができませんでした。
パブリック内部クラスを避ける必要がある理由は理解していますが、パブリックネスト列挙型を使用しない理由は何ですか?または、なぜこれは従うべき悪い慣習なのですか?
私は最近、Javaでパブリック内部列挙型/クラスを使用してはならないと主張するコーディング標準に出くわしました。私がこの大会に出会ったのはこれが初めてであり、その理由について満足のいく説明を見つけることができませんでした。
パブリック内部クラスを避ける必要がある理由は理解していますが、パブリックネスト列挙型を使用しない理由は何ですか?または、なぜこれは従うべき悪い慣習なのですか?
免責事項: 以下は厳格なルールではありません。これらは私の意見と個人的な好みです。個人的には、コードが読みやすく、保守しやすいと感じています。
最初の質問。このアドバイスはどこで見つけましたか?彼らは何か根拠を提供しましたか?
私の経験では、通常、コードの可読性と保守性を高めるために、ネストされたプライベート列挙型を使用していました。これは、別のシステムとの統合を実行していて、特定の文字列または数値を送信する必要がある場合に特に役立ちます。列挙型を使用すると、読みやすく、保守しやすくなることがわかりました。この特定のケースでは、列挙型によって伝達される情報の範囲はクラスに限定されます(つまり、クラス外では意味がなく、他の誰もそれを必要としないはずです)。
パブリック内部列挙型が悪い習慣である理由を言う決定的な理由を考えることはできません。しかし、私が(通常)それらを使用しない理由は次のとおりです。
ThirdPartyResponseCodes.Success
目にはより簡単だと思います ThirdPartyIntegrationInterface.ThirdPartyResponseCodes.Success
。コンテキストを提供するために列挙型に適切な名前を付けて、スタンドアロンの列挙型にすることができない理由はありません。その理由は、それらの列挙型を、それを囲むクラスの名前で修飾する必要があるため、それらが宣言されているクラスの外で使用するのが困難になるためと考えられます。もちろん、すべてのパブリックインナークラスにも同じことが言えます。そして、私がそれに同意するかどうかはわかりません-確かに厳格なルールとしてではありません。
説明が含まれていない場合は、そのコーディング標準を作成した人に尋ねる必要があります。しかし、あなたのこの声明はやや紛らわしいです:
パブリック内部クラスを避ける必要がある理由は理解していますが、パブリックネスト列挙型を使用しない理由は何ですか?
なぜパブリックインナークラスは避けるべきだと思いますか?そして、なぜその理由は列挙型に当てはまらないのでしょうか?