今までみた絶望的なソースコード [転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2015/04/17(金) 23:00:30.63ID:55USvuES
今井氏:ソースコード公開は、社長のティム(*2)の意向です。彼はバリバリのプログラマーで、初期の「Unreal Engine 1」を
1人で書いた人ですが、若い時に雑誌に載っていたコードを書き写して勉強したそうです。それで今の若い人にも、プロのソー
コードとはこういうものだというのを見せたいという願いがあって、ソースコードを公開しています。本当に今のゲーム業界の
事情を憂いてる1人だと思います。(*2)Epic Gamesの創業者兼CEOであるTim Sweeney氏

出村氏:読みやすいコードですよ。「C++」というのは、黒魔術(高度な計算)が多くなりがちな言語ですが、
そういうこともなく、すっきりしていて目的の機能も探しやすい。解読しやすいコードなので、確かにお手本になると思います。

僕は初代のゲームボーイからプレイステーション 2の頃くらいまでゲームプログラマーだったのですが、ゲームプログラミングでは
必ず数学が出てきます。行列とか三角関数とか。もちろん今でもまったく不要になったわけではありませんが、そういう知識の
重要性は薄れてきていると思います。「Unreal Engine」では特にそうです。
http://game.watch.impress.co.jp/docs/interview/20150417_698349.html

初級者から中級者へ昇格する時期は、ほぼどのようなソースコードでも読める程度にプログラミング言語に精通し、
また偉いプログラマーの提唱したデザインパターンも一通り理解したくらいの時期である。

すると、プログラミング言語の持つあらゆる機能と、偉いプログラマーの提唱するあらゆる技術を使わねばならない
という思い込みが発生する。そしてHello Worldにまで崇高なオブジェクト指向や壮大なデザインパターンを
適用しようとしだすのである。

その結果、
* 大量のクラス
* 迷路のような変数渡し
* 底なしに深いネスト
などといった凄いものが生まれる。また、条件分岐に三項演算子を乱用するなどの症状も多く見受けられる。
最終的には第三者にとって読みにくい保守性の悪いスパゲッティコードが生成されることになる。
http://monobook.org/wiki/%E4%B8%AD%E7%B4%9A%E8%80%85%E7%97%85
2015/10/24(土) 09:12:17.67ID:TC4yVlx1
手段と目的をはき違える典型
2015/10/24(土) 09:20:03.81ID:VUwmRE0S
>>354
良く見るな。
括弧を章する俺かっけーってな奴。
2015/10/24(土) 09:22:43.39ID:t+kkgTrx
テストファーストならそれもありだろ。ブラックボックスでいいんだから。
2015/10/24(土) 10:30:44.28ID:ZlXT9FOV
ネストが増えるのは問題だけど
returnパスが増えるのは問題じゃないのかな
2015/10/24(土) 11:49:30.75ID:obIKqu8m
returnパスが増えるのが問題だと思うのなら
returnの代わりに関数の最後にgotoしていると考えればいい。

if (...) return
hoge
hoge
return



if (...) goto last
hoge
hoge
last:
return

goto使うのが駄目ならbreakにすればいい。

do {
 if (...) break
 hoge
 hoge
} while(0)
return

見ての通りreturnは一つである。
これで解決する程度のことを問題視することに何の意味があるのか?
374デフォルトの名無しさん
垢版 |
2015/10/24(土) 11:55:22.07ID:geIuzf9u
>>364
なんで意味ないことするの?
同じもんを外に抜き出してるだけじゃん。

そもそも入出力のパターンはテストで確認すりゃいいんだから、コードをパターンと一致させるのは無駄としか言いようがない
2015/10/24(土) 20:55:59.55ID:Kwmejtcx
>>373
それで解決するなら最初からそう書いてればいいんじゃないの
2015/10/24(土) 21:00:18.64ID:ab4ZAHgL
>>375
いや、解らない?

returnを一つにするというのはこれらと同じように、
無意味なことだって言ってるんだよ。
2015/10/25(日) 07:35:45.91ID:Ypes6KAb
return複数あったらレビュー通らないじゃん
2015/10/25(日) 07:48:44.18ID:5rFsh/xs
コーディング規約って、一種類しか無いとでも?

ゆとりって面倒臭いな。
2015/10/25(日) 10:47:02.39ID:ffqR9+22
コーディング規約の為のコードじゃなくて、なんのためのコーディング規約かを考えろよ
そんなだからクソコード量産するんだよ
2015/10/25(日) 11:28:29.91ID:4coy8BX6
性能が必要ないカテゴリでは性能を低下させるコードでも許容されるだけ
性能が必要なカテゴリではレビューでもreturnパスどうのより、そのコードが
速いかどうかだけが吟味される。
2015/10/25(日) 11:55:36.82ID:ZLo4bLRN
基本は可読性高いコードが評価高い
それでパフォーマンス悪くてもボトルネック部分の速度を改善すればいい
しかし速度重視の難解コードはクソソースと呼ばれ後ろ指さされる
速度はアーキテクチャで解決していくのがベストだわな
2015/10/25(日) 12:38:39.93ID:4coy8BX6
だから、それを待てるカテゴリは、元々性能が問題になるようなカテゴリじゃ
なかったというだけ、「次がある(キリッ」「後がある(キリッ」なんて言ってられる
生温いとこじゃないものも沢山ある。
2015/10/25(日) 12:56:40.32ID:cc/DQ18H
>>377
こっちには、return複数あったらだめなんて言う
意味のないレビューをする人はいないんでねw
2015/10/25(日) 12:59:23.67ID:cc/DQ18H
>>381
> しかし速度重視の難解コードはクソソースと呼ばれ後ろ指さされる

いつも思うんだが、速度重視したらなんで難解なコードになるのかわからん。

速度が速いコードっていうのは無駄がないコードなわけで、
普通は可読性が高いんだよ。


速度を速くするアルゴリズムがある場合で、そのアルゴリズムが
複雑な場合に限って、速度を重視したら難解になるんだが。
2015/10/25(日) 13:27:45.84ID:OGZ3vopz
> しかし速度重視の難解コードはクソソースと呼ばれ後ろ指さされる

非プログラマか初心者が抱きがちな想像やな

>>384
それな
2015/10/25(日) 13:36:24.73ID:dX8FdDRX
速度自体が無駄w
なんで初心者って無駄に速度にこだわるのw
2015/10/25(日) 13:58:48.56ID:EgatYw+c
皆、自分の意見こそが正しく正義であると信じ、
他者を必要以上に攻撃する傾向がみられる
なるほどこれが宗教ってやつか
世界から戦争が無くならない訳だ
2015/10/25(日) 14:06:03.46ID:ZLo4bLRN
>>384
例えば時間のかかるデータ取得が100個あるとする
速度重視の場合早い時点でスレッド作って先行処理しておく
実際値使う箇所では中でスレッド待ちしていてなんでわけわからないことやってるんだと言われる
データなんてGet回すだけだろと

アルゴリズム難解といえば自前のHashMapは最初わからんかった
文字列足しこんでへんなビット演算やって
コメントもなかったからあれはなかなか理解されない
2015/10/25(日) 14:19:23.12ID:Ypes6KAb
>>388
スレッド使えるなんて羨ましい
こっちは標準Cライブラリどころかcrtすら使わせて貰えないから
RAMをクリアしてmain関数を自分で起こすところから書かなきゃいけない絶望的な状況
2015/10/25(日) 14:28:46.60ID:ZLo4bLRN
>>389
組み込み系?
クラスも使えずレジスタがどうだとかリソース最小限に留めるとか無理だわ
基本は作りやすさ重視で必要に応じてチューニングが1番仕事しやすい
2015/10/25(日) 14:44:38.49ID:cc/DQ18H
>>388
だからそれ、アルゴリズム変わってるじゃん。
馬鹿なの?
2015/10/25(日) 14:46:27.63ID:GUBs2NMK
クソソース書いといてその言い訳に速度重視とかザコ過ぎない?
お前が速度なんて語るの百年早いのはそのクソソースに丸出しなわけで
よくあんなクソソース書いててそんな態度取れるなっていう不思議な子知ってる
2015/10/25(日) 14:50:33.48ID:ffqR9+22
>>386
おまえは一生ソートに可読性の高いバブルソートでも使ってろよ
2015/10/25(日) 14:51:52.18ID:ZLo4bLRN
>>391
アルゴリズム同一でと言った覚えないんだが?
むしろアルゴリズム同一で速度が飛躍的に上げれるならマジで教えて欲しいが
395デフォルトの名無しさん
垢版 |
2015/10/25(日) 14:52:32.88ID:Kc4QEJg+
16進数やビット演算とか使ってるコードは見にくいからクソソースでいいですか?
2015/10/25(日) 14:57:39.09ID:k5OqwX9E
>>395
マクロ被せれば見やすくなる
397デフォルトの名無しさん
垢版 |
2015/10/25(日) 16:48:51.96ID:h5QU0gDZ
マスクをtypedefしとけば良いんじゃないの。
2015/10/25(日) 17:17:54.69ID:Ypes6KAb
>>395
何進数だろうが関数内にマジックナンバーは入れちゃダメだろうね
定数かマクロにして実行部とは分けて宣言・定義するようにしてるよ
2015/10/25(日) 21:29:44.35ID:dX8FdDRX
じゃあ何進数だったらマジックナンバー使っていいんだよ!
2015/10/26(月) 14:29:54.04ID:o+3h9F6B
「定数は定義して使え」に対して

#define value_1 (1)
#define value_2 (2)

とかいう馬鹿もいるんだよな
2015/10/26(月) 14:33:27.86ID:otoyrobt
#define value_one (1)
#define value_two (2)

これなら大丈夫(キリッ
402デフォルトの名無しさん
垢版 |
2015/10/26(月) 17:54:07.18ID:2NCHgOBb
#define ZERO 1
はGNUで見たことある。
2015/10/26(月) 18:15:12.01ID:oKHb2SJo
マジックナンバーは基本だが定数を使った判定をあちこちに書かないことも重要
例えばファイルの存在チェックでファイルのビットフラグ立ってないことで判定
しかしフォルダも除外したい等仕様変更が予想される
その度多数の修正を入れるのは危険
isExist()などでラップして判定処理は1箇所にすると変更に強くテストも楽
2015/10/26(月) 23:04:21.65ID:nye5D6dJ
マジックナンバーは必要悪でしょ。
周知されてて、全体で統一されてたら何も文句無いけどな。
日時未定を29991231で持ってるシステムに関わってたけど。

特定のビットが立ってないことと、ファイルの有無と、ディレクトリであるか否かはまた別問題ではないのだろうか。
isExistなのに、ディレクトリ除外しちゃうの?ライブラリなのに外から見た挙動変えちゃうの?って不安のほうが大きい。
そんなもんで判定せずに、判定箇所で切り分けるか、旧関数自体をassertで殺す方がマシ。
その度に多数の修正は躊躇なく入れるべき。

挙動を変えるのに、変えた意識が無い方が、
あり得ないくらい誰も原因に気づかない、どハマりする障害を起こす元。
2015/10/27(火) 01:11:27.89ID:Ay4zuTZ6
>>404
例が悪かったからマイナンバー導入を例にする
従来は同一判定をequal()で中身は住所と指名で判定してたとしよう
この場合マイナンバー対応は中身をID比較にすればそれだけで対応完了
これが比較箇所に直接住所と氏名の比較を行っていた場合修正は時間がかかる
修正ソース毎にドキュメント書かないといけないプロジェクトでは発狂もの
言いたいのはやりたいことを外に出して実現手段は中に閉じ込めろってこと
要はカプセル化だが簡単なものだと忘れられることがよくある
2015/10/27(火) 07:32:20.87ID:z76BTGB+
>>405
ダメ。
名前と住所で比較するロジックと、
マイナンバーで比較するロジックは別物。
それだけで対応完了にならないよ。
それでは、既存の比較するロジック全部洗って、それ呼んでる所を全部テストせなならん。
普通は、呼び出し側ソース修正と同じかそれ以上になるんだよ、ライブラリの挙動変更に対するドキュメントとテストって。
やりたい事をカプセル化するライブラリの、内部挙動が変わったらそれは最早カプセル化されてないとしか言いようが無い。

名前と住所ってのは、ユニークになるとは限らない情報だし、逆に歴なんか持ってたら2つ以上のレコードが一つを指すかもしれないレコードになるでしょ。
今まで同じだったけど今回からは違う人(田中一郎さんが昔住んでて、引っ越した後、今は別の田中一郎さんが住んでる)、や
今まで違う人だったけど、今回からは同じ人(同じ住所だけど、結婚して姓が変わってる)が出る改修はカプセル化失敗としか言えない。

まさにそういうシステム作ってたけど、「同一人物っぽい人」としか言えないから、警告しか出してない。

内部発番のシリアルのIDを比較していた所を、マイナンバーでひっかけるようにする、位の変更くらいじゃないの?その変更が通用するのは。
それでもパターンテストは必要。
呼び出し側を修正して、きちんと新しい関数が呼ばれている所からがテストのスタート地点。

修正ソース毎にドキュメントなんか普通作るよね。
波及コードだけどローレベルで担保されてるから大丈夫。は通用しない。

現実手段を閉じ込めるのは、同じ動きをする事が大前提。
2015/10/27(火) 07:44:38.08ID:ecThD4uO
>>406
理想はそうだけど現実解じゃないよそれ。
2015/10/27(火) 07:55:35.31ID:GLkDzmBJ
いつのまに絶望的なコーディング論を紹介するスレになったのか
2015/10/27(火) 08:09:05.01ID:HvIk3KYT
>>404
#define DATE_UNDEFINED 29991231
みたいな感じにマクロ化してあればいいだけじゃん?
マジックナンバーで許されるのは0と1くらいだと思う
2015/10/27(火) 08:17:38.90ID:ExQg5u4l
括弧位つけろ
2015/10/27(火) 08:41:24.34ID:z76BTGB+
>>407
実際にこのルールでやってるよ。
2015/10/27(火) 08:55:24.16ID:xbbraB1s
UNREFFERENCE_PARAM(hCurInst)とかいう無意味マクロまーじ
2015/10/27(火) 09:39:20.90ID:Ay4zuTZ6
>>406
また言葉足らずだったが話の前提として住所と氏名でユニークキーになる場合の話
勿論結果が修正前と異なるようなら別のメソッドにしたり置き換えたりが必要
あとソース修正毎にドキュメント作るのは金融くらいしか聞かない
テスト自動化してればシナリオ流して終わり
必要以上に金かけるよりほぼ間違いないでコスト削減が今の主流だと思う
スマホゲームでメンテ後に即メンテとかよくあるだろw
2015/10/27(火) 10:38:11.22ID:z76BTGB+
>>413
医療だけど、特殊例だったのか。
だとすると、医療でそういう運用してても出る障害考えたら、世の中のプログラマは一体どんな気持ちでプログラムしてるかわからんな。
必要以上に金かけずにコスト削減して、障害出したら、それは必要な金だったんじゃねーかなぁ。
2015/10/27(火) 11:41:33.67ID:Ay4zuTZ6
>>414
なるほど医療か
医療は周りにいなかったからわからなかった
医療だと慎重にならざるを得ないがバグ出ても修正すれば問題ない分野はそんなにテストに時間をかけない
毎回手動テストしてリリースするより自動テストでバグ出たら修正のほうがトータルコストはかからない
リリース優先か品質優先かは分野で全く異なる
ゲームで慎重なテストで時間使ってたら首飛ぶし逆もまた然り
2015/10/27(火) 11:52:03.16ID:Ay4zuTZ6
あと金の話だけどリリース時期は作る前から決まってる
そこがずらせないとなればバグのリスクとってもリリースを優先しないといけない
もしくは機能のそぎ落とし
3末リリースが遅れると決算への影響が大きいとかいろいろ事情がある
バグは出るものだからリリース後に改修すればいい
なかなか思ったとおりに仕事できないのは世の中の常w
2015/10/27(火) 13:00:39.45ID:HvIk3KYT
自動車とか産業機械とか医療は厳しいよね。
バグ流出したら普通に人が死ぬからなあ。
2015/10/27(火) 20:49:01.37ID:5DDR/Lis
工作機械の制御も簡単に死人出るからなぁ…。
2015/10/27(火) 20:58:17.64ID:ohI0PO9P
絶望的なソースコードか〜
俺のソースコードは、いつでもスパゲッティになってるな〜
2015/10/27(火) 20:58:59.55ID:LyVSHq6d
FXのツールとかで時限で誤動作爆発させたら大量に電車に飛び込みそう
2015/10/28(水) 00:18:14.32ID:v41KDir5
糞みたいなコードにはもれなく言い訳がついて来る
もし本気を出せば綺麗なコードが書けるかのような
2015/10/28(水) 07:34:37.69ID:dd+rVZmo
つまり全てのコードにはもれなく言い訳がついて来る
2015/10/29(木) 12:41:13.98ID:jYkr1Igb
最近JavaScriptのswitch(true)イディオムを知ったが
do { ... } while(false)と同じような邪悪さを感じた
2015/10/29(木) 12:56:10.88ID:ywbX+Z6L
でもどこが邪悪なのか言えない?
2015/10/29(木) 13:15:18.74ID:l+jiBzQW
>>423
>do { ... } while(false)

これ最適化でdoの中に入ってこないイカしたコンパイラに昔遭遇して
発狂したことがある
2015/10/29(木) 14:23:06.65ID:ywbX+Z6L
それは最適化じゃなくてバグだろ
427デフォルトの名無しさん
垢版 |
2015/10/29(木) 18:25:23.55ID:jIkfL+wY
マイナンバークラスから氏名クラスへの変換関数が存在した場合の問題点。
2015/10/29(木) 19:45:11.73ID:lCX/HIGL
適用日付も引数にほしい
2015/10/29(木) 20:06:17.64ID:K+6ZCqNU
期間持つのと、変換日時を任意に設定出来ることが最低条件かな。
変換ではなく、取得クラスになるだろうけど。
2015/10/30(金) 16:02:41.19ID:ZjC0FpzU
>>409
0すら定数定義させられた事があったわー
2015/10/30(金) 20:53:45.70ID:gPbmFrsE
#define NULL 0
2015/10/30(金) 21:45:25.79ID:eJ2e2Hn1
>>431
これは正しいんだよなw

マジックナンバーはだめ
じゃあ数字に対して全部defineすればいいってわけじゃない。
何が数値そのまま書いて良くて、何がダメなのかもう少し良い説明ない?
2015/10/30(金) 22:31:55.26ID:gPbmFrsE
たとえばVBAの話になるが、VBAからシートの特定のカラムのセルを参照するには
Cells(行, カラム)やRange("行:カラム")のように指定する
これはカラムの配置を変えただけでプログラムが破綻することを意味する
さてExcelにおいてカラムの配置を変えたいことは良く思うことである
そこで1行目のヘッダとなる名前とカラム番号を連想配列に登録しておき
名前でカラム位置を特定するという方法がある
こういった対策をしとかないとVBAはマジックナンバーだらけのコードになる
対策したコードは処理の最初に名前から番号への変換のコストが発生するが
それは些細なコストである
・・・わかったかね
2015/10/30(金) 22:32:38.22ID:eJ2e2Hn1
長い
2015/10/30(金) 22:34:14.14ID:WJjMGMJs
その値が何を意味してるのかを定義して同じ意味のものをまとめるだけ
もともと可読性と変更に強くするためにしてるのだから
あとdefineはundefで消すこともできるため難解コードは解析しづらい
定数もしくはenumを使うのがいい
2015/10/30(金) 22:47:48.69ID:gPbmFrsE
上のRangeの場合は"カラム行"だけどまあどうでもいいわな
さてCOMインターフェースの1つIDispatchはこれの逆をやっている
IDispatchは全て名前ベースでプロパティやメソッドを呼び出せるようになっている
が実はそれらには一意のIDが割り振られており、事前に名前からIDを特定しておくこともでき
うまく書けば名前からIDへの変換は1度のコストで済む連想配列を内蔵した形だ
ちなみにここで登場した連想配列に名前を格納する仕組みは
主に文字列リテラルとして実装されるが、これはマジックナンバーではない
これをマジックナンバーとみなしてさらに別名定義するアホはいないだろう
2015/10/30(金) 22:51:56.22ID:gPbmFrsE
GUIDという概念がある
コイツハマサニマジックナンバーデコノアイデーハセカイニヒトツシカナイコトガホショウサレルアイデーナノデアル
デモニンゲンハコンナモノイチイチオボエテラレナイカラマサニマジカルナウンヨウガナサレテイル
2015/10/30(金) 23:03:28.91ID:gPbmFrsE
マイナンバー制度という概念がある
主に国内でやりとりされることを想定した奴隷番号である
公開すると害があるらしく最後には官憲が動くかもしれない危険な番号として最近認知された
2015/11/01(日) 18:19:18.77ID:tjf5Il2M
国民総背番号制という古来からの論争の種だったのだが,最近は抵抗運動はなかったのか?
2015/11/02(月) 00:51:12.93ID:IGWJLfrm
そもそも既に番号振られてるよね、事実上、って気づいたからじゃない?
2015/11/02(月) 08:32:28.83ID:jypI/AIk
マイナンバーの本体そのものは民主時代に通ってるがな
今騒いでるのは改正と称して悪用するための変更
2015/11/03(火) 11:58:57.65ID:gpyirAk3
急に政治臭くなった
2015/11/03(火) 12:02:06.64ID:Cvaj+aOI
そういやテストデータの人名に政治家やら備考欄に真実()入れてきた外注があったわ
2015/11/03(火) 13:50:13.77ID:i649bMmf
ワロタ
俺も真似しよう
2015/11/12(木) 07:13:20.33ID:b0I3If93
>>432
function pi() の中で3.14。
function month() の中で12。
function hour() の中で24。
こんなん、常数にする?俺はしない。
2015/11/12(木) 10:32:56.67ID:iZs6jymX
>>445
お前誰だよw お前ごときがしないからってどうでもいいわ。

一般的にそれらは定数に良くなっている。
447デフォルトの名無しさん
垢版 |
2015/11/13(金) 22:33:07.13ID:Ztn/Y8j7
>>446
日本人か?
2015/11/14(土) 00:40:00.13ID:H4hEy7EE
>>447
日本人だが?
2015/11/14(土) 00:40:45.97ID:iuWQx+BT
pi みたいな浮動小数は用途による。
2015/11/14(土) 14:17:51.36ID:fm2vcKXc
>>446
#define マクロのない言語は哀れだね
2015/11/14(土) 14:34:31.48ID:bF3EVbPf
いや、マクロが欲しければm4みたいな汎用のマクロプロセッサを使えばいいし、
単なる文字列置換であるマクロは、コードの静的解析能力を下げ
(例えばプリプロセッサを通さないと構文エラーかどうかわからない)
エラー時の情報をわかりにくくしたり、分かりにくいバグの元になったりするので
排除する方向にあるんだけど。

C言語でもdefineよりもconstやinlineを使うのが常識だしさ。
2015/11/14(土) 14:36:18.15ID:bF3EVbPf
おっと、軽く探したら#defineはダメだっていういい記事見つかったので紹介

http://d.hatena.ne.jp/takehikom/20140807/1407420548
2015/11/14(土) 16:30:08.93ID:EuJ2f84U
#define ABC 5 + 10

void func(void)
{
int abc = ABC * 10;
print("%d", abc);
}

このパソコンは算数が苦手になったみたいです。
150と表示されません。

………………死ね!
2015/11/14(土) 16:36:15.32ID:Wquzevs4
コンパイラさんがどういうことやってるかわかってない人が
2015/11/14(土) 16:53:07.63ID:bF3EVbPf
コンパイラじゃなくて、余計なことをやってる
プリプロセッサが原因だけどねw
2015/11/14(土) 16:56:04.42ID:Wquzevs4
プリプロ 何ですか それ
な方たちがやってるんでは
2015/11/14(土) 20:11:50.05ID:MSvtHxf5
>>450
extern constにしておけば実体持ってるライブラリを入れ替えるだけで
piの中身が3.14なのか3.1416なのか3.1415927なのかを切り替えてリンクできる
組み込みなんかではここのセクションに特別な絶対アドレスを振っておいて
Sフォーマットのファイル作ってから後で値を書き換えたりする
2015/11/15(日) 10:36:26.12ID:Xo3Zb28z
>>451
いいこと言うね
使う側からは便利に使える反面複雑な使い方してると解析不可
defineはundefで消せるからコンパイル順通りに解析していかないとそのdefineは別の定義かもしれない
2015/11/16(月) 21:09:30.08ID:nSSKBNI/
>>458
プリプロセッサだけ通せばいいだけだろ
解析不可とかアホか
2015/11/16(月) 23:26:56.71ID:ozqa//mh
>>459
小さい規模ならまだしも業務用のでかいのに毎回やるのは非効率
後続の言語が切り捨てたとおり現状マクロは負の遺産
今の時代はフレームワーク使って読みやすいそこそこのものを短期で作ることが求められてるからね
2015/11/16(月) 23:43:11.58ID:+ZSgD8xZ
今時の言語にプリプロとか無いよな
2015/11/17(火) 04:44:48.22ID:91LH4JJH
>>459
プリプロセッサを通した結果に対して、
コンパイラがエラーを出したとき、

プリプロセッサを通す前のコードみても意味がわからんし、
通した後のコードは自分が書いたコードじゃないし。

プリプロセッサを通した結果に対するエラーから、
プリプロセッサを通す前のコードをどこをどう直せばいいのか
そのつながりを人間が判断するしかなく意味不明になるんだよ。
人間が頭の中で逆プリプロセッサをしなくちゃいけなくなる
2015/11/17(火) 19:22:30.78ID:5ylAZ1WH
>>462
IDEと相性がわるいからね
2015/11/17(火) 20:09:29.80ID:/RqDC1dK
>>463
IDEはまだましよ。
そういう変則的なものであっても頑張って対応してるから。

問題はテキストエディタを使ってる場合。
そういう細かいところの対応までできてないからなぁ。
2015/11/21(土) 13:08:19.06ID:kjUNvnu/
C ( or C++ ) のソースで

#if 0

#endif

でコメントにするのはやめて欲しい。
2015/11/21(土) 13:34:03.37ID:HbP98col
SublimeTextなどを使って範囲選択して
一気に行頭に//を入れたほうがいい。
2015/11/21(土) 19:54:17.89ID:1zgwhmXP
>>466
え,便利じゃないか?
2015/11/22(日) 00:13:36.89ID:G5+yWL2h
>>465
理由を述べよ。
単に嫌うのは、食わず嫌いと一緒。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況