2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50    

摩訶不思議なコードを書くプログラマ

1 :仕様書無しさん:2022/12/06(火) 12:40:49.50 .net
時間が無いとか、既存のクソコードの拡張で、やむを得ずクソコードを書くのではなく、わざわざめんどくさい書き方をするプログラマ
もちろん、パフォーマンス上の利点などがあるわけではない

2 :仕様書無しさん:2022/12/06(火) 12:53:53.98 .net
認知が歪んでいるプログラマ
https://medaka.5ch.net/test/read.cgi/prog/1654586619/

3 :仕様書無しさん:2022/12/06(火) 13:12:34.63 .net
ナマポは許されますか?

4 :仕様書無しさん:2022/12/06(火) 16:50:23.31 .net
実際のコードそのままではないが、大枠だけ抜き出すとこう

function xory(x, y, flag) {
 var a = [x, y];
 return a[flag];
}

5 :仕様書無しさん:2022/12/06(火) 18:45:44.96 .net
それだけでは伝わらんよ
理解してから言語化しろ

6 :仕様書無しさん:2022/12/06(火) 18:46:59.79 .net
自分の理想の書き方も示して並べてくれないかな?

7 :仕様書無しさん:2022/12/06(火) 22:28:25.85 .net
こんな単純な処理ならインライン処理でいいだろ
...
100 シキ RES=A
110 モシ FLAG=0 ナラバ160ニイケ
120 モシ FLAG=1 ナラバ150ニイケ
130 カケ 1,エラーデス
140 オワリ
150 シキ RES=B
160 ...
...

8 :仕様書無しさん:2022/12/07(水) 07:05:27.37 .net
ラムダ式が摩訶不思議なんだが使ってる人いるの?

9 :仕様書無しさん:2022/12/07(水) 11:42:18.89 .net
使うっちゃ!

10 :仕様書無しさん:2022/12/07(水) 11:58:52.61 .net
>>4
オレオレ関数

11 :仕様書無しさん:2022/12/07(水) 12:21:12.61 .net
>>5
これでヤバさが伝わらないのはお前がアホだからだよ

12 :仕様書無しさん:2022/12/07(水) 13:25:39.93 .net
間違いなく >>5 はアホ

13 :仕様書無しさん:2022/12/07(水) 13:42:25.67 .net
教えてやれ
理解できるように

14 :仕様書無しさん:2022/12/07(水) 15:46:06.75 .net
xかyの2値のうちのflagの位置にある値を返すって処理だよ
処理の内容がflagって表現でぼかされちゃうな、

これを関数化するメリットってなにがあるんだ?

15 :仕様書無しさん:2022/12/07(水) 15:53:51.19 .net
三項演算禁止なんだよ

16 :仕様書無しさん:2022/12/07(水) 16:00:00.29 .net
値の選択をifでやると複数行使うし、一行の中で三項演算子を複数使うと読みにくくなるから、全くナンセンスな書き方ではないと思うよ

17 :仕様書無しさん:2022/12/07(水) 16:12:40.11 .net
たいていのコードはビルド時に最適化されちゃうから
気にすんなって最近思うようになった

会社のレビューでもどっちが高速かと不毛な争いはしなくなったし
ひたすら読みやすいコードが良いって言う感じかなぁ

18 :仕様書無しさん:2022/12/07(水) 16:12:54.56 .net
>>16
アホすぎ

19 :仕様書無しさん:2022/12/07(水) 16:14:27.02 .net
4と「flag ? a : b;」 が等価だと思ってるとしたら、プログラミングやめた方がいいよ

20 :仕様書無しさん:2022/12/07(水) 16:19:00.21 .net
>>19
うん、違うね
flag ? b : a;
だね

21 :仕様書無しさん:2022/12/07(水) 16:20:47.15 .net
なんかもう自分が認めたくないから追認を求る痛い女みたいになっとるね

22 :仕様書無しさん:2022/12/07(水) 16:22:51.63 .net
駄目だこいつ
コピペプログラミングしかしてこなかったんだろうな

