今井氏:ソースコード公開は、社長のティム(*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
探検
今までみた絶望的なソースコード [転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2015/04/17(金) 23:00:30.63ID:55USvuES405デフォルトの名無しさん
2015/10/27(火) 01:11:27.89ID:Ay4zuTZ6 >>404
例が悪かったからマイナンバー導入を例にする
従来は同一判定をequal()で中身は住所と指名で判定してたとしよう
この場合マイナンバー対応は中身をID比較にすればそれだけで対応完了
これが比較箇所に直接住所と氏名の比較を行っていた場合修正は時間がかかる
修正ソース毎にドキュメント書かないといけないプロジェクトでは発狂もの
言いたいのはやりたいことを外に出して実現手段は中に閉じ込めろってこと
要はカプセル化だが簡単なものだと忘れられることがよくある
例が悪かったからマイナンバー導入を例にする
従来は同一判定をequal()で中身は住所と指名で判定してたとしよう
この場合マイナンバー対応は中身をID比較にすればそれだけで対応完了
これが比較箇所に直接住所と氏名の比較を行っていた場合修正は時間がかかる
修正ソース毎にドキュメント書かないといけないプロジェクトでは発狂もの
言いたいのはやりたいことを外に出して実現手段は中に閉じ込めろってこと
要はカプセル化だが簡単なものだと忘れられることがよくある
406デフォルトの名無しさん
2015/10/27(火) 07:32:20.87ID:z76BTGB+ >>405
ダメ。
名前と住所で比較するロジックと、
マイナンバーで比較するロジックは別物。
それだけで対応完了にならないよ。
それでは、既存の比較するロジック全部洗って、それ呼んでる所を全部テストせなならん。
普通は、呼び出し側ソース修正と同じかそれ以上になるんだよ、ライブラリの挙動変更に対するドキュメントとテストって。
やりたい事をカプセル化するライブラリの、内部挙動が変わったらそれは最早カプセル化されてないとしか言いようが無い。
名前と住所ってのは、ユニークになるとは限らない情報だし、逆に歴なんか持ってたら2つ以上のレコードが一つを指すかもしれないレコードになるでしょ。
今まで同じだったけど今回からは違う人(田中一郎さんが昔住んでて、引っ越した後、今は別の田中一郎さんが住んでる)、や
今まで違う人だったけど、今回からは同じ人(同じ住所だけど、結婚して姓が変わってる)が出る改修はカプセル化失敗としか言えない。
まさにそういうシステム作ってたけど、「同一人物っぽい人」としか言えないから、警告しか出してない。
内部発番のシリアルのIDを比較していた所を、マイナンバーでひっかけるようにする、位の変更くらいじゃないの?その変更が通用するのは。
それでもパターンテストは必要。
呼び出し側を修正して、きちんと新しい関数が呼ばれている所からがテストのスタート地点。
修正ソース毎にドキュメントなんか普通作るよね。
波及コードだけどローレベルで担保されてるから大丈夫。は通用しない。
現実手段を閉じ込めるのは、同じ動きをする事が大前提。
ダメ。
名前と住所で比較するロジックと、
マイナンバーで比較するロジックは別物。
それだけで対応完了にならないよ。
それでは、既存の比較するロジック全部洗って、それ呼んでる所を全部テストせなならん。
普通は、呼び出し側ソース修正と同じかそれ以上になるんだよ、ライブラリの挙動変更に対するドキュメントとテストって。
やりたい事をカプセル化するライブラリの、内部挙動が変わったらそれは最早カプセル化されてないとしか言いようが無い。
名前と住所ってのは、ユニークになるとは限らない情報だし、逆に歴なんか持ってたら2つ以上のレコードが一つを指すかもしれないレコードになるでしょ。
今まで同じだったけど今回からは違う人(田中一郎さんが昔住んでて、引っ越した後、今は別の田中一郎さんが住んでる)、や
今まで違う人だったけど、今回からは同じ人(同じ住所だけど、結婚して姓が変わってる)が出る改修はカプセル化失敗としか言えない。
まさにそういうシステム作ってたけど、「同一人物っぽい人」としか言えないから、警告しか出してない。
内部発番のシリアルのIDを比較していた所を、マイナンバーでひっかけるようにする、位の変更くらいじゃないの?その変更が通用するのは。
それでもパターンテストは必要。
呼び出し側を修正して、きちんと新しい関数が呼ばれている所からがテストのスタート地点。
修正ソース毎にドキュメントなんか普通作るよね。
波及コードだけどローレベルで担保されてるから大丈夫。は通用しない。
現実手段を閉じ込めるのは、同じ動きをする事が大前提。
407デフォルトの名無しさん
2015/10/27(火) 07:44:38.08ID:ecThD4uO >>406
理想はそうだけど現実解じゃないよそれ。
理想はそうだけど現実解じゃないよそれ。
408デフォルトの名無しさん
2015/10/27(火) 07:55:35.31ID:GLkDzmBJ いつのまに絶望的なコーディング論を紹介するスレになったのか
409デフォルトの名無しさん
2015/10/27(火) 08:09:05.01ID:HvIk3KYT410デフォルトの名無しさん
2015/10/27(火) 08:17:38.90ID:ExQg5u4l 括弧位つけろ
411デフォルトの名無しさん
2015/10/27(火) 08:41:24.34ID:z76BTGB+ >>407
実際にこのルールでやってるよ。
実際にこのルールでやってるよ。
412デフォルトの名無しさん
2015/10/27(火) 08:55:24.16ID:xbbraB1s UNREFFERENCE_PARAM(hCurInst)とかいう無意味マクロまーじ
413デフォルトの名無しさん
2015/10/27(火) 09:39:20.90ID:Ay4zuTZ6 >>406
また言葉足らずだったが話の前提として住所と氏名でユニークキーになる場合の話
勿論結果が修正前と異なるようなら別のメソッドにしたり置き換えたりが必要
あとソース修正毎にドキュメント作るのは金融くらいしか聞かない
テスト自動化してればシナリオ流して終わり
必要以上に金かけるよりほぼ間違いないでコスト削減が今の主流だと思う
スマホゲームでメンテ後に即メンテとかよくあるだろw
また言葉足らずだったが話の前提として住所と氏名でユニークキーになる場合の話
勿論結果が修正前と異なるようなら別のメソッドにしたり置き換えたりが必要
あとソース修正毎にドキュメント作るのは金融くらいしか聞かない
テスト自動化してればシナリオ流して終わり
必要以上に金かけるよりほぼ間違いないでコスト削減が今の主流だと思う
スマホゲームでメンテ後に即メンテとかよくあるだろw
414デフォルトの名無しさん
2015/10/27(火) 10:38:11.22ID:z76BTGB+ >>413
医療だけど、特殊例だったのか。
だとすると、医療でそういう運用してても出る障害考えたら、世の中のプログラマは一体どんな気持ちでプログラムしてるかわからんな。
必要以上に金かけずにコスト削減して、障害出したら、それは必要な金だったんじゃねーかなぁ。
医療だけど、特殊例だったのか。
だとすると、医療でそういう運用してても出る障害考えたら、世の中のプログラマは一体どんな気持ちでプログラムしてるかわからんな。
必要以上に金かけずにコスト削減して、障害出したら、それは必要な金だったんじゃねーかなぁ。
415デフォルトの名無しさん
2015/10/27(火) 11:41:33.67ID:Ay4zuTZ6 >>414
なるほど医療か
医療は周りにいなかったからわからなかった
医療だと慎重にならざるを得ないがバグ出ても修正すれば問題ない分野はそんなにテストに時間をかけない
毎回手動テストしてリリースするより自動テストでバグ出たら修正のほうがトータルコストはかからない
リリース優先か品質優先かは分野で全く異なる
ゲームで慎重なテストで時間使ってたら首飛ぶし逆もまた然り
なるほど医療か
医療は周りにいなかったからわからなかった
医療だと慎重にならざるを得ないがバグ出ても修正すれば問題ない分野はそんなにテストに時間をかけない
毎回手動テストしてリリースするより自動テストでバグ出たら修正のほうがトータルコストはかからない
リリース優先か品質優先かは分野で全く異なる
ゲームで慎重なテストで時間使ってたら首飛ぶし逆もまた然り
416デフォルトの名無しさん
2015/10/27(火) 11:52:03.16ID:Ay4zuTZ6 あと金の話だけどリリース時期は作る前から決まってる
そこがずらせないとなればバグのリスクとってもリリースを優先しないといけない
もしくは機能のそぎ落とし
3末リリースが遅れると決算への影響が大きいとかいろいろ事情がある
バグは出るものだからリリース後に改修すればいい
なかなか思ったとおりに仕事できないのは世の中の常w
そこがずらせないとなればバグのリスクとってもリリースを優先しないといけない
もしくは機能のそぎ落とし
3末リリースが遅れると決算への影響が大きいとかいろいろ事情がある
バグは出るものだからリリース後に改修すればいい
なかなか思ったとおりに仕事できないのは世の中の常w
417デフォルトの名無しさん
2015/10/27(火) 13:00:39.45ID:HvIk3KYT 自動車とか産業機械とか医療は厳しいよね。
バグ流出したら普通に人が死ぬからなあ。
バグ流出したら普通に人が死ぬからなあ。
418デフォルトの名無しさん
2015/10/27(火) 20:49:01.37ID:5DDR/Lis 工作機械の制御も簡単に死人出るからなぁ…。
419デフォルトの名無しさん
2015/10/27(火) 20:58:17.64ID:ohI0PO9P 絶望的なソースコードか〜
俺のソースコードは、いつでもスパゲッティになってるな〜
俺のソースコードは、いつでもスパゲッティになってるな〜
420デフォルトの名無しさん
2015/10/27(火) 20:58:59.55ID:LyVSHq6d FXのツールとかで時限で誤動作爆発させたら大量に電車に飛び込みそう
421デフォルトの名無しさん
2015/10/28(水) 00:18:14.32ID:v41KDir5 糞みたいなコードにはもれなく言い訳がついて来る
もし本気を出せば綺麗なコードが書けるかのような
もし本気を出せば綺麗なコードが書けるかのような
422デフォルトの名無しさん
2015/10/28(水) 07:34:37.69ID:dd+rVZmo つまり全てのコードにはもれなく言い訳がついて来る
423デフォルトの名無しさん
2015/10/29(木) 12:41:13.98ID:jYkr1Igb 最近JavaScriptのswitch(true)イディオムを知ったが
do { ... } while(false)と同じような邪悪さを感じた
do { ... } while(false)と同じような邪悪さを感じた
424デフォルトの名無しさん
2015/10/29(木) 12:56:10.88ID:ywbX+Z6L でもどこが邪悪なのか言えない?
425デフォルトの名無しさん
2015/10/29(木) 13:15:18.74ID:l+jiBzQW426デフォルトの名無しさん
2015/10/29(木) 14:23:06.65ID:ywbX+Z6L それは最適化じゃなくてバグだろ
427デフォルトの名無しさん
2015/10/29(木) 18:25:23.55ID:jIkfL+wY マイナンバークラスから氏名クラスへの変換関数が存在した場合の問題点。
428デフォルトの名無しさん
2015/10/29(木) 19:45:11.73ID:lCX/HIGL 適用日付も引数にほしい
429デフォルトの名無しさん
2015/10/29(木) 20:06:17.64ID:K+6ZCqNU 期間持つのと、変換日時を任意に設定出来ることが最低条件かな。
変換ではなく、取得クラスになるだろうけど。
変換ではなく、取得クラスになるだろうけど。
430デフォルトの名無しさん
2015/10/30(金) 16:02:41.19ID:ZjC0FpzU >>409
0すら定数定義させられた事があったわー
0すら定数定義させられた事があったわー
431デフォルトの名無しさん
2015/10/30(金) 20:53:45.70ID:gPbmFrsE #define NULL 0
432デフォルトの名無しさん
2015/10/30(金) 21:45:25.79ID:eJ2e2Hn1433デフォルトの名無しさん
2015/10/30(金) 22:31:55.26ID:gPbmFrsE たとえばVBAの話になるが、VBAからシートの特定のカラムのセルを参照するには
Cells(行, カラム)やRange("行:カラム")のように指定する
これはカラムの配置を変えただけでプログラムが破綻することを意味する
さてExcelにおいてカラムの配置を変えたいことは良く思うことである
そこで1行目のヘッダとなる名前とカラム番号を連想配列に登録しておき
名前でカラム位置を特定するという方法がある
こういった対策をしとかないとVBAはマジックナンバーだらけのコードになる
対策したコードは処理の最初に名前から番号への変換のコストが発生するが
それは些細なコストである
・・・わかったかね
Cells(行, カラム)やRange("行:カラム")のように指定する
これはカラムの配置を変えただけでプログラムが破綻することを意味する
さてExcelにおいてカラムの配置を変えたいことは良く思うことである
そこで1行目のヘッダとなる名前とカラム番号を連想配列に登録しておき
名前でカラム位置を特定するという方法がある
こういった対策をしとかないとVBAはマジックナンバーだらけのコードになる
対策したコードは処理の最初に名前から番号への変換のコストが発生するが
それは些細なコストである
・・・わかったかね
434デフォルトの名無しさん
2015/10/30(金) 22:32:38.22ID:eJ2e2Hn1 長い
435デフォルトの名無しさん
2015/10/30(金) 22:34:14.14ID:WJjMGMJs その値が何を意味してるのかを定義して同じ意味のものをまとめるだけ
もともと可読性と変更に強くするためにしてるのだから
あとdefineはundefで消すこともできるため難解コードは解析しづらい
定数もしくはenumを使うのがいい
もともと可読性と変更に強くするためにしてるのだから
あとdefineはundefで消すこともできるため難解コードは解析しづらい
定数もしくはenumを使うのがいい
436デフォルトの名無しさん
2015/10/30(金) 22:47:48.69ID:gPbmFrsE 上のRangeの場合は"カラム行"だけどまあどうでもいいわな
さてCOMインターフェースの1つIDispatchはこれの逆をやっている
IDispatchは全て名前ベースでプロパティやメソッドを呼び出せるようになっている
が実はそれらには一意のIDが割り振られており、事前に名前からIDを特定しておくこともでき
うまく書けば名前からIDへの変換は1度のコストで済む連想配列を内蔵した形だ
ちなみにここで登場した連想配列に名前を格納する仕組みは
主に文字列リテラルとして実装されるが、これはマジックナンバーではない
これをマジックナンバーとみなしてさらに別名定義するアホはいないだろう
さてCOMインターフェースの1つIDispatchはこれの逆をやっている
IDispatchは全て名前ベースでプロパティやメソッドを呼び出せるようになっている
が実はそれらには一意のIDが割り振られており、事前に名前からIDを特定しておくこともでき
うまく書けば名前からIDへの変換は1度のコストで済む連想配列を内蔵した形だ
ちなみにここで登場した連想配列に名前を格納する仕組みは
主に文字列リテラルとして実装されるが、これはマジックナンバーではない
これをマジックナンバーとみなしてさらに別名定義するアホはいないだろう
437デフォルトの名無しさん
2015/10/30(金) 22:51:56.22ID:gPbmFrsE GUIDという概念がある
コイツハマサニマジックナンバーデコノアイデーハセカイニヒトツシカナイコトガホショウサレルアイデーナノデアル
デモニンゲンハコンナモノイチイチオボエテラレナイカラマサニマジカルナウンヨウガナサレテイル
コイツハマサニマジックナンバーデコノアイデーハセカイニヒトツシカナイコトガホショウサレルアイデーナノデアル
デモニンゲンハコンナモノイチイチオボエテラレナイカラマサニマジカルナウンヨウガナサレテイル
438デフォルトの名無しさん
2015/10/30(金) 23:03:28.91ID:gPbmFrsE マイナンバー制度という概念がある
主に国内でやりとりされることを想定した奴隷番号である
公開すると害があるらしく最後には官憲が動くかもしれない危険な番号として最近認知された
主に国内でやりとりされることを想定した奴隷番号である
公開すると害があるらしく最後には官憲が動くかもしれない危険な番号として最近認知された
439デフォルトの名無しさん
2015/11/01(日) 18:19:18.77ID:tjf5Il2M 国民総背番号制という古来からの論争の種だったのだが,最近は抵抗運動はなかったのか?
440デフォルトの名無しさん
2015/11/02(月) 00:51:12.93ID:IGWJLfrm そもそも既に番号振られてるよね、事実上、って気づいたからじゃない?
441デフォルトの名無しさん
2015/11/02(月) 08:32:28.83ID:jypI/AIk マイナンバーの本体そのものは民主時代に通ってるがな
今騒いでるのは改正と称して悪用するための変更
今騒いでるのは改正と称して悪用するための変更
442デフォルトの名無しさん
2015/11/03(火) 11:58:57.65ID:gpyirAk3 急に政治臭くなった
443デフォルトの名無しさん
2015/11/03(火) 12:02:06.64ID:Cvaj+aOI そういやテストデータの人名に政治家やら備考欄に真実()入れてきた外注があったわ
444デフォルトの名無しさん
2015/11/03(火) 13:50:13.77ID:i649bMmf ワロタ
俺も真似しよう
俺も真似しよう
445デフォルトの名無しさん
2015/11/12(木) 07:13:20.33ID:b0I3If93446デフォルトの名無しさん
2015/11/12(木) 10:32:56.67ID:iZs6jymX447デフォルトの名無しさん
2015/11/13(金) 22:33:07.13ID:Ztn/Y8j7 >>446
日本人か?
日本人か?
448デフォルトの名無しさん
2015/11/14(土) 00:40:00.13ID:H4hEy7EE >>447
日本人だが?
日本人だが?
449デフォルトの名無しさん
2015/11/14(土) 00:40:45.97ID:iuWQx+BT pi みたいな浮動小数は用途による。
450デフォルトの名無しさん
2015/11/14(土) 14:17:51.36ID:fm2vcKXc >>446
#define マクロのない言語は哀れだね
#define マクロのない言語は哀れだね
451デフォルトの名無しさん
2015/11/14(土) 14:34:31.48ID:bF3EVbPf いや、マクロが欲しければm4みたいな汎用のマクロプロセッサを使えばいいし、
単なる文字列置換であるマクロは、コードの静的解析能力を下げ
(例えばプリプロセッサを通さないと構文エラーかどうかわからない)
エラー時の情報をわかりにくくしたり、分かりにくいバグの元になったりするので
排除する方向にあるんだけど。
C言語でもdefineよりもconstやinlineを使うのが常識だしさ。
単なる文字列置換であるマクロは、コードの静的解析能力を下げ
(例えばプリプロセッサを通さないと構文エラーかどうかわからない)
エラー時の情報をわかりにくくしたり、分かりにくいバグの元になったりするので
排除する方向にあるんだけど。
C言語でもdefineよりもconstやinlineを使うのが常識だしさ。
452デフォルトの名無しさん
2015/11/14(土) 14:36:18.15ID:bF3EVbPf453デフォルトの名無しさん
2015/11/14(土) 16:30:08.93ID:EuJ2f84U #define ABC 5 + 10
void func(void)
{
int abc = ABC * 10;
print("%d", abc);
}
このパソコンは算数が苦手になったみたいです。
150と表示されません。
………………死ね!
void func(void)
{
int abc = ABC * 10;
print("%d", abc);
}
このパソコンは算数が苦手になったみたいです。
150と表示されません。
………………死ね!
454デフォルトの名無しさん
2015/11/14(土) 16:36:15.32ID:Wquzevs4 コンパイラさんがどういうことやってるかわかってない人が
455デフォルトの名無しさん
2015/11/14(土) 16:53:07.63ID:bF3EVbPf コンパイラじゃなくて、余計なことをやってる
プリプロセッサが原因だけどねw
プリプロセッサが原因だけどねw
456デフォルトの名無しさん
2015/11/14(土) 16:56:04.42ID:Wquzevs4 プリプロ 何ですか それ
な方たちがやってるんでは
な方たちがやってるんでは
457デフォルトの名無しさん
2015/11/14(土) 20:11:50.05ID:MSvtHxf5 >>450
extern constにしておけば実体持ってるライブラリを入れ替えるだけで
piの中身が3.14なのか3.1416なのか3.1415927なのかを切り替えてリンクできる
組み込みなんかではここのセクションに特別な絶対アドレスを振っておいて
Sフォーマットのファイル作ってから後で値を書き換えたりする
extern constにしておけば実体持ってるライブラリを入れ替えるだけで
piの中身が3.14なのか3.1416なのか3.1415927なのかを切り替えてリンクできる
組み込みなんかではここのセクションに特別な絶対アドレスを振っておいて
Sフォーマットのファイル作ってから後で値を書き換えたりする
458デフォルトの名無しさん
2015/11/15(日) 10:36:26.12ID:Xo3Zb28z459デフォルトの名無しさん
2015/11/16(月) 21:09:30.08ID:nSSKBNI/460デフォルトの名無しさん
2015/11/16(月) 23:26:56.71ID:ozqa//mh >>459
小さい規模ならまだしも業務用のでかいのに毎回やるのは非効率
後続の言語が切り捨てたとおり現状マクロは負の遺産
今の時代はフレームワーク使って読みやすいそこそこのものを短期で作ることが求められてるからね
小さい規模ならまだしも業務用のでかいのに毎回やるのは非効率
後続の言語が切り捨てたとおり現状マクロは負の遺産
今の時代はフレームワーク使って読みやすいそこそこのものを短期で作ることが求められてるからね
461デフォルトの名無しさん
2015/11/16(月) 23:43:11.58ID:+ZSgD8xZ 今時の言語にプリプロとか無いよな
462デフォルトの名無しさん
2015/11/17(火) 04:44:48.22ID:91LH4JJH >>459
プリプロセッサを通した結果に対して、
コンパイラがエラーを出したとき、
プリプロセッサを通す前のコードみても意味がわからんし、
通した後のコードは自分が書いたコードじゃないし。
プリプロセッサを通した結果に対するエラーから、
プリプロセッサを通す前のコードをどこをどう直せばいいのか
そのつながりを人間が判断するしかなく意味不明になるんだよ。
人間が頭の中で逆プリプロセッサをしなくちゃいけなくなる
プリプロセッサを通した結果に対して、
コンパイラがエラーを出したとき、
プリプロセッサを通す前のコードみても意味がわからんし、
通した後のコードは自分が書いたコードじゃないし。
プリプロセッサを通した結果に対するエラーから、
プリプロセッサを通す前のコードをどこをどう直せばいいのか
そのつながりを人間が判断するしかなく意味不明になるんだよ。
人間が頭の中で逆プリプロセッサをしなくちゃいけなくなる
463デフォルトの名無しさん
2015/11/17(火) 19:22:30.78ID:5ylAZ1WH >>462
IDEと相性がわるいからね
IDEと相性がわるいからね
464デフォルトの名無しさん
2015/11/17(火) 20:09:29.80ID:/RqDC1dK465デフォルトの名無しさん
2015/11/21(土) 13:08:19.06ID:kjUNvnu/ C ( or C++ ) のソースで
#if 0
#endif
でコメントにするのはやめて欲しい。
#if 0
#endif
でコメントにするのはやめて欲しい。
466デフォルトの名無しさん
2015/11/21(土) 13:34:03.37ID:HbP98col SublimeTextなどを使って範囲選択して
一気に行頭に//を入れたほうがいい。
一気に行頭に//を入れたほうがいい。
467デフォルトの名無しさん
2015/11/21(土) 19:54:17.89ID:1zgwhmXP >>466
え,便利じゃないか?
え,便利じゃないか?
468デフォルトの名無しさん
2015/11/22(日) 00:13:36.89ID:G5+yWL2h469デフォルトの名無しさん
2015/11/22(日) 00:20:00.47ID:QRD2Q6hy470デフォルトの名無しさん
2015/11/22(日) 00:23:37.90ID:G5+yWL2h >>469
単なる食わず嫌いか、納得した。
単なる食わず嫌いか、納得した。
471デフォルトの名無しさん
2015/11/22(日) 00:25:10.28ID:QRD2Q6hy >>470
バカのうえに早合点のトンチンカンで三冠王だな。
バカのうえに早合点のトンチンカンで三冠王だな。
472デフォルトの名無しさん
2015/11/22(日) 00:27:24.52ID:DDbKY7qA 俺の考えが正しいことが証明されたな。
俺の考えはググった程度じゃわからんよ。
俺の考えはググった程度じゃわからんよ。
473デフォルトの名無しさん
2015/11/22(日) 18:12:36.68ID:DWgTsAXH >>465
この方式はテキスト直編集や文字列検索の側面から懸念される
しかしメリットもあってコードの切り替えがしやすい
ifdefなら複数箇所修正も一気に元に戻すことも可能
誰かの修正でも消した人間がやってくれていれば修正当時の状態に戻せる
また修正が重なると//はインデントずれるがifの方はズレの発生もないメリットもある
俺はそのコードを検証等で使用する可能性があるかどうかで使い分けてる
この方式はテキスト直編集や文字列検索の側面から懸念される
しかしメリットもあってコードの切り替えがしやすい
ifdefなら複数箇所修正も一気に元に戻すことも可能
誰かの修正でも消した人間がやってくれていれば修正当時の状態に戻せる
また修正が重なると//はインデントずれるがifの方はズレの発生もないメリットもある
俺はそのコードを検証等で使用する可能性があるかどうかで使い分けてる
474デフォルトの名無しさん
2015/11/22(日) 20:44:55.89ID:eRa8fYqU デメリットもブロックコメントと同等かそれ以下だと思うがな。
まぁ、ネストが重なるとわかりにくくなるから1レベルに限定されたコメントの方が
いいという意見もあるだろうけど。
まぁ、ネストが重なるとわかりにくくなるから1レベルに限定されたコメントの方が
いいという意見もあるだろうけど。
475デフォルトの名無しさん
2015/11/23(月) 11:31:07.22ID:UYP2wI74 うちは//も複数行にわたるブロックコメントも禁止だし
コードのコメントアウトは#if 0 〜 #endifが推奨になってる
Eclipse使ってればこっちの方が楽
コードのコメントアウトは#if 0 〜 #endifが推奨になってる
Eclipse使ってればこっちの方が楽
476デフォルトの名無しさん
2015/11/23(月) 12:46:13.70ID:JP3x9Qw8 >>475
その規約をどうにかしたほうがいいんじゃないか
その規約をどうにかしたほうがいいんじゃないか
477デフォルトの名無しさん
2015/11/23(月) 17:25:09.75ID:pAAcXv2U #if 0じゃ意味が判らんから定数使えや、とエスパーしてみた
478デフォルトの名無しさん
2015/11/23(月) 17:28:56.89ID:I/A9+n8X またそれかw
定型句は意味がわかるから問題ないんだよ。
定型句は意味がわかるから問題ないんだよ。
479デフォルトの名無しさん
2015/11/24(火) 00:07:51.39ID:XdzjW60L #define NOUSE 0
#ifdef NOUSE
:
:
#endif
#ifdef NOUSE
:
:
#endif
480デフォルトの名無しさん
2015/11/24(火) 01:12:38.90ID:7a+QKmK9 NOUSEってなんや?ってなるから意味ない。
481デフォルトの名無しさん
2015/11/24(火) 01:16:48.61ID:XArPpnwT #if 1 // どっちにしようかな
//速いけど詠み難いコード
#else
//遅いけど判り易いコード
#endif
//速いけど詠み難いコード
#else
//遅いけど判り易いコード
#endif
482デフォルトの名無しさん
2015/11/24(火) 07:23:59.50ID:vXeBzDQX バージョン管理システムのチケット番号でifdefしてるのは見たことあるわ。
果たして本当に、それでそのチケット番号の状態に戻るのかは誰もやってないと言う。
果たして本当に、それでそのチケット番号の状態に戻るのかは誰もやってないと言う。
483デフォルトの名無しさん
2015/11/24(火) 19:08:07.34ID:1vZRhgQx >>482
同じ個所弄ったらネストしていくのか…?
同じ個所弄ったらネストしていくのか…?
484デフォルトの名無しさん
2015/11/25(水) 21:24:16.64ID:MMxhWoOe >>482
戻るかどうかは二の次
一番重要なのはどんな修正をしたかということ
自分はいなくなってもコードは10年20年先の人間も目にすることがあるのだから
バージョン管理でやればいいという声もあるが果たしてそれ20年後に見れるか疑わしい
国際標準でなければ廃れると見たほうがいい
やっておいて損はない
戻るかどうかは二の次
一番重要なのはどんな修正をしたかということ
自分はいなくなってもコードは10年20年先の人間も目にすることがあるのだから
バージョン管理でやればいいという声もあるが果たしてそれ20年後に見れるか疑わしい
国際標準でなければ廃れると見たほうがいい
やっておいて損はない
485デフォルトの名無しさん
2015/11/26(木) 02:18:49.76ID:oAsmLq1R > バージョン管理でやればいいという声もあるが果たしてそれ20年後に見れるか疑わしい
絶対確実に見れる。
絶対確実に見れる。
486デフォルトの名無しさん
2015/11/26(木) 02:19:46.90ID:oAsmLq1R 見れるというのは読めるということ。
無駄な情報ばかりで、重要な事がわからなければ、
それは「見れない」という。
無駄な情報ばかりで、重要な事がわからなければ、
それは「見れない」という。
487デフォルトの名無しさん
2015/11/26(木) 02:23:40.75ID:oAsmLq1R 見れるというのは探し出せるということでもある。
ある事柄に関する修正は、一箇所で終わるとは限らない。
複数ファイルを同時に修正することがある。
複数のファイルに分散された、ある事柄に修正をもれなくすべて確実に
把握できる保証がなければ、それはどんな修正をしたかがわからないということ。
これはファイルのコメントなんかじゃ絶対にわかりっこない。
それはバージョン管理ツールでなければ不可能である。
ある事柄に関する修正は、一箇所で終わるとは限らない。
複数ファイルを同時に修正することがある。
複数のファイルに分散された、ある事柄に修正をもれなくすべて確実に
把握できる保証がなければ、それはどんな修正をしたかがわからないということ。
これはファイルのコメントなんかじゃ絶対にわかりっこない。
それはバージョン管理ツールでなければ不可能である。
488デフォルトの名無しさん
2015/11/26(木) 02:36:19.49ID:xxU4HAk9 20年後の人「なんだこの糞コードは・・・当時でもバージョン管理くらいあっただろ!?」
489デフォルトの名無しさん
2015/11/26(木) 02:42:53.30ID:oAsmLq1R クソコードとバージョン管理に直接の関係はない。
だが、バージョン管理を使えないような奴は
クソコードを書くというのは大体あっている。
だが、バージョン管理を使えないような奴は
クソコードを書くというのは大体あっている。
490デフォルトの名無しさん
2015/11/26(木) 06:03:03.13ID:veIBFmvN491デフォルトの名無しさん
2015/11/26(木) 07:12:00.03ID:8nlnWQy6 >>482
バージョン管理システムは手段であって、
本来はその改修モジュールの対応前、対応後のソース一式がまとまってれば文句はないんだよ。
対応後の一式があれば、それは次の対応前の一式だし。
そこをサボって1つのファイルに前後を入れるから意味がわからなくなる。
バージョン管理システムは手段であって、
本来はその改修モジュールの対応前、対応後のソース一式がまとまってれば文句はないんだよ。
対応後の一式があれば、それは次の対応前の一式だし。
そこをサボって1つのファイルに前後を入れるから意味がわからなくなる。
492デフォルトの名無しさん
2015/11/26(木) 10:10:24.97ID:oAsmLq1R >>491
小さいアプリならそれでいいだろうけど、
複数人が開発している大きなアプリだと、
1. どうやって各自の変更をまとめるのか?
2. 改修は何百、何千となるが(少なくともバグの数と機能の数以上になる)、それだけの数の「一式」を欲しいのか?
それを実現してくれる手段がバージョン管理システム
小さいアプリならそれでいいだろうけど、
複数人が開発している大きなアプリだと、
1. どうやって各自の変更をまとめるのか?
2. 改修は何百、何千となるが(少なくともバグの数と機能の数以上になる)、それだけの数の「一式」を欲しいのか?
それを実現してくれる手段がバージョン管理システム
493デフォルトの名無しさん
2015/11/26(木) 10:34:31.16ID:8nlnWQy6 >>492
大規模開発してるけど、
各自の変更自体は、そもそもがバージョン管理システム以前の仕組みとして、
変更仕様書書いてスタンプリレーして台帳化までしてるので問題ない。
それだけの数の一式、と言えども、サブシステム毎には別れるし、その中でのモジュール毎にも別れる。
あるモジュールの、rev xとrev yは持っておく、って事だよ。
出荷は、モジュール単位でも出せるけど、基本はサブシステム毎で、さらに言えばパッケージ毎の定期出荷にのせるべきだな、うちは。
サブシステムA ver 1.1は
モジュール1 rev 1
モジュール2 rev 1.1
で出来てて、
パッケージ ver 1.2は
サブシステムA ver 1.1
サブシステムB ver 1
で出来てるって台帳がある。
実現は紙で1990年代から出来てる。
それを便利にするのがバージョン管理システム。
手段じゃない。道具。
大規模開発してるけど、
各自の変更自体は、そもそもがバージョン管理システム以前の仕組みとして、
変更仕様書書いてスタンプリレーして台帳化までしてるので問題ない。
それだけの数の一式、と言えども、サブシステム毎には別れるし、その中でのモジュール毎にも別れる。
あるモジュールの、rev xとrev yは持っておく、って事だよ。
出荷は、モジュール単位でも出せるけど、基本はサブシステム毎で、さらに言えばパッケージ毎の定期出荷にのせるべきだな、うちは。
サブシステムA ver 1.1は
モジュール1 rev 1
モジュール2 rev 1.1
で出来てて、
パッケージ ver 1.2は
サブシステムA ver 1.1
サブシステムB ver 1
で出来てるって台帳がある。
実現は紙で1990年代から出来てる。
それを便利にするのがバージョン管理システム。
手段じゃない。道具。
494デフォルトの名無しさん
2015/11/26(木) 11:38:27.52ID:GuU354a3 楽したつもりで道具に使われてる奴等多すぎ
495デフォルトの名無しさん
2015/11/26(木) 12:23:36.36ID:Vr8PtFgH 言っとくが楽してるつもりは一切ないからな
496デフォルトの名無しさん
2015/11/26(木) 13:09:36.25ID:XoDybxjV497デフォルトの名無しさん
2015/11/26(木) 13:12:08.20ID:d/ZxLVhV >>493
ソフトウェア会社なのに、それをコンピュータで
実現してないってのがダメな所だよなw
自分の仕事も効率化出来ない(コンピュータ化できない)
会社に他社の仕事の効率化なんてできっこないわけさ。
それをコンピュータ化したのがバージョン管理ツールだからね。
ソフトウェア会社なのに、それをコンピュータで
実現してないってのがダメな所だよなw
自分の仕事も効率化出来ない(コンピュータ化できない)
会社に他社の仕事の効率化なんてできっこないわけさ。
それをコンピュータ化したのがバージョン管理ツールだからね。
498デフォルトの名無しさん
2015/11/26(木) 13:16:44.70ID:d/ZxLVhV >>494
> 楽したつもりで道具に使われてる奴等多すぎ
>>495
> 言っとくが楽してるつもりは一切ないからな
だよなw 同じことができる道具。それがあって、
楽できない道具を使うの(手動で管理w)が偉い!って思っちゃう。
体育会系かよw エクセル使うとズル呼ばわりする老害と一緒だ。
同じ道具なら、より効率的に早く楽にできる方がいいじゃん?
バージョン管理ツール使えば、台帳なんかで情報を調べるだけじゃなく、
その時のソースコードに戻すこともまで簡単にできる。
一番重要な事をお忘れか?
最終的に九州から北海道まで歩いていけるから問題ない?
それだけでは全然足りない。どれだけの時間がかかるまで考えてこそプロ。
> 楽したつもりで道具に使われてる奴等多すぎ
>>495
> 言っとくが楽してるつもりは一切ないからな
だよなw 同じことができる道具。それがあって、
楽できない道具を使うの(手動で管理w)が偉い!って思っちゃう。
体育会系かよw エクセル使うとズル呼ばわりする老害と一緒だ。
同じ道具なら、より効率的に早く楽にできる方がいいじゃん?
バージョン管理ツール使えば、台帳なんかで情報を調べるだけじゃなく、
その時のソースコードに戻すこともまで簡単にできる。
一番重要な事をお忘れか?
最終的に九州から北海道まで歩いていけるから問題ない?
それだけでは全然足りない。どれだけの時間がかかるまで考えてこそプロ。
499デフォルトの名無しさん
2015/11/26(木) 13:19:52.08ID:MDkVIHz0 まあ、あれだよな。
使える形で保存されてないデータは、使われない。
使える形で保存されているならば、使われる。
使われないデータをたくさんためても
自己満足程度の意味しかないわけで。
使える形で保存されてないデータは、使われない。
使える形で保存されているならば、使われる。
使われないデータをたくさんためても
自己満足程度の意味しかないわけで。
500デフォルトの名無しさん
2015/11/26(木) 13:30:59.58ID:GuU354a3 >>498
それで新幹線と飛行機と船で行けたとして、
「着くのが早いから」って理由で飛行機に乗るのはいいと思うけど
「マイル貯めるために」とか「ボンバルディアの機材こそ至高」ってのは
なんだかなあ、って話っしょ
こういうのはその時にベターなもの使えばいいの
それで新幹線と飛行機と船で行けたとして、
「着くのが早いから」って理由で飛行機に乗るのはいいと思うけど
「マイル貯めるために」とか「ボンバルディアの機材こそ至高」ってのは
なんだかなあ、って話っしょ
こういうのはその時にベターなもの使えばいいの
501デフォルトの名無しさん
2015/11/26(木) 15:44:00.39ID:MDkVIHz0 >>500
例え話はわかった。具体的にはどういうことかって話だ。
バージョン管理を使わないと凄く非効率だから
殆どの場合はバージョン管理ツールを使う方がいい。
ただしバージョン管理を使えないという呆れるほど技術力が低くて
使えないものを大量に生成し多くの無駄に時間がかかって、あとで
自分らが苦しむだけなんだが、それを許容するのならば、
手動で管理しするのがベター(笑)ってことだよね。
例え話はわかった。具体的にはどういうことかって話だ。
バージョン管理を使わないと凄く非効率だから
殆どの場合はバージョン管理ツールを使う方がいい。
ただしバージョン管理を使えないという呆れるほど技術力が低くて
使えないものを大量に生成し多くの無駄に時間がかかって、あとで
自分らが苦しむだけなんだが、それを許容するのならば、
手動で管理しするのがベター(笑)ってことだよね。
502デフォルトの名無しさん
2015/11/26(木) 15:44:29.61ID:uY2sGP6D503デフォルトの名無しさん
2015/11/26(木) 15:44:54.51ID:8nlnWQy6 >>496
>>497
何言ってるんだ…
実現自体は昔から出来ている、それを便利にするのがバージョン管理システム、と言っているだろ。うちでも使ってるよ。
台帳自体もそっから今は自動で作ってる。便利だよ。
2000年代前半は内製システムだったけど、今は普通にバージョン管理システムとチケットトラッキングシステムだよ。
そもそもリリースノートは台帳から作るからリリースノート見ればわかるし、
わからなくて台帳をなめて、それでもわからなくて、
各文書の山から検索しないとダメな事自体、発生したらヤバい。
同様に、台帳の表題をあやふやにしてると痛い目に遭う。
検索したらわかるっしょ、と適当にする奴居るけどね。
今でも、サーバ、ネットワーク全部落ちてもサポート程度は回る程度に台帳も文書も刷ってるよ。
お陰様で震災でもなんとかなった。
>>497
何言ってるんだ…
実現自体は昔から出来ている、それを便利にするのがバージョン管理システム、と言っているだろ。うちでも使ってるよ。
台帳自体もそっから今は自動で作ってる。便利だよ。
2000年代前半は内製システムだったけど、今は普通にバージョン管理システムとチケットトラッキングシステムだよ。
そもそもリリースノートは台帳から作るからリリースノート見ればわかるし、
わからなくて台帳をなめて、それでもわからなくて、
各文書の山から検索しないとダメな事自体、発生したらヤバい。
同様に、台帳の表題をあやふやにしてると痛い目に遭う。
検索したらわかるっしょ、と適当にする奴居るけどね。
今でも、サーバ、ネットワーク全部落ちてもサポート程度は回る程度に台帳も文書も刷ってるよ。
お陰様で震災でもなんとかなった。
504デフォルトの名無しさん
2015/11/26(木) 15:54:46.61ID:8ZZhqZvl >>502
使ってないだけで、使える。
移行の際に履歴を切り捨てるのは、お前の問題であって、技術の問題ではない。
他に標準化されているものなどない。
紙の管理? ソースコードのコメント? どれも標準化されてない。
今のデファクトスタンダードがgit
Gitから移行することはあっても、Gitがなくならないことは
1982年(33年前)に登場したRCSがまだ使えることからも
歴史が証明してくれている。
使ってないだけで、使える。
移行の際に履歴を切り捨てるのは、お前の問題であって、技術の問題ではない。
他に標準化されているものなどない。
紙の管理? ソースコードのコメント? どれも標準化されてない。
今のデファクトスタンダードがgit
Gitから移行することはあっても、Gitがなくならないことは
1982年(33年前)に登場したRCSがまだ使えることからも
歴史が証明してくれている。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「おこめ券は米以外の食品も買える。効果的な活用を」 地元で農水相 [山形県] [少考さん★]
- 【速報】「女芸人No.1決定戦 THE W」9代目女王にニッチェ! 7年ぶり3度目で悲願の優勝 [牛丼★]
- 【芸能】『女芸人No.1決定戦THE W』 粗品が最後にバッサリ「優勝賞金1000万円にしてはレベル低い大会」 [冬月記者★]
- 【沖縄】開業4ヵ月でこれは…“国民の税金”投入の『ジャングリア沖縄』で見た衝撃的な光景と、モチベーションが低い一部スタッフの現状 [ぐれ★]
- 今年の流行語大賞 『働いて働いて働いてまいります』が受賞で不快感… 過労自殺の遺族らが会見「家族にむち打つような行為だ」 [冬月記者★]
- 【東京】「家族で話題にして」 “世田谷一家殺害から25年 警視庁が呼びかけ [煮卵★]
- 焼き芋を輪切りにして天ぷらにすると美味しいよ
- プロレスラーってロープに振ると走って戻ってくるけど
- お前らお嫁さん見つけた?
- なんでお前らってスピリチュアル系の話嫌いなの?
- クズ「勉強頑張らなかった奴は一生DQNと一緒に肉体労働しろ」☚勉強頑張れるのも環境と巡り合わせなんだが? [783475554]
- 薄いカーテンだけ閉めて部屋の灯りを消すと凄くいい
