今までみた絶望的なソースコード [転載禁止]©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/05/30(土) 23:08:00.65ID:GbYkPqTc
コメントが無く、関数・変数の名前がいい加減な文字列操作関数
2015/05/31(日) 13:15:34.98ID:aaI4+yOw
正規表現なら何をやりたいか、書いて欲しい。みんながみんな頭の中で正規表現できるとは限らんので。
2015/05/31(日) 15:41:07.63ID:vCKs7HZr
>>182
どこの事例?

>>180
損害保証なんてまあ関係ない
そもそも国内でそんな事態になるケースなんて滅多にない
187デフォルトの名無しさん
垢版 |
2015/05/31(日) 17:11:33.36ID:nCZZum25
>>186
jspがなんだと思ってんだよ?
2015/05/31(日) 17:30:33.86ID:vCKs7HZr
>>187
JSP が何かを知りたかったら Wikipedia でも見とけよ
189デフォルトの名無しさん
垢版 |
2015/05/31(日) 17:38:39.32ID:LTxgNM08
JSPだとむしろオープンソースと絡むぞ。

ASPと言っておけばいいものを。
2015/06/01(月) 19:42:40.39ID:e+Q3qVuq
jsp?ずいぶんとダサいコードを書いてるのね。
2015/06/02(火) 21:01:27.10ID:80AN9G/c
>>190
帯をパクるな。キモヲタってバレバレだぞw

関数型プログラミングに目覚めた! IQ145の女子高校生の先輩から受けた特訓5日間
http://www.amazon.co.jp/gp/product/4798043761
2015/06/02(火) 21:11:09.51ID:y/vvSKhg
排水溝の髪の毛なんて持ってくんな
汚い
193デフォルトの名無しさん
垢版 |
2015/06/03(水) 00:18:56.27ID:fWOFbe2S
>>191
なかなかの低評価ですね。
194東京女子医科大学病院プロポフォール大量投与
垢版 |
2015/06/08(月) 23:39:32.28ID:Fqp3awmG
マスゴミ・売国奴・医療業界が隠そうとする真実---------------------安楽死---------------------奴隷に勝手に死なれては困る

安楽死旅行企画が大人気|竹田恒泰チャンネル

https://www.youtube.com/watch?v=XmP1TRsAe88


武田邦彦:安楽死と大麻、そして売春・・・オランダに学ぶ

https://www.youtube.com/watch?v=nWV8YOY39tw


安楽死党

https://www.youtube.com/watch?v=8nU2UaSlGx0

自殺は後遺症が怖い!だから-----------------------------------安楽死制度-------------------------------------安心して生きるために
2015/06/15(月) 16:16:30.52ID:APmJNnuF
安楽死って、ただの自殺教唆。
2015/06/25(木) 08:29:08.25ID:3LKwgapt
アングラ牧場?
2015/06/25(木) 08:34:36.81ID:ni30MNzk
話題のニトリは絶望するほどじゃないけど面白い
2015/06/25(木) 14:09:47.98ID:0TJc5kfL
俺もっと酷い所にいたことあるよ
こんなの修羅場でも何でもない(奴隷自慢

が始まると思っていたのにがっかりだぜお前ら
2015/06/29(月) 10:01:52.20ID:uRgKjkQ2
そういうのはプログラマー板じゃね?
2015/06/29(月) 13:05:59.79ID:ZG8WYZZ5
プログラ魔?(´・ω・`)
2015/06/29(月) 13:14:48.97ID:QITtNM5B
プロ グラマー
2015/07/04(土) 21:24:58.98ID:i6tiuRGk
スパゲッティでもなんでもない、超綺麗なコードなんだけど
引き継いだプロジェクトのソースファイルがすべて空だったことがあったな
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
柔軟に環境に合わせられるのがプロ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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