23 :仕様書無しさん:2022/12/07(水) 16:26:26.32 .net
>>20
全く理解できてなくて草

24 :仕様書無しさん:2022/12/07(水) 16:31:28.76 .net
中学生ギークとかがイキっちゃって恥をかくパターン
チームで書くようになると背景や文化やトラブル耐性等のトレードオフを考慮するようになって、一意の正解なんて存在しなくなる

25 :仕様書無しさん:2022/12/07(水) 16:36:13.78 .net
チームの文化とか以前に、あなたは
if文(三項演算子)の動きが理解できていません

26 :仕様書無しさん:2022/12/07(水) 17:36:41.73 .net
まあ、trueが1であるかは処理系によって違うからなぁ

27 :仕様書無しさん:2022/12/07(水) 18:09:41.87 .net
もう君、恥かくだけだから書き込まない方がいいよ

28 :仕様書無しさん:2022/12/07(水) 18:24:53.71 .net
位置に値がない場合、三つ目の値(undefind)が返るからとか?
でも言語によってはバッファオーバーランになるぞ

29 :仕様書無しさん:2022/12/07(水) 19:21:36.27 .net
let person = null;

let name1 = person ? person.name : "Jane Doe";

let name2 = function(cond, a, b) { return cond ? a : b; }(person, person.name, "Jane Doe");

30 :仕様書無しさん:2022/12/07(水) 20:07:30.51 .net
ラムダ式教えてください

31 :仕様書無しさん:2022/12/07(水) 20:18:40.82 .net
無名関数だっちゃよー

32 :仕様書無しさん:2022/12/07(水) 20:34:02.09 .net
how do u think about "objects vs lambda (lexical closures)"?

33 :仕様書無しさん:2022/12/07(水) 22:57:50.77 .net
>>4
これはまったくナンセンスな関数というわけではない
ネストを増やさない利点があるし、場合によっては可読性も上がる
同じ処理が複数ヶ所にあるなら俺はレビューを通す

34 :仕様書無しさん:2022/12/07(水) 23:07:39.14 .net
そうなの?
関数呼ぶ時にはflagは決まってるから、わざわざ処理化するのは無駄な気もしますけど、

35 :仕様書無しさん:2022/12/08(木) 01:11:48.60 .net
>>33
逆張りでアホ発言繰り返すのやめたら?

36 :仕様書無しさん:2022/12/08(木) 01:41:18.25 .net
プログラミング完全に理解したと思ってる脱初心者くらいだとナンセンスなコードに見えてしまうかも

37 :仕様書無しさん:2022/12/08(木) 05:07:02.32 .net
>>33

おまえ、頭イカれてるよ

38 :仕様書無しさん:2022/12/08(木) 06:45:35.62 .net
例えば処理速度みたいな観点で見た場合、ネストの深さと関数の呼び出しってどっちの方がコストが大きいんだ?
また可読性って観点で見た場合、関数を呼ぶ前にすでに得たい値が明確に決まってるのに、あえて関数でロジックを迂遠にするってどうなんだ?

39 :仕様書無しさん:2022/12/08(木) 09:36:28.68 .net
速度はコンパイラの最適化次第だから擬似コードでああだこうだ言ってもしょうがない
4の関数と三項演算子でロジック的に違いそうなのは遅延評価がどれだけ効くかだけど、これも言語によって違うからなんともいえない
三項演算子が短絡評価にならない言語もあるし、関数呼び出し時に引数が評価されるかはもっと言語次第

で4だけど、仮にこの処理に相当するコードを[a,b](flag)と書ける言語だったとして、それを書き直させてxory(a,b,flag)にすることはありうるだろう
a,b,flagのどれが事前に評価されててどれを引数上で評価するのかとかは設計の問題だからなんとも言えないだろう
だから他人に4がクソコードかどうかなんてのは判断できないの

4がなんかJavascriptっぽいからJavascriptを前提に議論してほしいの!a,b,flagは必ず事前に評価されててここでは参照するだけなの!ってんならそもそもプログラマに向いてないよ

