X



摩訶不思議なコードを書くプログラマ
■ このスレッドは過去ログ倉庫に格納されています
0001仕様書無しさん
垢版 |
2022/12/06(火) 12:40:49.50
時間が無いとか、既存のクソコードの拡張で、やむを得ずクソコードを書くのではなく、わざわざめんどくさい書き方をするプログラマ
もちろん、パフォーマンス上の利点などがあるわけではない
0004仕様書無しさん
垢版 |
2022/12/06(火) 16:50:23.31
実際のコードそのままではないが、大枠だけ抜き出すとこう

function xory(x, y, flag) {
 var a = [x, y];
 return a[flag];
}
0005仕様書無しさん
垢版 |
2022/12/06(火) 18:45:44.96
それだけでは伝わらんよ
理解してから言語化しろ
0006仕様書無しさん
垢版 |
2022/12/06(火) 18:46:59.79
自分の理想の書き方も示して並べてくれないかな?
0007仕様書無しさん
垢版 |
2022/12/06(火) 22:28:25.85
こんな単純な処理ならインライン処理でいいだろ
...
100 シキ RES=A
110 モシ FLAG=0 ナラバ160ニイケ
120 モシ FLAG=1 ナラバ150ニイケ
130 カケ 1,エラーデス
140 オワリ
150 シキ RES=B
160 ...
...
0008仕様書無しさん
垢版 |
2022/12/07(水) 07:05:27.37
ラムダ式が摩訶不思議なんだが使ってる人いるの?
0011仕様書無しさん
垢版 |
2022/12/07(水) 12:21:12.61
>>5
これでヤバさが伝わらないのはお前がアホだからだよ
0014仕様書無しさん
垢版 |
2022/12/07(水) 15:46:06.75
xかyの2値のうちのflagの位置にある値を返すって処理だよ
処理の内容がflagって表現でぼかされちゃうな、

これを関数化するメリットってなにがあるんだ?
0015仕様書無しさん
垢版 |
2022/12/07(水) 15:53:51.19
三項演算禁止なんだよ
0016仕様書無しさん
垢版 |
2022/12/07(水) 16:00:00.29
値の選択をifでやると複数行使うし、一行の中で三項演算子を複数使うと読みにくくなるから、全くナンセンスな書き方ではないと思うよ
0017仕様書無しさん
垢版 |
2022/12/07(水) 16:12:40.11
たいていのコードはビルド時に最適化されちゃうから
気にすんなって最近思うようになった

会社のレビューでもどっちが高速かと不毛な争いはしなくなったし
ひたすら読みやすいコードが良いって言う感じかなぁ
0019仕様書無しさん
垢版 |
2022/12/07(水) 16:14:27.02
4と「flag ? a : b;」 が等価だと思ってるとしたら、プログラミングやめた方がいいよ
0020仕様書無しさん
垢版 |
2022/12/07(水) 16:19:00.21
>>19
うん、違うね
flag ? b : a;
だね
0021仕様書無しさん
垢版 |
2022/12/07(水) 16:20:47.15
なんかもう自分が認めたくないから追認を求る痛い女みたいになっとるね
0022仕様書無しさん
垢版 |
2022/12/07(水) 16:22:51.63
駄目だこいつ
コピペプログラミングしかしてこなかったんだろうな
0024仕様書無しさん
垢版 |
2022/12/07(水) 16:31:28.76
中学生ギークとかがイキっちゃって恥をかくパターン
チームで書くようになると背景や文化やトラブル耐性等のトレードオフを考慮するようになって、一意の正解なんて存在しなくなる
0025仕様書無しさん
垢版 |
2022/12/07(水) 16:36:13.78
チームの文化とか以前に、あなたは
if文(三項演算子)の動きが理解できていません
0026仕様書無しさん
垢版 |
2022/12/07(水) 17:36:41.73
まあ、trueが1であるかは処理系によって違うからなぁ
0027仕様書無しさん
垢版 |
2022/12/07(水) 18:09:41.87
もう君、恥かくだけだから書き込まない方がいいよ
0028仕様書無しさん
垢版 |
2022/12/07(水) 18:24:53.71
位置に値がない場合、三つ目の値(undefind)が返るからとか?
でも言語によってはバッファオーバーランになるぞ
0029仕様書無しさん
垢版 |
2022/12/07(水) 19:21:36.27
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");
0032仕様書無しさん
垢版 |
2022/12/07(水) 20:34:02.09
how do u think about "objects vs lambda (lexical closures)"?
0033仕様書無しさん
垢版 |
2022/12/07(水) 22:57:50.77
>>4
これはまったくナンセンスな関数というわけではない
ネストを増やさない利点があるし、場合によっては可読性も上がる
同じ処理が複数ヶ所にあるなら俺はレビューを通す
0034仕様書無しさん
垢版 |
2022/12/07(水) 23:07:39.14
そうなの?
関数呼ぶ時にはflagは決まってるから、わざわざ処理化するのは無駄な気もしますけど、
0035仕様書無しさん
垢版 |
2022/12/08(木) 01:11:48.60
>>33
逆張りでアホ発言繰り返すのやめたら?
0036仕様書無しさん
垢版 |
2022/12/08(木) 01:41:18.25
プログラミング完全に理解したと思ってる脱初心者くらいだとナンセンスなコードに見えてしまうかも
0038仕様書無しさん
垢版 |
2022/12/08(木) 06:45:35.62
例えば処理速度みたいな観点で見た場合、ネストの深さと関数の呼び出しってどっちの方がコストが大きいんだ?
また可読性って観点で見た場合、関数を呼ぶ前にすでに得たい値が明確に決まってるのに、あえて関数でロジックを迂遠にするってどうなんだ?
0039仕様書無しさん
垢版 |
2022/12/08(木) 09:36:28.68
速度はコンパイラの最適化次第だから擬似コードでああだこうだ言ってもしょうがない
4の関数と三項演算子でロジック的に違いそうなのは遅延評価がどれだけ効くかだけど、これも言語によって違うからなんともいえない
三項演算子が短絡評価にならない言語もあるし、関数呼び出し時に引数が評価されるかはもっと言語次第

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

