エクスポートされた関数からエクスポートされていない型を返すのは、悪いスタイルと見なされますか?
私がそれを使用したとき、ほとんどの場合、問題が発生するだけだとわかりました。
より良い質問は、「エクスポートされた関数からエクスポートされていない型を返すのが適切なのはいつですか」です。
ベストアンサー1
エクスポートされた関数からエクスポートされていない変数を返すことには何も問題はないと思います。アクセサーとは、定義上、そういうものです。
そうは言っても、エクスポートされていない変数にアクセスするたびに実行する必要があるロジックがある場合にのみ、そうします。
編集: 明確にされた質問を理解できたと思います。
エクスポートされていない がありtype user struct{}
、それを で返す場合NewUser()
、それはユースケースに適合しますか? そうであれば、それはファクトリー設計パターンであり、サードパーティの開発者が直接user
型オブジェクトを作成したくない場合に Go で役立ちます。そのようにすると、「コンストラクター」または「ファクトリー」が新しいインスタンスを取得する唯一の場所になります。
では、それは「悪いスタイル」なのでしょうか? それは、克服する必要がある課題によって異なると思います。