40 :仕様書無しさん:2022/12/08(木) 09:47:13.44 .net
>>39
自分がプログラマに向いていないことを長々と説明ご苦労さま

41 :仕様書無しさん:2022/12/08(木) 10:07:52.01 .net
もうそれしか言えないのねw

42 :仕様書無しさん:2022/12/08(木) 10:15:02.91 .net
自分の書き方こそが正義!
そう思っていたことが私にもありました

43 :仕様書無しさん:2022/12/08(木) 10:34:56.61 .net
三項演算子かどうかって話じゃないよw

44 :仕様書無しさん:2022/12/08(木) 11:21:56.77 .net
このスレは「俺ルールに反してる書き方」スレに変わりました

45 :仕様書無しさん:2022/12/08(木) 11:30:17.92 .net
コードレビューは規約に沿っているかどうかだけ判断すればよい
コードの読みやすさは偉い人の感想や声が大きい人の気分で決めていいもんじゃない
読みやすさなどという不確定で曖昧で根拠のないものは生産性の障害でしかない

46 :仕様書無しさん:2022/12/08(木) 11:37:28.35 .net
三項演算子という言葉はIMEで変換すらできない
最大手の言語メーカーであるマイクロソフト製品ですらそうだ
それだけ存在感がないという事である

一方で三項演算子の歴史は古く、その批判の歴史もながい
それにもかかわらず新しい言語が出来るたびにほぼ必ずといっていいほど三項演算子は含まれているし
古い言語から三項演算子が取り除かれたというニュースを聞いたこともない

普段意識はしていないし、使ったことはないけれど
それを使っている人がいれば批判したくなる
それが三項演算子の現在の立ち位置だ

逆に普段から使っている人にとっては三項演算子は「普及していないが便利な機能」だ
数年前のラムダ式みたいなものだろう(数十年前だと主張する人もいるかもしれない)

あまり多くの人に使わない機能は知られてないというだけで不便なものである
言われのないバッシングを受けたり説明したり、コードレビューで議論しなくてはならないからだ

三項演算子を使わないほうがいい理由があるのだとすれば
それは三項演算子の機能や見た目、エレガントさなどではなく
その知名度や支持率の無さゆえであると言えるかもしれない

47 :仕様書無しさん:2022/12/08(木) 11:50:00.10 .net
>>42
正義というのは常に自分勝手なものである
アンパンマンは暴力でものごとを解決する
プリキュアは常に集団で暴行をする
悪人であっても懲らしめた後は許すという方針だった月光仮面は視聴率42%でも打ち切りになる

正義と暴力は同一のものなのだ
コードをどう書くかというのは保守性や学術的な議論ではなく
社内の力関係で決まってしまうということだ

48 :仕様書無しさん:2022/12/08(木) 12:17:46.02 .net
>>4のコードがコーディング規約によっては有りなんて考えをする人がいるのだから、日本の技術レベルが低いのは当たり前だわな

49 :仕様書無しさん:2022/12/08(木) 12:21:54.10 .net
いや、>>4はバグあるからまんま使えないよ

50 :仕様書無しさん:2022/12/08(木) 12:24:00.38 .net
>>2の正しさが証明されてるじゃん
ダメなプログラマは技術以前にそもそも現実世界の見方が歪んでいるから理屈で説明しても納得できないのだよ

51 :仕様書無しさん:2022/12/08(木) 12:24:44.02 .net
三項演算子回避の方法として外観だけ観て言ってるだけだから

52 :仕様書無しさん:2022/12/08(木) 12:31:34.50 .net
>>48
コーディング規約はいわば会社の方針である
実際は他のやり方が正しいからといって会社に逆らってしまっては本末転倒ではないか?

53 :仕様書無しさん:2022/12/08(木) 12:32:31.16 .net
>>52
名無しでid非表示なんだから、恥ずかしくても知的障害起こす必要はないんだよ、

54 :仕様書無しさん:2022/12/08(木) 12:33:45.71 .net
え、引数の事前評価っていうか、この関数呼ぶ時にはすでにxもyもflagもわかってるわけじゃん
この関数って動的に値を作るような動きはしてなくて、与えられた引数を与えられた条件に従って返してるだけで、なんか回りくどいことしてるなーって印象なんですよね、

