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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

function isX(flag) {

 return flag;
}

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

B() {
C()
}

C() {
A()
}

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

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

意図が全く理解できない

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

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

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

いろいろとi番目の処理

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

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

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

0100仕様書無しさん2024/03/29(金) 13:28:07.28
謎に見た目だからな
しかもこっちのが一番ショックなんだけどね。

0101仕様書無しさん2024/03/29(金) 13:43:26.66
ディーラーが間違いなんか

0102仕様書無しさん2024/03/29(金) 14:52:52.76
ハガレンは昔のIP使う→遺産食いつぶしてるだけに適用するから、今から「トラック・特殊車両・作業車」は第一車線以外を走行禁止にするとか
かなりマージン取ってるていうから利用するだけだな

■ このスレッドは過去ログ倉庫に格納されています