今までみた絶望的なソースコード [転載禁止]©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/07/05(日) 00:11:02.21ID:SYjfN7FW
>>202
「 不射之射 」ってやつかな?(すっとぼけ)
2015/07/18(土) 16:41:57.48ID:Elmadk8a
他人の書いたソースを解析する時は
全部まとめて1ファイルにした方が検索で一発で飛べて分かりやすい
2015/07/18(土) 16:49:11.39ID:ClZy0R3/
串刺し検索できないとか無能すぎる
2015/07/18(土) 17:07:50.05ID:Elmadk8a
会社PCでメモ帳しか使えないからな
2015/07/18(土) 17:33:22.11ID:ClZy0R3/
そんなPCでプログラミングするの?どんな糞企業だろうな
2015/07/18(土) 17:33:36.46ID:kyfBrlqO
Windows なら findstr
Linux なら grep
2015/07/19(日) 15:10:05.90ID:05eNFjFO
とりあえず話はソースをEclipse CDTにぶち込んでからだ
2015/07/19(日) 16:02:36.84ID:A8XocGVA
メモリが足らなくてEclipseが起動しないでござる
2015/07/19(日) 17:15:04.84ID:hehkSm21
emacs使えばいいんじゃね
それすら動かないならedでも使っとけ
2015/07/19(日) 17:51:34.68ID:yGfbtuav
メモリ512MBのatomなんだすまない
2015/07/20(月) 07:30:50.84ID:7UJk40NA
窓から投げ捨てろ
2015/07/20(月) 10:15:18.72ID:gcbmkQzq
鯖用にいいだろ
512もあればnginx+MariaDBでwordpressでもできるでしょ
215デフォルトの名無しさん
垢版 |
2015/07/23(木) 11:22:55.43ID:Jym5rlVM
>>212
9800円のWindows8タブレットですら1GBは積んでる
2015/07/23(木) 13:25:18.90ID:mmfWdiQl
atom で余分な部品をカットして省電力ならそれが正しい
2015/07/23(木) 13:44:48.25ID:WUAvzM35
用途の選択ミス
2015/07/23(木) 22:37:03.81ID:DlgtK7Z2
メモリ2GBの安タブにBTのキーボードとマウスを繋げりゃそこそこ使える
2015/07/24(金) 00:31:36.00ID:epV3Dcoh
>>218
中古のNexus7にUbuntuいれてそれやると最強
2015/07/24(金) 07:28:40.25ID:30gYvqyq
SDカード使える機種でオススメある?
2015/07/25(土) 10:07:29.97ID:fFQ7wKxw
jQueryのソースが見ると吐気する。javascriptの方がよほど簡単と思えるのは子供の頃からプログラムしてるせい?
ほんとにあれノンプログラマは見て分かりやすいの?
2015/07/25(土) 11:53:37.22ID:AbBoos+r
> jQuery(を使ったサイト)のソースが見ると吐気する。
> (プレーンな)javascriptの方がよほど簡単と思えるのは子供の頃からプログラムしてるせい?
> ほんとにあれノンプログラマは見て分かりやすいの?

で、あってる?
もちろんjQueryを持ち上げるための方便か
全体でせいぜい100行、かつテストなしのコード
しか書いたことがない人が言ってるんじゃないかな
数行で目的を注入するという目的に限れば確かに容易い
2015/07/25(土) 18:23:12.23ID:A3Ss5+fR
ノンプログラマがまともにjQueryなんて使うの?
プログラマの俺はjQueryで助かってるけど
2015/07/25(土) 20:20:37.51ID:Q65ZCebZ
>>221
病院に行ったほうがいいよw

jQueryのソースコードは機能毎に小さくモジュール化されていて、
長いファイルでも500行前後ぐらいしかない。
ほとんどは100行前後。

.jshintrcや.jscsrcもあるから
当然品質も保たれていると考えていいだろう。
当然テストコードも有る。

良いプロジェクトの見本のようなもんなんだが。
225デフォルトの名無しさん
垢版 |
2015/07/25(土) 20:54:47.06ID:o6XQJ+h/
>>224
お前だろ病院行った方がいいのは。
誰がjqueryの中身の話なんてしてんだよ?
2015/07/25(土) 20:55:34.26ID:paoVPCKX
jQueryのソースが見ると
jQueryのソースが見ると
jQueryのソースが見ると
jQueryのソースが見ると 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
2015/07/25(土) 20:57:56.19ID:5BpE4UJW
構文の話してるのに何行あるかなんて始めて馬鹿じゃないの?
いきなり病院いったほうがいいとかキチガイでしょ?
2015/07/25(土) 21:02:26.92ID:paoVPCKX
構文? jQueryはJavaScriptの構文そのまんまなんだが?