55 :仕様書無しさん:2022/12/08(木) 12:39:35.96 .net
>>54の理屈だとプロパティじゃなくてメンバ変数に直接アクセスしろって事にならんか?
プロパティじゃなくてアクセサに読み替えてもらってもいいけどさ

56 :仕様書無しさん:2022/12/08(木) 12:47:40.00 .net
>>55
オブジェクト指向だとしたらそのセオリーに従うけど、これただの関数ですよね、呼び出し元のルーチンがある
で、呼び出し元のルーチンですでにxもyもflagもわかってるわけですよね

57 :仕様書無しさん:2022/12/08(木) 12:55:43.12 .net
>>56
if (flag == 0)
{
hoge = x;
}
elseif(flag == 1)
{
hoge = y;
}
else
{
exception;
}

こんなのを該当箇所全部に書くの?三項演算子でワンラインにしてもいいけどさ
>>4だとどっちを選択するかのアルゴリズムが関数内に封じられてるからソースでflagの説明出来てるよ

58 :仕様書無しさん:2022/12/08(木) 12:59:35.02 .net
>>57
x,yをまとめるよね、そんでflagじゃなくてenumつかう

59 :仕様書無しさん:2022/12/08(木) 13:27:39.61 .net
派遣がこの書き方で書いてきたら書き直させるわ

60 :仕様書無しさん:2022/12/08(木) 13:41:51.13 .net
どれも機械にとっちや似た様なもんだしなあ
人間様が(一集団内で)理解し易いかどうかだけの問題
あんまり拘るのも生産性に欠けるよなぁ
組織内で一様に書く為のコーディング規約から外れてるかどうかだけの問題だよなぁ

61 :仕様書無しさん:2022/12/08(木) 13:46:28.23 .net
enumってもう許されたの?三項演算子と同じぐらい嫌われてるもんだと思ってたが

62 :仕様書無しさん:2022/12/08(木) 14:00:57.09 .net
if(a) {b;} else {c;} は?

63 :仕様書無しさん:2022/12/08(木) 14:05:13.02 .net
>>57
プログラミングのセンスが無さすぎるな

64 :仕様書無しさん:2022/12/08(木) 14:13:01.16 .net
>>57
うわ
コードとセマンティクスが区別できずにオレオレ共通化するガイジだ

65 :仕様書無しさん:2022/12/08(木) 14:16:36.25 .net
>>4が次の2点について優れている
拡張性が高いところ、そして値のチェックがされているところ
例えばxとyのほかにzが出てきたとしよう
ほぼ全員が同じような修正をするはずだ
(ここのスレ民であれば全削除して書き換えてしまいそうだが・・・)

そして次にflagが0と1以外の値を取った時の挙動だ
(このスレはレベルが高いのでいちいち説明はしないがわざとそういう挙動にしているのだろう)

次に実際にコードを修正してみよう
xoryという関数をxoryorzに変更したのではないか?
ビルドすればエラーが発生するので1つずつチェックが出来る
これは便利だ(もちろん1つずつチェックする必要がなければ関数名そのままでもいいし
テキストエディタのリファクタリング機能を使って一括変更してもいいだろう)

集団でコーディングする場合に他の人がどんな風にふるまうかを考えて作られた素晴らしい関数だと思う
一見すると非効率で無駄なコードに見えるし、サンプル的な洗練されていないものに見える人もいたかもしれない
しかし、実際は全く逆で集団コーディングで様々な人たちに揉まれてきてたどり着いたかなり実戦的なコードなのは間違いないだろう
このコードを書いた人はかなり胃を痛めてこのコードにたどり着いたはずだ

66 :仕様書無しさん:2022/12/08(木) 14:18:28.96 .net
>>63-64
>>4のほうが優れてるよな
>>62は実行結果が変わってしまってるので(仕様がわからない現時点では)ダメだと思うよ

67 :仕様書無しさん:2022/12/08(木) 14:21:59.04 .net
if文の中でやりたいことは一つとは限らないのに
関数化とかアホでしょ

