- 1 名前:デフォルトの名無しさん [2015/04/17(金) 23:00:30.63 ID:55USvuES.net]
- 今井氏:ソースコード公開は、社長のティム(*2)の意向です。彼はバリバリのプログラマーで、初期の「Unreal Engine 1」を
1人で書いた人ですが、若い時に雑誌に載っていたコードを書き写して勉強したそうです。それで今の若い人にも、プロのソー コードとはこういうものだというのを見せたいという願いがあって、ソースコードを公開しています。本当に今のゲーム業界の 事情を憂いてる1人だと思います。(*2)Epic Gamesの創業者兼CEOであるTim Sweeney氏 出村氏:読みやすいコードですよ。「C++」というのは、黒魔術(高度な計算)が多くなりがちな言語ですが、 そういうこともなく、すっきりしていて目的の機能も探しやすい。解読しやすいコードなので、確かにお手本になると思います。 僕は初代のゲームボーイからプレイステーション 2の頃くらいまでゲームプログラマーだったのですが、ゲームプログラミングでは 必ず数学が出てきます。行列とか三角関数とか。もちろん今でもまったく不要になったわけではありませんが、そういう知識の 重要性は薄れてきていると思います。「Unreal Engine」では特にそうです。 game.watch.impress.co.jp/docs/interview/20150417_698349.html 初級者から中級者へ昇格する時期は、ほぼどのようなソースコードでも読める程度にプログラミング言語に精通し、 また偉いプログラマーの提唱したデザインパターンも一通り理解したくらいの時期である。 すると、プログラミング言語の持つあらゆる機能と、偉いプログラマーの提唱するあらゆる技術を使わねばならない という思い込みが発生する。そしてHello Worldにまで崇高なオブジェクト指向や壮大なデザインパターンを 適用しようとしだすのである。 その結果、 * 大量のクラス * 迷路のような変数渡し * 底なしに深いネスト などといった凄いものが生まれる。また、条件分岐に三項演算子を乱用するなどの症状も多く見受けられる。 最終的には第三者にとって読みにくい保守性の悪いスパゲッティコードが生成されることになる。 monobook.org/wiki/%E4%B8%AD%E7%B4%9A%E8%80%85%E7%97%85
- 236 名前:デフォルトの名無しさん mailto:sage [2015/07/25(土) 23:47:54.23 ID:BtkcRlE5.net]
- 用語じゃないけどさ、
前に似たようなjQuery信者が煽ってたのでソース読んだが、 同じ変数に別の意味の再代入とか平気でしててはっきり言って汚かったよ ソースすべてを読んだわけではないが、その部分出したら綺麗とのたまってたね… こういうのとは絶対一緒に仕事したくないわ
- 237 名前:デフォルトの名無しさん mailto:sage [2015/07/25(土) 23:49:07.03 ID:BtkcRlE5.net]
- 用語 -> 擁護
- 238 名前:デフォルトの名無しさん [2015/07/25(土) 23:58:07.11 ID:o6XQJ+h/.net]
- >>235
>>222 が正しい文に直してくれているし、思い込みをしなければ、正しい意図を紐解けるというのはすでに立証されているんだがw だから、質問がクソであり、それを思い込みで解釈したやつもクソだなと思うんだけど、俺にどう考えを直して欲しいのかなwww?
- 239 名前:デフォルトの名無しさん mailto:sage [2015/07/26(日) 00:46:52.14 ID:Nu2ySp1+.net]
- webアプリの伝票を表示する画面のHTMLで、テーブルタグでエクセル方眼紙作ってあった
列とか必要以上に多くて無駄にセルの結合してあった
- 240 名前:デフォルトの名無しさん [2015/07/26(日) 01:31:08.71 ID:Q7ZjjhPq.net]
- 方眼紙便利なのに、なぜ方眼紙アプリが売っていないのか。
- 241 名前:デフォルトの名無しさん mailto:sage [2015/07/26(日) 08:33:31.95 ID:Lmm8STAE.net]
- >>236
どのファイルだよ? 言ってみ。
- 242 名前:デフォルトの名無しさん mailto:sage [2015/07/26(日) 14:59:14.63 ID:p/433SX/.net]
- >>241
https://github.com/jquery/jquery/blob/a644101ed04d0beacea864ce805e0c4f86ba1cd1/src/core/access.js bulkの型がめちゃくちゃ 後ろでは関数として呼び出し、別の意味になってる https://github.com/jquery/jquery/blob/master/src/event.js tmpなどの使い回し 変数宣言を先に行う規定があるのか、全体的に読みにくい
- 243 名前:デフォルトの名無しさん mailto:sage [2015/07/26(日) 15:22:58.35 ID:p/433SX/.net]
- 他も見たが、基本的に短い変数名ばかりだし、やっぱり読みにくいよ
決してvimほど汚くはないが、これを綺麗とか言っちゃうのは信者だけ
- 244 名前:デフォルトの名無しさん mailto:sage [2015/07/26(日) 18:16:05.04 ID:7EBqSyeY.net]
- 短い変数名だから読みにくいっていうのは
間違った考え方だな。 スコープが十分小さいなら 長い名前にする必要がない。
- 245 名前:デフォルトの名無しさん mailto:sage [2015/07/26(日) 18:27:45.85 ID:7EBqSyeY.net]
- >>242
> bulkの型がめちゃくちゃ なるほど。 君は動的型付け言語における オーバーロードの書き方を知らないようだ。 オーバーロードっていうのはね。 関数の引数(シグネチャ)が違う同じ名前の関数を複数作成できる機能 呼び出すときに、引数から適切な関数を判断する。 だけど動的型付け言語ではそれが出来ないから、 関数の内部で、引数が省略されたかどうかやその型を見て処理を変える。 このコードはそれをやってるんだよ。
- 246 名前:デフォルトの名無しさん mailto:sage [2015/07/26(日) 18:57:52.47 ID:p/433SX/.net]
- >>245
反論の内容には同意するが、ほぼ無関係だな まず問題の変数は引数ではないので、根本的に間違えてる 宣言時にbooleanで初期化した後、分岐して関数入れてる また、短いスコープであれば問題にならない事が多いのも同意するが、 特定ブロックで使う物を、関数全体スコープで宣言してるので該当しないな 何より、オーバーロードをしようが、通常は実装は汚くはならない 普通は最初に適切に分けるからな
- 247 名前:デフォルトの名無しさん mailto:sage [2015/07/26(日) 19:06:24.32 ID:7EBqSyeY.net]
- > まず問題の変数は引数ではないので、根本的に間違えてる
引数でないから間違えというのは短絡的だな。 コード見ればわかるようにkey(引数)がnullかどうかによる処理だ > 特定ブロックで使う物を、関数全体スコープで宣言してるので該当しないな JavaScriptにブロックはない。だからスコープを重視するならば 先頭に書くのが正しい。(俺はスコープ無視するけどなw) > 普通は最初に適切に分けるからな 最初に分けるのが必ずしも正しい訳じゃない。 コード短いんだし、直してみれば?
- 248 名前:デフォルトの名無しさん mailto:sage [2015/07/26(日) 19:08:06.07 ID:7EBqSyeY.net]
- > JavaScriptにブロックはない。
一応訂正しておくか、ECMAScript5の範囲においてはだ。
- 249 名前:デフォルトの名無しさん mailto:sage [2015/07/26(日) 19:33:15.94 ID:p/433SX/.net]
- >>247
>引数でないから間違えというのは短絡的だな。 >コード見ればわかるようにkey(引数)がnullかどうかによる処理だ だから何なんだとしか 引数でないのだから、オーバーロードの実装のためという言い訳はできない 他の型を意図的に代入し、使い回した時点で汚い >JavaScriptにブロックはない function、if、switch...ときちんとブロックはある上に、 スコープもライフタイムも違う なんか前絡んできた人と同じ人っぽいからもう止めるよ 不毛だし
- 250 名前:デフォルトの名無しさん mailto:sage [2015/07/26(日) 19:49:23.12 ID:EHWerROz.net]
- bulkの使いまわしはコミットログを見たけど理由がよくわからん
先頭にvarを固めているのはhoistingを理解していたからだろう
- 251 名前:デフォルトの名無しさん mailto:sage [2015/07/26(日) 20:21:13.01 ID:7EBqSyeY.net]
- >>249
ん? 帰れ帰れw
- 252 名前:デフォルトの名無しさん mailto:sage [2015/07/26(日) 20:22:00.95 ID:7EBqSyeY.net]
- >>250
> 先頭にvarを固めているのはhoistingを理解していたからだろう この人は、hoistingを理解できないんだろうねw
- 253 名前:デフォルトの名無しさん [2015/07/26(日) 20:26:36.68 ID:k1EUM6QH.net]
- なんでJQueryの実装をそんなにマンセーしたいのか理解できない。
ライブラリなんて小規模で作るもんだから、読みやすさという基準は自分の主観で決めるもんだし。 後付けの解釈を止めろよ。
- 254 名前:デフォルトの名無しさん mailto:sage [2015/07/26(日) 20:59:57.20 ID:7EBqSyeY.net]
- 逆でしょ?
読みやすさという基準は自分の主観で決めるもんなのに jQueryの実装をそんなに馬鹿にしたいのか理解できない。
- 255 名前:デフォルトの名無しさん mailto:sage [2015/07/26(日) 21:26:25.41 ID:p/433SX/.net]
- >>250
hoistingはコード規約で予防しているという事かな? それでも、宣言はブロックの先頭と制約するだけで十分な気がする 関数スコープに広げて宣言する理由がわからない
- 256 名前:デフォルトの名無しさん mailto:sage [2015/07/26(日) 21:31:57.10 ID:p/433SX/.net]
- ああ、意味がわかった
関数スコープで使用していた上に、ブロック内でも使用した場合か それならバグになる可能性あるな
- 257 名前:デフォルトの名無しさん mailto:sage [2015/07/29(水) 01:58:34.13 ID:CRqVMe5R.net]
- やっぱVBの配列(0)で1要素あるってバグの元だろ
引継いだコード前任者が全員間違えたまま使ってて戦慄した
- 258 名前:デフォルトの名無しさん [2015/07/29(水) 09:27:40.97 ID:7C0TLIvw.net]
- まあ、多い分にはいいんじゃないの?
行番号付きだった頃から配列は1要素を予備とすることが多かったからねー。 C とかから入ると気になるだろうけど。 自分も今は気になるけどw
- 259 名前:デフォルトの名無しさん mailto:sage [2015/07/30(木) 11:48:36.63 ID:kCCSv6BW.net]
- DBに予備項目を作って空を保つのならわかるけど
配列の予備って意味若ランナー
- 260 名前:デフォルトの名無しさん mailto:sage [2015/07/30(木) 21:27:47.71 ID:kTMnRdAz.net]
- 配列変数を空の状態またはその逆にするのが面倒なので0番目は使わずに取っておく
- 261 名前:デフォルトの名無しさん mailto:sage [2015/07/31(金) 16:17:53.20 ID:Dkg4afbG.net]
- 動的配列の扱いが内蔵とVariantに代入する配列(Variant配列ではなく)で挙動が違うから
Variantで統一するとvbsと扱い同じにできて捗る
- 262 名前:デフォルトの名無しさん mailto:sage [2015/07/31(金) 21:11:17.11 ID:D+nD3a7O.net]
- 絶望的なプログラマたち
- 263 名前:デフォルトの名無しさん mailto:sage [2015/07/31(金) 21:48:20.19 ID:17HtGFaS.net]
- main(){
int* p=1; ...
- 264 名前:群馬大学病院腹腔鏡手術後8人死亡事故 [2015/08/01(土) 01:03:34.01 ID:djTLO4cBo]
- .
【速報】「生きるのに向いていないから」健康な24歳女性の安楽死が認められる!!
news.biglobe.ne.jp/trend/0630/toc_150630_9059532140.html
- 265 名前:デフォルトの名無しさん mailto:sage [2015/08/01(土) 14:23:13.10 ID:aojbSuUF.net]
- *(int*)0=0;
- 266 名前:デフォルトの名無しさん mailto:sage [2015/08/01(土) 14:44:38.33 ID:zTfC3ItF.net]
- printf("AとBの積は593です");
もうアホかとなんのためのCなんだか
- 267 名前: ◆QZaw55cn4c mailto:sage [2015/08/01(土) 19:29:40.69 ID:KBiDhOrm.net]
- 593 は素数なんだが‥
- 268 名前:デフォルトの名無しさん mailto:sage [2015/08/01(土) 21:31:08.62 ID:cZ9y3hcR.net]
- そうすっうすね。
- 269 名前:デフォルトの名無しさん mailto:sage [2015/08/01(土) 21:39:39.36 ID:5DNs6h6K.net]
- 1*593
- 270 名前:デフォルトの名無しさん mailto:sage [2015/08/01(土) 22:19:25.72 ID:zTfC3ItF.net]
- >>267
掛け算作ってみろって言ったらこれが出てきた
- 271 名前:デフォルトの名無しさん [2015/08/02(日) 00:25:01.79 ID:2p0cp8/y.net]
- >>270
最適化出来てる 100点
- 272 名前:デフォルトの名無しさん mailto:sage [2015/08/02(日) 01:45:42.48 ID:MF9TQU9s.net]
- 掛け算作ってみろってのもおかしな物言いだな
そんなコミュ力だからおかしな物が出てくる
- 273 名前:デフォルトの名無しさん mailto:sage [2015/08/02(日) 02:10:40.49 ID:u7Ju2wRn.net]
- >>271
あれだと最適化しないコード作るほうが頭いるだろ 一文字づつあたらしいプロセス作って動かしてくとか?
- 274 名前:デフォルトの名無しさん mailto:sage [2015/08/02(日) 07:33:48.36 ID:AHQOj1TU.net]
- >>270
模範解答じゃん
- 275 名前:デフォルトの名無しさん mailto:sage [2015/08/02(日) 17:23:58.64 ID:MF9TQU9s.net]
- 絶望って程でもない
- 276 名前:デフォルトの名無しさん mailto:sage [2015/08/02(日) 18:37:05.66 ID:sH3CMGQ2.net]
- 無駄な計算してないとか優秀賞だな
- 277 名前:デフォルトの名無しさん mailto:sage [2015/08/31(月) 12:38:09.95 ID:B5sJg2ZW.net]
- >>12
なんで先頭じゃダメなの? 蟹飯本では当たり前のように先頭でまとめて宣言してるからそれに倣って先頭で宣言してるけど
- 278 名前:デフォルトの名無しさん mailto:sage [2015/08/31(月) 13:10:34.00 ID:KuTL4jkJ.net]
- >>277
変数は使用する直前で初期化して使うべきだから 初期化と宣言が別だと必ず未初期化で使うバグが出る また関数が長く分岐が多くなると初期化されてるか判断が難しくなる 変数のスコープは小さければ小さいほどいい 関数先頭に宣言するのは昔のC言語の制約だったと記憶してるが今は上記理由からやめるべき
- 279 名前:デフォルトの名無しさん mailto:sage [2015/08/31(月) 15:56:13.40 ID:UXpAKMEr.net]
- >>278
なるほどサンクス
- 280 名前:デフォルトの名無しさん mailto:sage [2015/09/01(火) 20:57:53.90 ID:D3JacxmQ.net]
- >>278
どこの説?
- 281 名前:めんどいから@sc [2015/09/02(水) 12:55:43.93 ID:Xv52dDV3z]
- >>278
> 初期化と宣言が別だと必ず未初期化で使うバグが出る 今時未初期化で warning 出ないコンパイラなんてあるのか?
コーディング規約で宣言時に必ず初期化しろなんてもんもあるが、 こんなことやると、コンパイラが発見できなくて、逆にバグにつながる気がするんだがな。
他の部分は「べき」じゃなくて「したほうがよい」程度ならば賛同する。
- 282 名前:デフォルトの名無しさん mailto:sage [2015/09/02(水) 21:35:45.23 ID:SIr+PlfYs]
- 「どこでも宣言」は反対だ、かえって行儀の悪いコードを助長する
// どうでもいいが、switch文の中で変数宣言するのは危険だよなぁ
- 283 名前:sc とはめずらしい mailto:sage [2015/09/03(木) 08:44:26.92 ID:pCZUcMZ1/]
- >>281
> コーディング規約で宣言時に必ず初期化しろなんてもんもあるが、 > こんなことやると、コンパイラが発見できなくて、逆にバグにつながる気がするんだがな。 スコープを十分小さくできていることが前提なんじゃないかな。 あと初期化ってのは、やたらと 0 とかを入れるんじゃなくて、後々の Assert に引っかかるような 値を入れるべきではないかと。
- 284 名前:めんどいから@sc [2015/09/03(木) 12:34:59.37 ID:c6LlyVFnO]
- >>283
assert に引っかかるような値を入れるのも正しいとは思うが場合によるはな。 void *a = NULL; // 使い回しなんて無い変数 a = malloc(1); なんてコードを見る。しかも連続行でだぜ。なぜ、 void *a = malloc(1); と書けないんだと。
初期値はちゃんと考えて、その場に応じた「正しい値」をセットしろと。
ぐち... unsigned char *img = NULL; // 1200dpiのA3イメージ img = (unsigned char*)malloc(size); memset(img, 0, size); memcpy(img, orgImage, size); で、msec単位で処理速度あげるのに必死になってミドル作ってるやつのところに、 処理が遅いって文句言ってくるやつ ヽ(゜Д゜)ノ 結局アプリをレビューして、いらん memset() 削除させて、内製の memcpy() に置き換えさせたら、 そもそもミドル側のチューニングなしでもスペック満たせそうな。 (ドタキャンした1週間分の旅行代金穴埋めとまとめて休める期間作れと交渉中)
- 285 名前:デフォルトの名無しさん mailto:sage [2015/09/12(土) 03:17:33.09 ID:k25bT+vJ.net]
- for ループから条件でgotoでforの外に飛んで帰ってもこないプログラム
- 286 名前:デフォルトの名無しさん [2015/09/12(土) 04:01:54.66 ID:XAqQ9sMD.net]
- それ普通ですが
breakがまさにそういう動作だし、breakはgotoの一種と言われているわけだが 二重のforを一気に抜けるのにgoto使うとか普通のテクニック return出来るならそっちのがいいけど むしろforからgotoで抜けてまたgotoで戻ってくる方が恐ろしいが そういうサブルーチン的な動作にgoto使われるとかなり鬱陶しいし それでgotoが禁止されたわけだが
- 287 名前:デフォルトの名無しさん mailto:sage [2015/09/12(土) 08:00:00.87 ID:TErXHjBS.net]
- for使ってるの?甘いね
プロは全部gotoしか使わないよ
- 288 名前:デフォルトの名無しさん mailto:sage [2015/09/12(土) 09:09:13.39 ID:lTmP7o65.net]
- 柔軟に環境に合わせられるのがプロ
- 289 名前:デフォルトの名無しさん [2015/09/12(土) 09:59:18.43 ID:o99yCw3m.net]
- 真のプロには、製品の方が合わせてくる。
企画原案に意見を求められるし、監修を頼まれる。
- 290 名前:デフォルトの名無しさん mailto:sage [2015/09/12(土) 10:01:01.89 ID:/tgR015i.net]
- >>289
それで真のプロのプログラマだと どうなるわけ?
- 291 名前:デフォルトの名無しさん [2015/09/12(土) 10:11:11.52 ID:o99yCw3m.net]
- >>290
その問題については既に解いてあるんだが、2chは数式を張り付けられないからなあ。
- 292 名前:デフォルトの名無しさん mailto:sage [2015/09/12(土) 10:11:50.87 ID:/tgR015i.net]
- >>291
つまり解いてないってことかw
- 293 名前:デフォルトの名無しさん mailto:sage [2015/09/12(土) 10:56:04.07 ID:8SKz5ytR.net]
- >>291
ほれ formula.s21g.com/
- 294 名前:デフォルトの名無しさん mailto:sage [2015/09/12(土) 11:30:03.64 ID:LQnjc3KY.net]
- 一休「虎が屏風から出てくれば捕まえられるのにな〜ああ〜残念だなあ〜」
将軍「出したよ」 って状況?
- 295 名前:デフォルトの名無しさん mailto:sage [2015/09/12(土) 11:38:50.74 ID:Xol1TNVu.net]
- >>290
達人ともなれば、むしろタンスが小指に恐れをなし、というアレだよ。
- 296 名前:デフォルトの名無しさん mailto:sage [2015/09/12(土) 12:07:10.77 ID:1pxDFhfx.net]
- >>291
zipでくれ
- 297 名前:デフォルトの名無しさん mailto:sage [2015/09/12(土) 18:16:31.99 ID:8SKz5ytR.net]
- >>294
https://www.youtube.com/watch?v=sXtYIgqKobc
- 298 名前:デフォルトの名無しさん mailto:sage [2015/09/12(土) 22:51:55.44 ID:QkMrh2wn.net]
- 971 名前:名無しさん@七周年[] 投稿日:2006/11/11(土) 00:56:10 ID:M8+ahUZV0
自称スーパープログラマー某 強烈加齢臭 メール見ない メール無視 ドキュメント見ない ドキュメント無視 説明聞かない 説明無視 話聞かない 話無視 ガム→むっちゃー むっちゃー むっちゃー むっちゃー 煎餅→バリバリバリバリバリバリ 菓子パン→モグモグモグモグモグモグモグモグモグモグ カップアイス→むっちゃー むっちゃー ペロペロペロペロ フロアすべてに響き渡る ばかでかいくしゃみ 当然手でおさえない 半径10mで耳鳴り、ひどいと頭痛誘発 異音と異振動 ドスーン!ドスーン!ドカーン!ドカーン! バコーン!バコーン!ズドン! ズドン! 机が近いとマウスポインターが飛ぶ 誤操作誘発 書類だしたりしまうだけでドカンドカン 口と鼻から異音 ふんっっ ふんっーーーーー マジでうっとおしい30秒ごと 備品破壊 貸与P C 破壊 他人のもの破壊 奴の作ったスクリプトとプログラムは使えない バグりすぎ
- 299 名前:デフォルトの名無しさん mailto:sage [2015/09/13(日) 00:10:23.04 ID:xBi8Z0XU.net]
- ストレス貯まるなそれは
|

|