トランスパイラと言って、別の構文から
JavaScriptに変換する仕組みが今は流行ってるが
jQueryはそんなもの使わない純粋なJavaScript

どこか変な構文でもあったか?
その構文を御前が知らないだけでは?
2015/07/25(土) 21:04:51.82ID:M9EIeKKB
ソースコードのことより自分の日本語でも見直しとけってのスカタン
2015/07/25(土) 21:08:14.29ID:M9EIeKKB
いや、失礼した
「子供の頃からプログラミングをしてるせい」(で言語能力が的に育たなかった)
って書いてあったね
2015/07/25(土) 21:09:32.45ID:paoVPCKX
子供の頃の知識で止まってるんだろーなーw
どうせBASICだろう
232デフォルトの名無しさん
垢版 |
2015/07/25(土) 21:16:42.87ID:aUQYbDBF
質問主の言葉が足りないってのは分かるけどー、
読んだら分かるよねー。
いわゆる信者っていうの?
批判的なことに条件反射しちゃうんだよね。分かる分かるー
っていーかぁ、そもそもスレチだしw?
両方消えてw
2015/07/25(土) 21:20:01.43ID:paoVPCKX
質問主の言葉が足りないんだろ。
それが全てだろ。
何言ってるんだか。
234デフォルトの名無しさん
垢版 |
2015/07/25(土) 21:23:52.55ID:aUQYbDBF
プログラマーって定義されてないと怒るよねwww
10言わなきゃわかんねーのかw小学生かwww
2015/07/25(土) 21:59:39.64ID:paoVPCKX
>>234
言葉が足りないのなら補えばいいが、
言葉が間違ってるからな。

お前Underscore.jsのソースコード見たこと有る?
この質問に答えてみるといいよ。
2015/07/25(土) 23:47:54.23ID:BtkcRlE5
用語じゃないけどさ、
前に似たようなjQuery信者が煽ってたのでソース読んだが、
同じ変数に別の意味の再代入とか平気でしててはっきり言って汚かったよ

ソースすべてを読んだわけではないが、その部分出したら綺麗とのたまってたね…
こういうのとは絶対一緒に仕事したくないわ
2015/07/25(土) 23:49:07.03ID:BtkcRlE5
用語 -> 擁護
238デフォルトの名無しさん
垢版 |
2015/07/25(土) 23:58:07.11ID:o6XQJ+h/
>>235
>>222
が正しい文に直してくれているし、思い込みをしなければ、正しい意図を紐解けるというのはすでに立証されているんだがw

だから、質問がクソであり、それを思い込みで解釈したやつもクソだなと思うんだけど、俺にどう考えを直して欲しいのかなwww?
2015/07/26(日) 00:46:52.14ID:Nu2ySp1+
webアプリの伝票を表示する画面のHTMLで、テーブルタグでエクセル方眼紙作ってあった
列とか必要以上に多くて無駄にセルの結合してあった
240デフォルトの名無しさん
垢版 |
2015/07/26(日) 01:31:08.71ID:Q7ZjjhPq
方眼紙便利なのに、なぜ方眼紙アプリが売っていないのか。
2015/07/26(日) 08:33:31.95ID:Lmm8STAE
>>236
どのファイルだよ?
言ってみ。
2015/07/26(日) 14:59:14.63ID:p/433SX/
>>241
https://github.com/jquery/jquery/blob/a644101ed04d0beacea864ce805e0c4f86ba1cd1/src/core/access.js
bulkの型がめちゃくちゃ
後ろでは関数として呼び出し、別の意味になってる

https://github.com/jquery/jquery/blob/master/src/event.js
tmpなどの使い回し
変数宣言を先に行う規定があるのか、全体的に読みにくい
2015/07/26(日) 15:22:58.35ID:p/433SX/
他も見たが、基本的に短い変数名ばかりだし、やっぱり読みにくいよ
決してvimほど汚くはないが、これを綺麗とか言っちゃうのは信者だけ
2015/07/26(日) 18:16:05.04ID:7EBqSyeY
短い変数名だから読みにくいっていうのは
間違った考え方だな。

スコープが十分小さいなら
長い名前にする必要がない。
2015/07/26(日) 18:27:45.85ID:7EBqSyeY
>>242
> bulkの型がめちゃくちゃ