68 :仕様書無しさん:2022/12/08(木) 14:22:41.53 .net
プログラミングとは処理に名前を付ける作業

69 :仕様書無しさん:2022/12/08(木) 14:27:09.38 .net
よくわかんねーけど共通化どうこう以前にそんな判定処理を色んな所に書かなきゃいけない実装の時点で間違ってると思うのは俺だけ?

70 :仕様書無しさん:2022/12/08(木) 14:39:13.64 .net
言語によっては条件演算子のtrue false2つの式を計算してから適切な方を返すこともある
例えばGPUを扱う言語なんかはifより条件演算子の方が適切なことが多い、GPUは同じ命令で大量の計算をするから分岐は命令の変更が生じてしまう、命令の変更をせずに両方計算する方が速いってこともある

似たような理由でifの条件評価より配列のインデックス指定で値を取ったほうが速いこともあるかもしれない、ただそんなことまで気にするほど大量の計算がある状況ってかなり珍しい気がする

71 :仕様書無しさん:2022/12/08(木) 15:13:36.21 .net
>>4みたいなのが実際出てくるとしたら、

元々xとyを両方使う関数があってそれを再利用してたが、結局片方しか必要無くなったから、引数で使う方を選択する

みたいな状況だろうか
もし、ゼロからこれを書いてきたなら、クビにした方がいいよ

72 :仕様書無しさん:2022/12/08(木) 15:13:59.23 .net
>>4
flagの値の評価を外に任せてる点だけが引っかかるよ

73 :仕様書無しさん:2022/12/08(木) 15:35:46.12 .net
>>65
つまんないよ

74 :仕様書無しさん:2022/12/08(木) 18:53:29.65 .net
コード全文をみないと何とも言えないでしょ
極論だけど、同じような処理が同一ファイルに30箇所以上あって、
しかもこの処理をメソッドチェーンで呼び出した方が意味が通りやすいとかなら
アリだろう

75 :仕様書無しさん:2022/12/08(木) 18:57:17.56 .net
>>4に対して直感的に違和感を持つけど、状況限定でなくもないかな

76 :仕様書無しさん:2022/12/10(土) 11:22:15.61 .net
>>65

根本的にプログラマの素質の無い奴
混ぜるなキケン

77 :仕様書無しさん:2022/12/11(日) 00:08:27.72 .net
>>4
こんなコード書く人おるの?

78 :仕様書無しさん:2022/12/11(日) 00:17:40.71 .net
たぶん>>65はjavascript触ったことないな

79 :仕様書無しさん:2022/12/13(火) 12:54:33.63 .net
>>77
いないと思うだろ?

それがいるから困るんだよ

80 :仕様書無しさん:2022/12/13(火) 13:13:13.22 .net
そんなのflag ? y : x以外の書き方してたらはぁ?ってなるわw

81 :仕様書無しさん:2022/12/14(水) 00:23:52.62 .net
摩訶不思議なコードは状況がわからないとなんとも

function isX(flag) {

 return flag;
}

みたいなのだったら一見意味なくてもその後何かする予定とかあるし
ダメな人ほど大騒ぎするってこともあるし
実際のコードを見て書いた人に理由を聞かないとなんとも言えないな

82 :仕様書無しさん:2022/12/14(水) 01:09:19.01 .net
>>81
いやboolean返せよ、、

83 :仕様書無しさん:2022/12/14(水) 04:36:39.16 .net
>>82
その辺も文脈がないとなんとも

84 :仕様書無しさん:2022/12/14(水) 08:29:46.08 .net
isで始まる疑問文はyes,noで返せと習わなかったか?

85 :仕様書無しさん:2022/12/14(水) 09:31:23.69 .net
そんなレベルの話してないんだよね

86 :仕様書無しさん:2022/12/14(水) 09:33:39.82 .net
flagは普通はbooleanだし言語もわからんし作法なんかいろいろあるわけで
駆け出しとかに限ってこう教わったから!みたいに暴れるやつがいる
必ずしも君ががそうとは言ってない
反論は英語でだけ受け付ける

