C言語なら俺に聞け 146
レス数が1000を超えています。これ以上書き込みはできません。
わざわざ「C言語なら俺に聞け」スレッドで質問してるからには
C++ではないCに限定してるんじゃないか、と判断するのも合理的ではあるわね。
CとC++の両方を扱う初心者向けスレッドも別に存在するし。
もちろん >>926 の意図は投稿者自身のものだけど。 C++の糞コードと言えばこれ
#define private public >>961
それってC側からC++と分かれたってこと?(俺は経緯はよく知らない)
てっきりC++が独自路線突き進んだと思っていたが。 もう別の言語だよ
もちろん共通部分だけでも組めるけど そういえば
コメントを // から /* */ にわざわざ変える人がいる
今まで何人か見た
そんな暇があったらさっさとコードを組め >>965
それ、単純に通るか?
なおVC++/CLIではそこで手こずったことがある。
当初ほぼprivateで作っていたクラスを継承する必要が出てきて、
protectedとpublic等に変更したらコンパイラにさんざん文句言われて手こずった。
あれでC++の糞さを再認識した。本質的でないところで凄く引っかかる。
(VC++/CLIは意図的に文法を厳しくしているからというのもあるが) 単純に通るか通らないかは環境や作りに依存する
わざわざ糞コードを披露するところが律儀だね あー、俺のコードが糞だったからってか?
しかし、当初継承無しで単独で使う予定だったクラスに対し、仕様変更で機能追加されたんだから致し方ないと思うが。
ただ、個人的にはpublic/private自体が不要、とは思っている。
JavaScriptはpublicしかなくて、当初「これでいいのか?」と思ったが、やってみたら全く問題ない。
外から使うときに中身なんて気にしたくないから、そもそもprivateなんて触りに行かない。
逆に、外から触りたい物をprivateにすることも間違っているし。
あれはいちいち書かなくとも自然と分かれ、それで全く問題ない。
(文法的にチェックするだけの意味しかない。まあそれを言えば型システム自体もそれに近いが) じゃあclassを使わないで
全てstructで書けば良いよ
public protected privateは一切不要だから VSCodeのVimプラグイン使いづらいんだよな
SublimeTextのVimプラグインみたいに両方のエディタのいいとこ取りみたいなキーバインディングだったらいいのに リロードしてなかったら既にエディタの話題が終わってて浦島みたいな気分だ
ハゲが >>972
確かに俺はそれでいいが、
それだと「出来る限りprivateにすべき」教の信者から迫害を受けるのがウザイ。
これはC++よりもJavaの方が酷いように思うが。
この辺の文法的宗教戦争がCにまるでないのはメリットかも、とは思うよ。
private/publicに関してはデメリットの方が多い気がする。
なお、型もだ。動的型ならC++のテンプレートの大半は書かなくて済む。
無駄に手間を増やしている。動的型の方が書くのは快適だ。
あとはtypoを完全に検出れば、といったところか。
とはいえ、速度を追求するC/C++の世界には馴染まないが。 まあ実装とインターフェースを区別する心掛けが大切なのであって、privateにして満足したらあかんとは思うよ。 >>978
というよりJavaは「粗結合教」「イテレータ教」かな?
見せなくて済むなら見せるなでインタフェースを無理に細くしているのと、
抽象化する必要がない場合もとりあえずイテレータにしてるだろ。
C++もナマポ撲滅の為に無駄にイテレータを導入しているから、この点は似ているが。
Cはここら辺の宗教戦争がない代わりに、どうしても抽象レベルが上がりにくく、
低レベルコードをひたすら書く羽目になるのが欠点か。 どの言語でも、基本は疎結合。
スパゲッティ・泥団子などの密結合は、皆大嫌い!
こっちをいじれば、あっちが変わり、
あっちをいじれば、こっちが変わりw クラスはないがモジュール分割くらいは普通にするだろう ここの人たちはリーナスさんのC++批判はどう思ってる? 俺もC++には気に入らんところがいくつかあって
リーナスの意見とは一致するところが多い
まず筆頭のクソが例外
次いでnewのコレジャナイ感
classとstructのしょーもなすぎる違い >>984
俺はかなり賛同。言いたいことは分かる。
ただ、Cはクラスとラムダを導入すべき、それからリテラルをもっと充実させて、複合代入も欲しい。
これらがあれば、ずいぶん楽に書けるようになるはず。
>>983
イテレータの必然性なんてほぼ無いだろ。
様々なコンテナに対応する必要があれば、列挙を抽象化する必要があるが、まずこれがほぼ無い。
次に、インタフェースを揃えたいだけなら、酷い話「forで回せる」でも揃ってしまう。
そしてクラス内のコンテナを外部から直接イテレートする必要もほぼ無い。(publicにイテレータを見せる必要がない)
イテレータが必要なのって、汎用コンテナを作るときくらいだろ。
イテレータは抽象化の分かりやすい例だから取り上げられているだけで、実用性は皆無だと思うぜ。
それよりforEachとかの方が100倍使える。
Matz「俺はxxx[i]なんていちいち書きたくないんだよ」の方が分かる。
抽象化もコストがかかるから、必要ない抽象化はやるべきではない。
同様に、疎結合化もコストがかかるから、必要ない疎結合化はやるべきではない。
Cの場合は一応、ファイル内は密結合、ファイル間は疎結合というコンセプトだろ。
(実際それが適用されているかはともかく)
まあこれで合ってると思うぜ。
同様にクラス言語もクラス内は密結合、クラス間は疎結合のはずだが、
Javaの場合はクラス内も疎結合にしようとして細切れにするのが基本だろ。
そういう文化もありだとは思うが。
(FizBuzzのJava実装でイテレータ導入して悪ノリしてたのがあったろ。あれ)
疎結合の方がいいのは事実なのだけど、結果的にコード量が増える。
それで読む手間が増えるようなら意味無いだろ。
自分が読んで一番楽なところでバランスすればいいのだけど、それは俺はC程度かと思う。
ただこれは俺がC出身だからであって、Java出身ならあの細切れ状態が合うのかもしれないが。
(Javaは、テンプレートがない分、多態の選択肢が狭くて、結果的にあの文化なのだとは思う) >>992
>(FizBuzzのJava実装でイテレータ導入して悪ノリしてたのがあったろ。あれ)
これ、見てみたいです… >>992
ちょっと何言ってるかわからん
983はナマポと何の関係があるのかと聞いているんだが?? このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 109日 3時間 31分 22秒 レス数が1000を超えています。これ以上書き込みはできません。