アカウント名:
パスワード:
> C++ でキャスト地獄を味わったことがある経験から
それって型の有無によるメリットデメリット以前に、適切なクラス設計が出来ていないのでは…
ちゃんとクラス設計出来ているのにキャスト『地獄』とまで言うような状況になることってあるのだろうか。
「それはお前の使い方が悪いんだ、適切にやれば問題はおきない」と言う人が出るのも、この手の宗教論争の定番ですね。
そして事実そうであっても、初心者や老害(やマネージャーや経営者や顧客)には全く理解されないことも定番なのです。
これは一応フィクションだけど、http://el.jibun.atmarkit.co.jp/pressenter/2010/11/3-bc3f.html [atmarkit.co.jp]
> 「だからね」三浦マネージャは子供に言い聞かせるようにゆっくり言った。>「どうしてわざわざ違う型で宣言しなくちゃいけないの? おかしいでしょ、普通?>整数使うのにfloatとか使う? 使わないでしょ?」
> ――いやいやいや、それは違うでしょう。型の違いと、インターフェイスと具象クラスの違いをごっちゃにしてます。
> 「ArrayListを使うんなら、素直にArrayListで宣言すればいいじゃない。>どうしてわざわざこういう分かりにくいことをするかなあ。カッコつけか?」
みたいな感じで。
実際そうなんじゃないですか?後任のポインタの理解が足りてないんだと思う。p+1した時、pの型によって進むバイト数が違うとか、signed,unsigned間の変換とか・・・・いろいろあるノウハウが溜まってないから地獄になる。
>p+1した時、pの型によって進むバイト数が違うとか、signed,unsigned間の変換とか・・・・いろいろあるノウハウ
元の人が言ってる「キャスト地獄」ってそういう話なのかなあ。
C/C++に限ってはそういうのが多いのでは?私は思いつかないのですが他にありますか? #タレコミが抽象的すぎる。具体的な例をあげるべきだった
> p+1した時、pの型によって進むバイト数が違うとか、signed,unsigned間の変換とか・・・・
CやC++が動的型だったら目も当てられないところでしたねやはり静的型のほうが優れている
> p+1した時、pの型によって進むバイト数が違うとか、signed,unsigned間の変換とか・・・・CやC++が動的型だったら目も当てられないところでしたねやはり静的型のほうが優れている
この場合動的型のポインタ型ってのはそのポインタオブジェクトが+1する先を計算するメソッドを提供しているべきじゃないの?
だからポインタを直接演算するような「使い方が悪い」んじゃないですか? という無間地獄
いや、ポインタを演算するときは全部*charにキャストすればコンパイラも黙らせることができて全て解決
勘弁。せめてunsigned char*にして
> 「それはお前の使い方が悪いんだ、適切にやれば問題はおきない」
たぶん、元コメはそういう一般論を言いたいんじゃないと思いますよ。
直接の型の話ではないですが、例えば単位系なんかだと「おまえがそんなニッチな単位系を使うのは自由だが、もっと一般的な単位系に変換するメソッドを『おまえ』が用意しとかんかいー! 誰も知らないようなニッチな単位系を『俺』がいちいち調べなきゃならないじゃないかー!」と叫びたくなる状況がたまにあるんですよ。
要するに、元コメが言う「クラス設計が出来てない」というのは、上に書いた「基本クラスの作り手が単位系(型)変換用のメソッドを省いちゃった」ような具体的な状況じゃないかと…
変換用のメソッド云々という話なのかはともかく、これは「宗教論争にありがちな論のテンプレ」という話だから、そりゃ個別には具体的な論として出てくるでしょ。
> 「宗教論争にありがちな論のテンプレ」
元コメは、そのテンプレにあたらないんじゃね。
あたるだろ。無茶言うな。
「適切にやれるという前提がおかしい。そのように設計されるべきではない。」
とかね。どちらも正しくて、「程度」の問題なだけに結論が出ない。そもそも何が最適かなんて分からないし、基準も変わっていくだろうから神でも決められないだろう。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
クラックを法規制強化で止められると思ってる奴は頭がおかしい -- あるアレゲ人
キャスト『地獄』? (スコア:5, すばらしい洞察)
> C++ でキャスト地獄を味わったことがある経験から
それって型の有無によるメリットデメリット以前に、適切なクラス設計が出来ていないのでは…
ちゃんとクラス設計出来ているのにキャスト『地獄』とまで言うような状況になることってあるのだろうか。
Re:キャスト『地獄』? (スコア:5, すばらしい洞察)
「それはお前の使い方が悪いんだ、適切にやれば問題はおきない」と
言う人が出るのも、この手の宗教論争の定番ですね。
Re:キャスト『地獄』? (スコア:1)
そして事実そうであっても、初心者や老害(やマネージャーや経営者や顧客)には
全く理解されないことも定番なのです。
これは一応フィクションだけど、
http://el.jibun.atmarkit.co.jp/pressenter/2010/11/3-bc3f.html [atmarkit.co.jp]
> 「だからね」三浦マネージャは子供に言い聞かせるようにゆっくり言った。
>「どうしてわざわざ違う型で宣言しなくちゃいけないの? おかしいでしょ、普通?
>整数使うのにfloatとか使う? 使わないでしょ?」
> ――いやいやいや、それは違うでしょう。型の違いと、インターフェイスと具象クラスの違いをごっちゃにしてます。
> 「ArrayListを使うんなら、素直にArrayListで宣言すればいいじゃない。
>どうしてわざわざこういう分かりにくいことをするかなあ。カッコつけか?」
みたいな感じで。
Re: (スコア:0)
実際そうなんじゃないですか?後任のポインタの理解が足りてないんだと思う。p+1した時、pの型によって進むバイト数が違うとか、signed,unsigned間の変換とか・・・・いろいろあるノウハウが溜まってないから地獄になる。
Re: (スコア:0)
>p+1した時、pの型によって進むバイト数が違うとか、signed,unsigned間の変換とか・・・・いろいろあるノウハウ
元の人が言ってる「キャスト地獄」ってそういう話なのかなあ。
Re: (スコア:0)
C/C++に限ってはそういうのが多いのでは?私は思いつかないのですが他にありますか? #タレコミが抽象的すぎる。具体的な例をあげるべきだった
Re: (スコア:0)
> p+1した時、pの型によって進むバイト数が違うとか、signed,unsigned間の変換とか・・・・
CやC++が動的型だったら目も当てられないところでしたね
やはり静的型のほうが優れている
Re: (スコア:0)
この場合動的型のポインタ型ってのはそのポインタオブジェクトが+1する先を計算するメソッドを提供しているべきじゃないの?
Re: (スコア:0)
だからポインタを直接演算するような「使い方が悪い」んじゃないですか? という無間地獄
Re: (スコア:0)
いや、ポインタを演算するときは全部*charにキャストすればコンパイラも黙らせることができて全て解決
Re: (スコア:0)
勘弁。せめてunsigned char*にして
Re: (スコア:0)
> 「それはお前の使い方が悪いんだ、適切にやれば問題はおきない」
たぶん、元コメはそういう一般論を言いたいんじゃないと思いますよ。
直接の型の話ではないですが、例えば単位系なんかだと
「おまえがそんなニッチな単位系を使うのは自由だが、もっと一般的な
単位系に変換するメソッドを『おまえ』が用意しとかんかいー!
誰も知らないようなニッチな単位系を『俺』がいちいち調べなきゃなら
ないじゃないかー!」と叫びたくなる状況がたまにあるんですよ。
要するに、元コメが言う「クラス設計が出来てない」というのは、
上に書いた「基本クラスの作り手が単位系(型)変換用のメソッドを省いちゃった」
ような具体的な状況じゃないかと…
Re: (スコア:0)
変換用のメソッド云々という話なのかはともかく、
これは「宗教論争にありがちな論のテンプレ」という話だから、
そりゃ個別には具体的な論として出てくるでしょ。
Re: (スコア:0)
> 「宗教論争にありがちな論のテンプレ」
元コメは、そのテンプレにあたらないんじゃね。
Re: (スコア:0)
あたるだろ。無茶言うな。
Re: (スコア:0)
「適切にやれるという前提がおかしい。そのように設計されるべきではない。」
とかね。
どちらも正しくて、「程度」の問題なだけに結論が出ない。
そもそも何が最適かなんて分からないし、基準も変わっていくだろうから
神でも決められないだろう。