87 :仕様書無しさん:2022/12/14(水) 12:20:28.62 .net
if( isX( flag ) ) { ... }
だよなふつう

88 :仕様書無しさん:2022/12/14(水) 16:57:52.82 .net
if flag == '日章旗' {…}

89 :仕様書無しさん:2022/12/15(木) 18:39:09.46 .net
藤林丈司

90 :仕様書無しさん:2023/01/11(水) 11:00:54.32 .net
// ...
for(x in xs) {
 // xの情報を、メンバー変数mに代入しながら、mを他のメソッドA, B, C, ...で弄るコード
}
// ...

void A() {
 // mを弄るコード
}

void B() {
 // mを弄るコード
}

void C() {
 // mを弄るコード
}


こういう無駄にスコープを広げたがるやつの心理は本当に理解できない

91 :仕様書無しさん:2023/01/11(水) 23:42:28.25 .net
>>90
これマジやめろ
新しいの返せや

92 :仕様書無しさん:2023/01/12(木) 00:08:13.41 .net
摩訶不思議なコードを書きたい

93 :仕様書無しさん:2023/01/12(木) 00:22:12.74 .net
A() {
B()
}

B() {
C()
}

C() {
A()
}

94 :仕様書無しさん:2023/01/12(木) 09:03:46.80 .net
>>93
一瞬でスタックオーバーフローしたw

95 :仕様書無しさん:2023/01/12(木) 13:54:39.87 .net
// 巨大なfor文の中
foreach (int i in int[] {xxx, yyy, zzz}) {
 if (i == xxx) {
  // xxxの処理
 }
 if (i == yyy) {
  // yyyの処理
 }
 if (i == zzz) {
  // zzzの処理
 }
}
// ...

意図が全く理解できない

96 :仕様書無しさん:2023/01/12(木) 16:43:01.67 .net
メソッド内の行数が増えない様にじゃね?

97 :仕様書無しさん:2023/01/12(木) 18:23:01.09 .net
外出ししようとして忘れたんだろう

98 :仕様書無しさん:2023/01/20(金) 21:07:58.50 .net
for(i=0; i<100; i++){

いろいろとi番目の処理

// ある条件だったらカウンターを減らす
if(ある条件だったら){
i = i - 1;
}
}

見事に無限ループしてたよ

99 :仕様書無しさん:2023/01/20(金) 21:53:36.00 .net
千鳥足でゴミを上書きし放題なのかな

100 :仕様書無しさん:2023/09/07(木) 13:16:17.36 ID:SscFyGnnn
殺害事件を受けて命カ゛─だのほざきながらモク├‐とかやってるハゲとか見ると笑いをこらえるのか゛大変だよね
都心まで数珠つなき゛で住民の生命と財産をクソ航空機によって侵略して騷音にコ囗ナに温室効果カ゛スにとまき散らして,
憲法ガン無視で威力業務妨害して私権侵害に気候変動に災害連発させて国土破壞して公然と住民を殺害しまくってるキチガヰ腐敗國家だぜ
そんな世界最惡のジェノサヰト゛マッチポンプテ囗国家で何を寝言ほさ゛いてんだか腹筋割れちまうがなっつのな
もしかして、世界最悪の殺人組織公明党斎藤鉄夫に汚染された国土破壊省か゛意図的に氣候変動させて災害連發させて
私利私欲のために國土破壊してる現実とか.騒音まき散らして知的能カ者に威力業務妨害して詐欺やらでしかマ├モに
稼げなくしている現実すら知らない根本的かつ絶望的なバカか゛他人を巻き込んて゛神秘的な自己満娯楽を堪能してたりするのかな
反吐が出そうし゛ゃね
(羽田)ttps://www.call4.jp/info.php?type=items&id=I0000062 , ttps://haneda-project.jimdofree.com/
(成田)ttps://n-souonhigaisosyoudan.amebaownd.com/
(テ□組織)ttps://i.imgur.com/hnli1ga.jpeg

24 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
名前: E-mail (省略可) :

read.cgi ver.24052200