アカウント名:
パスワード:
行数減らすことに意識持ってくより分岐とネストを減らすことに血眼になればいいのにあと妙な分岐条件とかな
それには賛成できません適切な分割ができない場合、プログラマの能力であれ問題の本質であれですが、せめて一か所にまとまっているほうが読解しやすいですよ
>せめて一か所にまとまっているほうが読解しやすいですよそういう話をしてんじゃないよ。複雑度を増やすなっていってんの
下のMSの例はまだ簡単な方だけど https://msdn.microsoft.com/ja-jp/library/ms182212.aspx [microsoft.com]
スパゲッティなネストの例だと二次元のフィールドを扱うときfor( 前){}for(中){ {前端} for(中々){ たまに特殊処理でのbreak;} {たまに特殊処理から抜けたときの後処理break;だったりcontiueだったり} {後端}}for(最後){}とか強引に解決してるとかな。素直にそれぞれの点の状態情報だけ持つ別配列を持てばいいのにあと
> とか強引に解決してるとかな。素直にそれぞれの点の状態情報だけ持つ別配列を持てばいいのに
素直にそれぞれの点の状態情報だけを持つ別配列を素直に書いてくださると議論しやすいのですが、breakしたりcontinueしたりするのでたぶん素直には書けないんでしょうましてや素直に読めはしない
アドホックなデータ構造が多いとプログラムはかなり読みづらくなりますので、どうしても行数を減らしたいのなら 最上辺(...);for(中){ {左端} int n = 中身(...); if (n == 最下辺までスキップ) break; else if (n == 次の行までスキップ) con
女性声優のCDである || 女性アイドルのCDである、という式にこれ以上簡潔な名前をつけることは不可能です
!持っている || 握手券入り、という式について考えますと、「持っている」「握手券入り」というのはプログラマに与えられたただの事実ですしかしこの式にたとえば「欲しいCD」という名前を付けることはできませんなぜなら「欲しいCD」というのはあくまで女性声優かアイドルのCDについての文脈においてのみ意味を持つ命題だからです無意味な命題のために名前をつけるとプログラムに混乱を招きます
if( (女性声優 || 女性アイドル) && (!すでに持っている || 握手券入り) ) { CDを購入 }
こういうことですね。とても分かりやすいです。感動しました。師匠と呼ばせてください。
>if( (女性声優 || 女性アイドル) && (!すでに持っている || 握手券入り) ) { CDを購入 }cond1という名前にこだわってる割にそもそもその全体の分岐条件に名前をつけない時点でセンスがないからお前はプログラマ名乗るの辞めろそういう奴はクライアントのいうままCDを購入の中に女性で握手券入りだけど欲しくない人は除外ってのを加え始めて最期に誰も保守できないクズを量産する羽目になんだよ
> cond1という名前にこだわってる割にそもそもその全体の分岐条件に名前をつけない時点でセンスがないから
cond1という名前に文句をつけたのはわたしですが
> 女性声優か女性アイドルのCDで、かつ、まだ持っていないか握手券入りなら、CDを買う
と、わざわざ日本語で書きましたが、気づかなかったのでしょうかあなたもそう愚かな人間ではないでしょうに、先入観というのは恐ろしいですね
ちょっと不親切でした
という複雑な文が容易に理解できるのは、「若くてかわいい女性声優がアイドル売りされている」「握手券目当てに同じCDを何枚も買う人がたくさんいる」といったことが受け手に常識としてあるからですそうでなければ、同じCDを何枚も買うことになる(可能性がある)わけですから、きわめて直観に反することになるので、理解は困難でしょう
だからこういうものをプログラムにするのであれば「何度も握手をするために同じCDを何度も買う」ということをしつこく強調するとよいそうすると東アジア以外のプログラマにバグじゃねーのと疑われなくてもすむでしょう
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
開いた括弧は必ず閉じる -- あるプログラマー
分岐とネストだっつーの (スコア:1)
行数減らすことに意識持ってくより
分岐とネストを減らすことに血眼になればいいのに
あと妙な分岐条件とかな
Re: (スコア:0)
それには賛成できません
適切な分割ができない場合、プログラマの能力であれ問題の本質であれですが、せめて一か所にまとまっているほうが読解しやすいですよ
Re: (スコア:0)
>せめて一か所にまとまっているほうが読解しやすいですよ
そういう話をしてんじゃないよ。複雑度を増やすなっていってんの
下のMSの例はまだ簡単な方だけど
https://msdn.microsoft.com/ja-jp/library/ms182212.aspx [microsoft.com]
スパゲッティなネストの例だと二次元のフィールドを扱うとき
for( 前){}
for(中){
{前端}
for(中々){ たまに特殊処理でのbreak;}
{たまに特殊処理から抜けたときの後処理break;だったりcontiueだったり}
{後端}
}
for(最後){}
とか強引に解決してるとかな。素直にそれぞれの点の状態情報だけ持つ別配列を持てばいいのに
あと
Re: (スコア:0)
> とか強引に解決してるとかな。素直にそれぞれの点の状態情報だけ持つ別配列を持てばいいのに
素直にそれぞれの点の状態情報だけを持つ別配列を素直に書いてくださると議論しやすいのですが、breakしたりcontinueしたりするのでたぶん素直には書けないんでしょう
ましてや素直に読めはしない
アドホックなデータ構造が多いとプログラムはかなり読みづらくなりますので、どうしても行数を減らしたいのなら
最上辺(...);
for(中){
{左端}
int n = 中身(...);
if (n == 最下辺までスキップ) break;
else if (n == 次の行までスキップ) con
Re: (スコア:0)
女性声優のCDである || 女性アイドルのCDである、という式にこれ以上簡潔な名前をつけることは不可能です
!持っている || 握手券入り、という式について考えますと、「持っている」「握手券入り」というのはプログラマに与えられたただの事実です
しかしこの式にたとえば「欲しいCD」という名前を付けることはできません
なぜなら「欲しいCD」というのはあくまで女性声優かアイドルのCDについての文脈においてのみ意味を持つ命題だからです
無意味な命題のために名前をつけるとプログラムに混乱を招きます
Re: (スコア:0)
if( (女性声優 || 女性アイドル) && (!すでに持っている || 握手券入り) ) { CDを購入 }
こういうことですね。
とても分かりやすいです。感動しました。
師匠と呼ばせてください。
Re: (スコア:0)
>if( (女性声優 || 女性アイドル) && (!すでに持っている || 握手券入り) ) { CDを購入 }
cond1という名前にこだわってる割にそもそもその全体の分岐条件に名前をつけない時点でセンスがないから
お前はプログラマ名乗るの辞めろ
そういう奴はクライアントのいうままCDを購入の中に女性で握手券入りだけど欲しくない人は除外ってのを加え始めて
最期に誰も保守できないクズを量産する羽目になんだよ
Re: (スコア:0)
> cond1という名前にこだわってる割にそもそもその全体の分岐条件に名前をつけない時点でセンスがないから
cond1という名前に文句をつけたのはわたしですが
> 女性声優か女性アイドルのCDで、かつ、まだ持っていないか握手券入りなら、CDを買う
と、わざわざ日本語で書きましたが、気づかなかったのでしょうか
あなたもそう愚かな人間ではないでしょうに、先入観というのは恐ろしいですね
Re: (スコア:0)
ちょっと不親切でした
> 女性声優か女性アイドルのCDで、かつ、まだ持っていないか握手券入りなら、CDを買う
という複雑な文が容易に理解できるのは、「若くてかわいい女性声優がアイドル売りされている」「握手券目当てに同じCDを何枚も買う人がたくさんいる」といったことが受け手に常識としてあるからです
そうでなければ、同じCDを何枚も買うことになる(可能性がある)わけですから、きわめて直観に反することになるので、理解は困難でしょう
だからこういうものをプログラムにするのであれば「何度も握手をするために同じCDを何度も買う」ということをしつこく強調するとよい
そうすると東アジア以外のプログラマにバグじゃねーのと疑われなくてもすむでしょう