Constructorに名前を付けたい

C++
2
kinaba @kinaba

コンストラクタに名前をつけられない言語がすべて悪い

2010-04-28 12:21:14
kinaba @kinaba

class vector<T> { constructor new(){...} constructor filled_by(int n, T t){...} co略 from_range(Range r){} c略 from_ite(Ite b, Ite e) } とか書きたい

2010-04-28 12:26:55
ほっと @hotwatermorning

っObjective-C RT @kinaba: class vector<T> { constructor new(){...} constructor filled_by(int n, T t){...} co略 from_range(Range r){} c略 f...

2010-04-28 12:28:58
kinaba @kinaba

どこが起源かわからないけどC++/Java/C#/Dのようにコンストラクタが無名なのは非常によくない慣習だと思うんだよなー。マジメにコード書くときはコンストラクタは全てprivateにして全部名前付きメソッドからコンストラクタ呼んでるんだけど、これは言語レベルでなんとかしたい

2010-04-28 12:33:22
turugina @turugina

@kinaba もしかして: FactoryMethod *P/TkTw%仕事*

2010-04-28 12:39:09
kinaba @kinaba

@turugina 裏でサブクラスのインスタンス作ったりまではできなくて良いのでFactoryMethodというと広すぎる気かもですが、基本はそうです。で、これは単なるidiomではなく言語レベルで提供されるべき機能だと思う。

2010-04-28 12:45:37
くっくっkura 🇯🇵🦀 @PG_kura

インスタンスの初期化方法を複数提供するのはいいんだけど、「利用者にオーバーロードの整合取らせる」ことでしか初期化方法を選択できないようになってるのはおかしいですよね。RT @kinaba どこが起源かわからないけどC++/Java/C#/Dのようにコンストラクタが無名なのは非常に

2010-04-28 12:51:21
kinaba @kinaba

@heppoko_maid それを言語レベルでサポートすべきだろうというお話です。非自明なコンストラクタはすべて名前を持っているべきだと僕は思うので、static factory method を書くよりも無名のコンストラクタだけを書く方が楽になっちゃってる言語設計は間違っている

2010-04-28 12:56:44
kinaba @kinaba

@Rayerd http://twitter.com/PG_kura/status/12985863962 @PG_kura さんのポストが僕の気持ちをよくあらわしてくださってました

2010-04-28 12:58:39
若年寄(もう若くない) @kikairoya

. @kinaba先生がやりたいのはきっとこういうことかな?

2010-04-28 13:08:03
kinaba @kinaba

@hotwatermorning おー。簡易コンストラクタ http://bit.ly/bdnxvN こんな感じですか。alloc と init 切り離して好き勝手やるのが一般的になってるんですね。ふむふむ

2010-04-28 13:20:53
若年寄(もう若くない) @kikairoya

allocとinitを別にするのは確かDelphiもそうだよなー。

2010-04-28 13:22:11
でちまるさん(実際かわいい) @decimalbloat

allocとinitを切り離すといえば、C++はoperator newとコンストラクタを切り離していると言える

2010-04-28 13:23:07