4がなんかJavascriptっぽいからJavascriptを前提に議論してほしいの!a,b,flagは必ず事前に評価されててここでは参照するだけなの!ってんならそもそもプログラマに向いてないよ
0040仕様書無しさん
垢版 |
2022/12/08(木) 09:47:13.44
>>39
自分がプログラマに向いていないことを長々と説明ご苦労さま
0042仕様書無しさん
垢版 |
2022/12/08(木) 10:15:02.91
自分の書き方こそが正義!
そう思っていたことが私にもありました
0044仕様書無しさん
垢版 |
2022/12/08(木) 11:21:56.77
このスレは「俺ルールに反してる書き方」スレに変わりました
0045仕様書無しさん
垢版 |
2022/12/08(木) 11:30:17.92
コードレビューは規約に沿っているかどうかだけ判断すればよい
コードの読みやすさは偉い人の感想や声が大きい人の気分で決めていいもんじゃない
読みやすさなどという不確定で曖昧で根拠のないものは生産性の障害でしかない
0046仕様書無しさん
垢版 |
2022/12/08(木) 11:37:28.35
三項演算子という言葉はIMEで変換すらできない
最大手の言語メーカーであるマイクロソフト製品ですらそうだ
それだけ存在感がないという事である

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

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

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

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

三項演算子を使わないほうがいい理由があるのだとすれば
それは三項演算子の機能や見た目、エレガントさなどではなく
その知名度や支持率の無さゆえであると言えるかもしれない
0047仕様書無しさん
垢版 |
2022/12/08(木) 11:50:00.10
>>42
正義というのは常に自分勝手なものである
アンパンマンは暴力でものごとを解決する
プリキュアは常に集団で暴行をする
悪人であっても懲らしめた後は許すという方針だった月光仮面は視聴率42%でも打ち切りになる

正義と暴力は同一のものなのだ
コードをどう書くかというのは保守性や学術的な議論ではなく
社内の力関係で決まってしまうということだ
0048仕様書無しさん
垢版 |
2022/12/08(木) 12:17:46.02
>>4のコードがコーディング規約によっては有りなんて考えをする人がいるのだから、日本の技術レベルが低いのは当たり前だわな
0049仕様書無しさん
垢版 |
2022/12/08(木) 12:21:54.10
いや、>>4はバグあるからまんま使えないよ
0050仕様書無しさん
垢版 |
2022/12/08(木) 12:24:00.38
>>2の正しさが証明されてるじゃん
ダメなプログラマは技術以前にそもそも現実世界の見方が歪んでいるから理屈で説明しても納得できないのだよ
0051仕様書無しさん
垢版 |
2022/12/08(木) 12:24:44.02
三項演算子回避の方法として外観だけ観て言ってるだけだから
■ このスレッドは過去ログ倉庫に格納されています

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