なるほど。

君は動的型付け言語における
オーバーロードの書き方を知らないようだ。

オーバーロードっていうのはね。
関数の引数(シグネチャ)が違う同じ名前の関数を複数作成できる機能
呼び出すときに、引数から適切な関数を判断する。

だけど動的型付け言語ではそれが出来ないから、
関数の内部で、引数が省略されたかどうかやその型を見て処理を変える。

このコードはそれをやってるんだよ。
2015/07/26(日) 18:57:52.47ID:p/433SX/
>>245
反論の内容には同意するが、ほぼ無関係だな

まず問題の変数は引数ではないので、根本的に間違えてる
宣言時にbooleanで初期化した後、分岐して関数入れてる

また、短いスコープであれば問題にならない事が多いのも同意するが、
特定ブロックで使う物を、関数全体スコープで宣言してるので該当しないな

何より、オーバーロードをしようが、通常は実装は汚くはならない
普通は最初に適切に分けるからな
2015/07/26(日) 19:06:24.32ID:7EBqSyeY
> まず問題の変数は引数ではないので、根本的に間違えてる

引数でないから間違えというのは短絡的だな。
コード見ればわかるようにkey(引数)がnullかどうかによる処理だ

> 特定ブロックで使う物を、関数全体スコープで宣言してるので該当しないな
JavaScriptにブロックはない。だからスコープを重視するならば
先頭に書くのが正しい。(俺はスコープ無視するけどなw)

> 普通は最初に適切に分けるからな
最初に分けるのが必ずしも正しい訳じゃない。

コード短いんだし、直してみれば?
2015/07/26(日) 19:08:06.07ID:7EBqSyeY
> JavaScriptにブロックはない。
一応訂正しておくか、ECMAScript5の範囲においてはだ。
2015/07/26(日) 19:33:15.94ID:p/433SX/
>>247
>引数でないから間違えというのは短絡的だな。
>コード見ればわかるようにkey(引数)がnullかどうかによる処理だ
だから何なんだとしか
引数でないのだから、オーバーロードの実装のためという言い訳はできない
他の型を意図的に代入し、使い回した時点で汚い

>JavaScriptにブロックはない
function、if、switch...ときちんとブロックはある上に、
スコープもライフタイムも違う

なんか前絡んできた人と同じ人っぽいからもう止めるよ
不毛だし
2015/07/26(日) 19:49:23.12ID:EHWerROz
bulkの使いまわしはコミットログを見たけど理由がよくわからん

先頭にvarを固めているのはhoistingを理解していたからだろう
2015/07/26(日) 20:21:13.01ID:7EBqSyeY
>>249
ん? 帰れ帰れw
2015/07/26(日) 20:22:00.95ID:7EBqSyeY
>>250
> 先頭にvarを固めているのはhoistingを理解していたからだろう

この人は、hoistingを理解できないんだろうねw
253デフォルトの名無しさん
垢版 |
2015/07/26(日) 20:26:36.68ID:k1EUM6QH
なんでJQueryの実装をそんなにマンセーしたいのか理解できない。
ライブラリなんて小規模で作るもんだから、読みやすさという基準は自分の主観で決めるもんだし。
後付けの解釈を止めろよ。
2015/07/26(日) 20:59:57.20ID:7EBqSyeY
逆でしょ?
読みやすさという基準は自分の主観で決めるもんなのに
jQueryの実装をそんなに馬鹿にしたいのか理解できない。
2015/07/26(日) 21:26:25.41ID:p/433SX/
>>250
hoistingはコード規約で予防しているという事かな?
それでも、宣言はブロックの先頭と制約するだけで十分な気がする
関数スコープに広げて宣言する理由がわからない
2015/07/26(日) 21:31:57.10ID:p/433SX/
ああ、意味がわかった
関数スコープで使用していた上に、ブロック内でも使用した場合か
それならバグになる可能性あるな
2015/07/29(水) 01:58:34.13ID:CRqVMe5R
やっぱVBの配列(0)で1要素あるってバグの元だろ
引継いだコード前任者が全員間違えたまま使ってて戦慄した
258デフォルトの名無しさん
垢版 |
2015/07/29(水) 09:27:40.97ID:7C0TLIvw
まあ、多い分にはいいんじゃないの?
行番号付きだった頃から配列は1要素を予備とすることが多かったからねー。
C とかから入ると気になるだろうけど。
自分も今は気になるけどw
2015/07/30(木) 11:48:36.63ID:kCCSv6BW
DBに予備項目を作って空を保つのならわかるけど
配列の予備って意味若ランナー
2015/07/30(木) 21:27:47.71ID:kTMnRdAz
配列変数を空の状態またはその逆にするのが面倒なので0番目は使わずに取っておく
2015/07/31(金) 16:17:53.20ID:Dkg4afbG
動的配列の扱いが内蔵とVariantに代入する配列(Variant配列ではなく)で挙動が違うから
Variantで統一するとvbsと扱い同じにできて捗る
2015/07/31(金) 21:11:17.11ID:D+nD3a7O
絶望的なプログラマたち
2015/07/31(金) 21:48:20.19ID:17HtGFaS
main(){
int* p=1;
...
2015/08/01(土) 14:23:13.10ID:aojbSuUF
*(int*)0=0;
2015/08/01(土) 14:44:38.33ID:zTfC3ItF
printf("AとBの積は593です");
もうアホかとなんのためのCなんだか
2015/08/01(土) 19:29:40.69ID:KBiDhOrm
593 は素数なんだが‥
2015/08/01(土) 21:31:08.62ID:cZ9y3hcR
そうすっうすね。
2015/08/01(土) 21:39:39.36ID:5DNs6h6K
1*593
2015/08/01(土) 22:19:25.72ID:zTfC3ItF
>>266
掛け算作ってみろって言ったらこれが出てきた
270デフォルトの名無しさん
垢版 |
2015/08/02(日) 00:25:01.79ID:2p0cp8/y
>>269
最適化出来てる
100点
2015/08/02(日) 01:45:42.48ID:MF9TQU9s
掛け算作ってみろってのもおかしな物言いだな
そんなコミュ力だからおかしな物が出てくる
2015/08/02(日) 02:10:40.49ID:u7Ju2wRn
>>270
あれだと最適化しないコード作るほうが頭いるだろ
一文字づつあたらしいプロセス作って動かしてくとか?
2015/08/02(日) 07:33:48.36ID:AHQOj1TU
>>269
模範解答じゃん
2015/08/02(日) 17:23:58.64ID:MF9TQU9s
絶望って程でもない
2015/08/02(日) 18:37:05.66ID:sH3CMGQ2
無駄な計算してないとか優秀賞だな
2015/08/31(月) 12:38:09.95ID:B5sJg2ZW
>>12
なんで先頭じゃダメなの?
蟹飯本では当たり前のように先頭でまとめて宣言してるからそれに倣って先頭で宣言してるけど
2015/08/31(月) 13:10:34.00ID:KuTL4jkJ
>>276
変数は使用する直前で初期化して使うべきだから
初期化と宣言が別だと必ず未初期化で使うバグが出る
また関数が長く分岐が多くなると初期化されてるか判断が難しくなる
変数のスコープは小さければ小さいほどいい
関数先頭に宣言するのは昔のC言語の制約だったと記憶してるが今は上記理由からやめるべき
2015/08/31(月) 15:56:13.40ID:UXpAKMEr
>>277
なるほどサンクス
2015/09/01(火) 20:57:53.90ID:D3JacxmQ
>>277
どこの説?
2015/09/12(土) 03:17:33.09ID:k25bT+vJ
for ループから条件でgotoでforの外に飛んで帰ってもこないプログラム
281デフォルトの名無しさん
垢版 |
2015/09/12(土) 04:01:54.66ID:XAqQ9sMD
それ普通ですが
breakがまさにそういう動作だし、breakはgotoの一種と言われているわけだが
二重のforを一気に抜けるのにgoto使うとか普通のテクニック
return出来るならそっちのがいいけど

むしろforからgotoで抜けてまたgotoで戻ってくる方が恐ろしいが
そういうサブルーチン的な動作にgoto使われるとかなり鬱陶しいし
それでgotoが禁止されたわけだが
2015/09/12(土) 08:00:00.87ID:TErXHjBS
for使ってるの?甘いね
プロは全部gotoしか使わないよ
2015/09/12(土) 09:09:13.39ID:lTmP7o65
柔軟に環境に合わせられるのがプロ
284デフォルトの名無しさん
垢版 |
2015/09/12(土) 09:59:18.43ID:o99yCw3m
真のプロには、製品の方が合わせてくる。

企画原案に意見を求められるし、監修を頼まれる。
2015/09/12(土) 10:01:01.89ID:/tgR015i
>>284
それで真のプロのプログラマだと
どうなるわけ?
286デフォルトの名無しさん
垢版 |
2015/09/12(土) 10:11:11.52ID:o99yCw3m
>>285
その問題については既に解いてあるんだが、2chは数式を張り付けられないからなあ。
2015/09/12(土) 10:11:50.87ID:/tgR015i
>>286
つまり解いてないってことかw
2015/09/12(土) 10:56:04.07ID:8SKz5ytR
>>286
ほれ
http://formula.s21g.com/
2015/09/12(土) 11:30:03.64ID:LQnjc3KY
一休「虎が屏風から出てくれば捕まえられるのにな〜ああ〜残念だなあ〜」
将軍「出したよ」
って状況?
2015/09/12(土) 11:38:50.74ID:Xol1TNVu
>>285
達人ともなれば、むしろタンスが小指に恐れをなし、というアレだよ。
2015/09/12(土) 12:07:10.77ID:1pxDFhfx
>>286
zipでくれ
2015/09/12(土) 18:16:31.99ID:8SKz5ytR
>>289
https://www.youtube.com/watch?v=sXtYIgqKobc
2015/09/12(土) 22:51:55.44ID:QkMrh2wn
971 名前:名無しさん@七周年[] 投稿日:2006/11/11(土) 00:56:10 ID:M8+ahUZV0
自称スーパープログラマー某

強烈加齢臭
メール見ない メール無視
ドキュメント見ない ドキュメント無視
説明聞かない 説明無視
話聞かない 話無視
ガム→むっちゃー むっちゃー むっちゃー むっちゃー
煎餅→バリバリバリバリバリバリ
菓子パン→モグモグモグモグモグモグモグモグモグモグ
カップアイス→むっちゃー むっちゃー ペロペロペロペロ

フロアすべてに響き渡る ばかでかいくしゃみ 当然手でおさえない
半径10mで耳鳴り、ひどいと頭痛誘発

異音と異振動
ドスーン!ドスーン!ドカーン!ドカーン!
バコーン!バコーン!ズドン!  ズドン!
机が近いとマウスポインターが飛ぶ
誤操作誘発
書類だしたりしまうだけでドカンドカン

口と鼻から異音
ふんっっ
ふんっーーーーー  
マジでうっとおしい30秒ごと

備品破壊 貸与P C 破壊 他人のもの破壊

奴の作ったスクリプトとプログラムは使えない
バグりすぎ
2015/09/13(日) 00:10:23.04ID:xBi8Z0XU
ストレス貯まるなそれは
295デフォルトの名無しさん
垢版 |
2015/10/16(金) 11:13:43.44ID:MgVZXFFO
結論:そんな奴はいない
296デフォルトの名無しさん
垢版 |
2015/10/17(土) 10:29:18.04ID:y7npm2M7
コメントが一切なくて、ものすこく複雑な処理をやっている。
2015/10/18(日) 01:32:01.64ID:dIyeGV/1
ものすごく」の程度は人によるからなあ
複雑そうに見えてイディオム使ってるだけのもあるし
自動生成された物を見て複雑だなあって思ってる場合もあるし
2015/10/18(日) 08:42:48.35ID:hNO3eRm0
他人のコード見てコメント無いだの少ないだの騒ぐ奴
本人はクソポエムみたいなコメント書く上にコメントの整備はしないし何がしたいのやら
2015/10/18(日) 22:58:23.93ID:1iLNdMOK
>>298
お前の環境にはそんな奴しか居ないってだけ。
2015/10/19(月) 03:05:21.12ID:KzhVhXFy
更新履歴すら書くの忘れる
面倒というレベルじゃなく、忘れる
2015/10/19(月) 12:29:11.07ID:rwl2uo8/
ああー俺もコメントポエム書きてえぇーーー
本当はポエマーなんだよな俺
俺だってソースにポエム埋め込みてーんだよ!
2015/10/19(月) 13:51:30.68ID:taFAn/tB
>>300
最近思うが、更新履歴、コメントはいらないと思う。
その代わりバージョン管理だけは、キッチリ機械的にやって欲しい。

更新履歴は忘れる奴が必ずいるから、更新履歴で探すと見つからずにハマる。
コメントもプログラマの現状の理解と感情で書いてあるので、変な先入観で見てしまいハマる時がある。

自分で書いていても、10年位経つと何書いているか解らない。
また、自分の名前が書いてあると、忘れた頃に質問が来る。

更新履歴、コメントは百害あって一利無しだと思う。
2015/10/20(火) 10:03:44.13ID:ty6VD2oQ
>>298
うちにも居るわ、コメント赤ペン先生
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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