X



C#, C♯, C#相談室 Part95
■ このスレッドは過去ログ倉庫に格納されています
0644デフォルトの名無しさん
垢版 |
2018/04/01(日) 13:16:23.13ID:Q3bP29mI
>>643
だから無駄な道具を乱造して散らかす奴が悪いんだろ?
いくら「これが正しい!」と喚いてもゴミ屋敷をスマートとは言えんわ
0645デフォルトの名無しさん
垢版 |
2018/04/01(日) 13:24:59.02ID:EnMpGyAP
なんかずれてんな
いやわざとか?

みんな「1行コードはクール」
みんな「いや害悪だ」

>>631「1行コードにはこんな意味不明な頭悪いコードが実在するんだぜぇ」

>>634「いやーそれはストラテジでしょ。普通のコードだよ」

あほ「巨大整数ガー!ゴミ屋敷ガー!」

途中から明後日の方向に向かってんだよ
一例に過剰反応バカが湧いてきたあたりからね
0646デフォルトの名無しさん
垢版 |
2018/04/01(日) 13:28:56.88ID:IPSX8M4/
一つ言えるのは、一行コードをセンスが無いやつが書くとゴミクズになるってことだな
まあ何行でもゴミと言えるかもしれんが、一行のゴミはメンテする時腹が立つ
0647デフォルトの名無しさん
垢版 |
2018/04/01(日) 13:30:25.54ID:EnMpGyAP
1行メソッドの利点を理解できないアホが逆ギレしてるだけのパターンもあるということは忘れないで
0648デフォルトの名無しさん
垢版 |
2018/04/01(日) 14:14:15.06ID:tywMjCxA
一行のゴミにも何か利点はあるはずだと頑なに改めようとしない>>647なのであった

マジでゴミ屋敷の主だな
0649デフォルトの名無しさん
垢版 |
2018/04/01(日) 14:20:30.29ID:G1/6VWB7
>>645はstrategyも理解してないアホの子だから許してあげて
ただのラッパーを戦略と勘違いしてるなんて、きっと今年の春から働き始める新人だから
0650デフォルトの名無しさん
垢版 |
2018/04/01(日) 14:28:00.99ID:tywMjCxA
上司「なんでこのインクリメントを関数に分けてんの?」

新人「様々な型に対応する為のストラテジです!巨大整数などにも対応できます!」

何というか無能な働き者って言葉がしっくり来るな
たぶんこいつは誰からも理解されずに五月病患って数ヶ月で退職するわ
0651デフォルトの名無しさん
垢版 |
2018/04/01(日) 14:39:00.26ID:yKN9r4eJ
インクリメントの(多相じゃなくて正しい意味での)ストラテジって何だろうね
++とInterlocked.Incrementを切り替えるとか?
エイプリルフールネタにもならんな
0654デフォルトの名無しさん
垢版 |
2018/04/01(日) 15:13:55.41ID:WEVo4Vkx
ゆとり世代はなんでも揃ってるところからスタートだから楽でいいよな
iteratorの実装なんて考えたことすらないんだろう
羨ましいよ
0656デフォルトの名無しさん
垢版 |
2018/04/01(日) 17:15:29.85ID:4YlUj4T1
>>650
何で巨大整数に対応する必要ない状況を前提としてるの?
対応すべきという状況を前提とした途端に真逆の結論になると思うけど
0658デフォルトの名無しさん
垢版 |
2018/04/01(日) 17:45:28.27ID:Ek+Kt6QK
巨大整数対応を勝手に仕様上あり得ないことにしている点
「○○にも対応できるように」の○○に巨大整数を入れるのはあくまで一例であり他にも山ほどあり得る点
この辺りが問題かな
言われた通りの物を納品すればいい所謂IT土方系の環境なら問題にならないんだろうけど
0659デフォルトの名無しさん
垢版 |
2018/04/01(日) 17:47:21.74ID:Aa3HndXz
>>656
対応すべきという状況を前提にしたとしても、>>650の新人がストラテジパターンを誤解している阿呆であるという結論は覆らない
>>631を型ごとに用意するのは一般にはパラメータ多相、あるいは単にオーバーロードと呼ぶんだよ
0660659
垢版 |
2018/04/01(日) 17:49:35.48ID:Aa3HndXz
すまん訂正
パラメータ多相じゃなくてアドホック多相だな
0661デフォルトの名無しさん
垢版 |
2018/04/01(日) 17:49:42.89ID:Ca3RLpqD
この手のっていつも「自分の前提」の元に議論初めてかみ合わないんだから止めとけよ
ネタが下らないことだし、そんなことにこだわるしかやることないのかよ
0662デフォルトの名無しさん
垢版 |
2018/04/01(日) 17:53:38.19ID:8TyNtssw
int型をBigInt型に切り替える必要が生じたとして、
型宣言から書き直さないといけないのにインクリメントを分離しておいて何が効率化できたというのかと
そもそもオブジェクト指向に則ればその型自体にインクリメントを備えるだろっていう

現実に設計したこともない新人が本の知識で言ってるだけだなこりゃ
0663デフォルトの名無しさん
垢版 |
2018/04/01(日) 18:21:49.73ID:8TyNtssw
正しい設計
INum num = new Num()
// INum num = new BigNum() ←クラス名を変えるだけ
num++ ←機能は型で規格化されてるので変更無用

間違った設計
Num num = new Num()
// BigNum num = new BigNum() ←型から変える必要がある
Increment(ref num) ←何これ?

void Increment(ref Num n) 処理
void Increment(ref BigNum n) 処理
↑型の数だけオーバーロードする必要がある
0665デフォルトの名無しさん
垢版 |
2018/04/01(日) 19:40:56.03ID:WEVo4Vkx
>>660
はぁ? どう見てもストラテジだろカス

void func<T>(T mi, T mx, FuncObj<T> increment) {
for(T i = mi; ! i.Equals(mx); increment.Exec(i)) {
//
}
}

class BigIntIncrent : FuncObj<BigInt> {
public Exec(ref BigInt x) {
x = x.Add(1);
}
}
0666デフォルトの名無しさん
垢版 |
2018/04/01(日) 19:44:56.66ID:WEVo4Vkx
>>663
なんでBigIntのソースが手元にある前提なんだよ
まあ素人は標準のパッケージ以外を持ってきて使うなんて経験はないのかもしれんから間違えても仕方がないか
君素人っぽいし
0667デフォルトの名無しさん
垢版 |
2018/04/01(日) 20:02:44.23ID:c1epJvM3
>>665
惜しい。一旦クールダウンしてよく考えよう。
同じ入力(コンテキスト)に対して複数のStrategyを定義し、状況によって使い分けるのがStrategyパターンだ。
一方incrementの場合、実装は入力の型に応じて一意に決まるだろ?「同じ入力」に対して複数の実装があるわけじゃない。
そういう、引数の型に応じて静的に実装を選択するのを一般に「多相」という。
特に、君のコードは関数型言語で型クラスと呼ばれるものに近い。ググってみると勉強になるよ。
0668デフォルトの名無しさん
垢版 |
2018/04/01(日) 20:08:31.72ID:WEVo4Vkx
>>667
1つ飛ばしでイテレートしたい場合とか同じ型でも幾らでもバリエーションは考えられるわけだがわかんねえだろうな用意されたもの使うだけのゆとりには
0670デフォルトの名無しさん
垢版 |
2018/04/01(日) 20:13:25.61ID:WEVo4Vkx
>>669
あらゆる物事に対してそれを理解するために必要な知能の下限が存在する
これって1つの真理だと思うのよ
0671デフォルトの名無しさん
垢版 |
2018/04/01(日) 20:20:07.28ID:PinoCRrg
>>670
funcって何?
funcObjって何?
miって何?
mxって何?
Execって何?どういう機能?
BigIntでAdd?コレクションなん?

パッと見ただけでこれだけ疑問が湧くんだが、
プログラマ百人に聞いたら百人が死ねって返すレベルのクソだぞこれ
命名だけでバレる実力なら無理して書くなよ
0672デフォルトの名無しさん
垢版 |
2018/04/01(日) 20:22:40.27ID:c1epJvM3
>>668
そうだね。確かに君の言う通りだ。
じゃあ君はなぜ>>665でわざわざジェネリックを使ったのかな?
>>665を見た殆どの人は、型に応じて++の実装を切り替えたいのだろうと思うだろうね。それを君はストラテジだと言っている。
このままでは誤解してしまう人もいるだろうから指摘したんだよ。
君自身はもしかしたら本当は正しく理解してたのかもしれないけど、衆目に晒すにはあまりにも不適切なレスだ。
0673デフォルトの名無しさん
垢版 |
2018/04/01(日) 20:25:32.72ID:WEVo4Vkx
文脈読めない、中心になってる話題を理解して枝葉末節を気にしない、っての実践するにもある程度の知能が必要なんだろうなー
そういうの苦手な人ってミーティングの時とか相当鬱陶しがられてると思うから注意したほうがいいよ
0675デフォルトの名無しさん
垢版 |
2018/04/01(日) 20:30:19.04ID:Aa3HndXz
>>673
悪いけど、文脈を読んだら>>665のコードは100人中100人が型++を切り替えようとしてるのだろうと解釈すると思うぞw
0677デフォルトの名無しさん
垢版 |
2018/04/01(日) 20:40:22.21ID:WEVo4Vkx
>>672
ジェネリックかどうかは関係ない話だろ
この例も仮にスクリプト言語だったら型引数は無くても動作する
たまたま型の指定が必要な言語を例に使ったからジェネリックになっているだけ
しかしそのエッセンス自体は何も変わってない
まずはそこを理解しよう
0678デフォルトの名無しさん
垢版 |
2018/04/01(日) 20:54:39.80ID:G1/6VWB7
>>665を読むとこいつうちにいた新人より頭悪い気がする
ストラテジとか言いながらやってることが関数型だし
これでデザパタのつもりなら学校通い直すのを勧める
0679デフォルトの名無しさん
垢版 |
2018/04/01(日) 20:55:42.47ID:WEVo4Vkx
ここでいうエッセンスというのは
* 処理の一部を外部から与えることによってアルゴリズムを交換可能にするテクニックをストラテジーパターンと言う
* ストラテジーはしばしばインクリメント処理のように非常に小さな処理になることがある
* その一例が>>631であり>>631馬鹿げたコードでもなんでもなく実用的なコードの断片である
という3点のことな
0680デフォルトの名無しさん
垢版 |
2018/04/01(日) 20:59:08.51ID:WEVo4Vkx
>>678
λや関数オブジェクトがサポートされる言語では暗黙的にストラテジーの考え方が利用されている
そうと意識してないだけだ
ちょうどいい時期だ上司に頼んでお前も新人研修受けてこい
0681デフォルトの名無しさん
垢版 |
2018/04/01(日) 21:00:23.18ID:GxluVQTa
何も見せてなければ何とでも言えたろうが、
>>665を見せてしまったらもう無理だな
レベルの低さが露呈してるから言い訳にもならない

正直>>665を見たあとだと>>631が優秀に見えるくらいだし
0684デフォルトの名無しさん
垢版 |
2018/04/01(日) 21:11:29.38ID:G1/6VWB7
そもそも関数の細分化は可読性を損ねるって話なのに、
抽象的で省略しまくりの名前付けてる時点でな
設計に口出すのは十年早いと思うわ
0685デフォルトの名無しさん
垢版 |
2018/04/01(日) 21:17:25.87ID:GxluVQTa
どうでも良いが>>665をよく見るとこいつrefの使い方すら知らないど素人くさいな
値次第でループバグ起こす構造だしこんなコード実務で仕込まれたら俺ならテロ認定する
0687デフォルトの名無しさん
垢版 |
2018/04/01(日) 21:24:13.70ID:GxluVQTa
本気で書いたコード貶されたら

「あれは手抜きだからw」と言い出す

まあリアルにいるよな
0690デフォルトの名無しさん
垢版 |
2018/04/04(水) 16:05:17.38ID:h/TS8w43
stringが参照型ってことはさ

string str;
void Reset() => str = "";

とするより

string str;
string None = "";
void Reset() => str = None;

と生成済みのテキストを使い回した方が効率良いの?
0694デフォルトの名無しさん
垢版 |
2018/04/04(水) 20:17:49.55ID:dY0QYfwJ
>>690 変わらないと思われ

string Func0(){return "test";}
string Func1(){return "test";}
string Func2(){return "te"+"st";}
string Func3(){return "TEST".ToLower();}

string a=Func1(), b=Func2();
Console.WriteLine(Object.ReferenceEquals(a,b));
0701デフォルトの名無しさん
垢版 |
2018/04/05(木) 08:16:57.82ID:G4evJUNh
アメリカではソフトウェアの内製化やクラウド化により、
ソフトウェアは自己責任でどんどんリリースできるようになってるの
自己責任ならデグレ出したらこっそり直してすぐにリリースしちゃえばいいの
SI型ビジネスとは違い、過剰にリスクを避ける必要がない
VSやC#もそういう変化に適応して開発やリリースのポリシーが変わってしまった
もうジャップランドのSIでは使えないよ
0705デフォルトの名無しさん
垢版 |
2018/04/05(木) 14:39:36.05ID:9mHHHg+P
リッチテキストボックスでDetectUrlsをTrueにしてハイパーリンクを開けるようにしたんだけど、
ハイパーリンクをクリックして既定のブラウザで開くと、勝手に最終行までジャンプしてしまう。
仕方がないのでEnabledをいったんfalseにして、その後開き、もう一度trueに戻すとジャンプはしなくなったんだけど、
リッチテキストボックスの任意の場所をクリックすると、やっぱり変な場所に表示が移ってしまう。
なんか対策ないでしょうか?
0706デフォルトの名無しさん
垢版 |
2018/04/05(木) 14:43:10.44ID:L1xJuAmc
>Enabledをいったんfalseにして、その後開き、もう一度trueに戻す
ごめん何言ってるのか全然わからない
0707デフォルトの名無しさん
垢版 |
2018/04/05(木) 14:44:33.22ID:9mHHHg+P
>>706
すいません、こうです
private void richTextBox1_LinkClicked(object sender, LinkClickedEventArgs e)
{
richTextBox1.Enabled = false;
System.Diagnostics.Process.Start(e.LinkText);
richTextBox1.Enabled = true;
}
0708デフォルトの名無しさん
垢版 |
2018/04/06(金) 01:34:01.86ID:CRWC4s8a
treeViewのちらつき防止ってどうやるんだろう?
5chブラウザとか、mousemoveでテキストにアンダーラインが出るようにしても全然ちらつかないよね
ダブルバッファでいけるのかと思ったら、treeViewはそれでは解決しないようで・・・
0709デフォルトの名無しさん
垢版 |
2018/04/06(金) 17:11:38.73ID:YfcQQia/
>>705
ミニマムコード書いて確認しろよ
クリックした位置にカーソル出ないのなら分かるが勝手に最終行までジャンプとか意味不明
あと初心者スレ池
0710デフォルトの名無しさん
垢版 |
2018/04/06(金) 19:56:07.03ID:/br3WlRA
>>700
もうここ10年新規案件やってないな。全部Javaに持ってかれたまま。
当然といえば当然だな。老害ヘジの暴走を誰も止めることができなかった。
ID:d442a5v8 ←みたいな低スキル信者の取り巻きばっかなんだろうな。
0712デフォルトの名無しさん
垢版 |
2018/04/06(金) 20:29:12.80ID:z7q8Sb4V
会社で生産管理ソフト導入したらそれ.netだった
描画はネイティブのDLLに丸投げだったけど
0714デフォルトの名無しさん
垢版 |
2018/04/07(土) 07:53:48.13ID:qEuioEYI
業務だと冗長でもいいからバカでも使える単純な機能だけで組まなきゃいけない
三項演算子程度のものも使用禁止
C#とは無縁の世界
0715デフォルトの名無しさん
垢版 |
2018/04/07(土) 07:59:59.71ID:h+NQtj0i
それだけじゃ足りない
どんな初心者、いろんな人が保守しても長期間にわたって大きく崩さないような土台を建てる必要がある
超絶技法で難解なプログラムを作るよりよほど難しい
0716デフォルトの名無しさん
垢版 |
2018/04/07(土) 08:48:38.33ID:4H5fCx9/
そして冗長でコピペだらけの巨大なシステムが出来上がって別の意味で保守できなくなるんだろ
業務系ってそんなシステムばっかりじゃん
誰でも読めるようにひらがなだけで六法全書を書く並みにバカ
余計わかりにくくなるだけ
0717デフォルトの名無しさん
垢版 |
2018/04/07(土) 09:06:01.54ID:JAl7hTiY
それは分かりやすさというより開発のスケーラビリティの問題
日本のSEってトップダウンのコード設計が全くできないから、
開発規模をスケールさせようとすると重複上等でなるべく個別の機能ごとに独立した形にするしかないの
0718デフォルトの名無しさん
垢版 |
2018/04/07(土) 09:59:33.70ID:4H5fCx9/
重複した分だけ開発・保守工数が増えてくから重複上等じゃスケールしないよ
あっちでバグがあった、仕様が変わった、横展開しろ、って炎上の王道パターンだよね

つかわかりやすさの問題だ
言語機能は便利でわかりやすいから追加された
それを使わないということはそれだけわかりにくくなるということ

ベタなループ書くよりLinqの方がわかりやすいからLinqが発明された
そういうこと
0719デフォルトの名無しさん
垢版 |
2018/04/07(土) 10:56:32.14ID:BpE5vbQJ
20年以上前から言語機能では勝負してないと思う
そういうのよりミドルウェアの有無などのほうが業務でjavaが選ばれる理由だと思う

一から新しいものを作らないといけないか既存のものを使えるかが分かれ目
業務で必須のDIとかそういうのをしっかり土台ができているのか

c#はそういう所でjavaに負ける
0720デフォルトの名無しさん
垢版 |
2018/04/07(土) 11:18:40.70ID:9qiuAsep
Javaなんて、Android向けのクライアント開発なければどうなのよ??
今業務でもサーバーサイドJavaなの??
んなわけないよね?
0721デフォルトの名無しさん
垢版 |
2018/04/07(土) 11:22:17.68ID:BpE5vbQJ
業務系のロジックは大体javaだよ
一般的に開発求人といえばjava

大規模になればなるほどjava以外の選択肢はなくなる
0722デフォルトの名無しさん
垢版 |
2018/04/07(土) 11:30:53.53ID:e9I+7Iw0
今時ミドルウェアやサービスに大した差はないってのが現実
そもそもプラットフォームや言語を選ぶ時点でそのミドルウェアは候補から外していい

>>720
Javaで書かれたサーバーサイド資産は大部分がメンテナンスモード
新規開発はかなり減ってる
0725デフォルトの名無しさん
垢版 |
2018/04/07(土) 16:44:15.68ID:1YUEtCB1
EXCEL(xls形式)のデータを読み取って何らかの処理を施して別ファイルに書き込みたくてNPOIについて調べてるんだけど
セル内文字列の一部に文字飾り(取り消し線、上付き、下付き)がある場合にどの文字飾りか判定できる方法ってない?(文字飾りを反映させて別ファイルに移すために)
HSSFRichTextStringとして読み取ればnumFormattingRunsが文字飾り有無で文字列を分割した際の部分文字列数となることは分かった
getFontAtIndex、getFontOfFormattingRunで指定箇所の文字飾り情報が分かると思ったんだけどこれで得られる数値が同じ文字飾り種類でもコロコロ変わってよく分からない状態
0726デフォルトの名無しさん
垢版 |
2018/04/07(土) 16:47:16.96ID:tI04O4km
Javaエンジニア「インスタンスメソッドは難しい。インスタンスを禁止して初心者でも理解できるstaticメソッドを使おう。」

Javaエンジニア「ファイルが沢山あると初心者が混乱する。クラスを禁止してファイルをまとめよう」

Javaエンジニア「関数は初心者には難しい。すべてMainに書こう」
0727デフォルトの名無しさん
垢版 |
2018/04/07(土) 17:54:25.23ID:EvpDwywp
C#はVBがカスPGカス案件の受け皿になってるお陰で、Javaに比べると平均レベルは高い気がする
というかJavaのスキル幅が広すぎる
0729デフォルトの名無しさん
垢版 |
2018/04/07(土) 18:11:21.85ID:tI04O4km
C#は上級者向けって散々プロパガンダしてきたから自覚のある雑魚がVB.NETに吸収されてくれた
Javaは誰でもウェルカム初心者に最適の言語みたいな空気を出し続けた結果底辺が爆発的に増えて悲惨な事になった
0730デフォルトの名無しさん
垢版 |
2018/04/07(土) 18:45:08.89ID:yyzWBMut
(自称)上級者うけるw
0733デフォルトの名無しさん
垢版 |
2018/04/07(土) 19:24:31.38ID:tpM+GlB1
C#勉強してもJavaと違ってほとんど仕事ないんだぞ。
最新機能のコード張ってドヤ顔してる奴は日頃何のコード書いてんだ?
もしかしてアプリは何も作ってない生産性ゼロの無職じゃないのか。
0734デフォルトの名無しさん
垢版 |
2018/04/07(土) 19:35:14.49ID:Hh6FAb+r
>>733
最新機能のコードってどのレスだよ…
仕事でやっているような奴らがこんなところにこんな内容で書き込んでいたら心底軽蔑するわ
0735デフォルトの名無しさん
垢版 |
2018/04/07(土) 19:37:30.15ID:tpM+GlB1
>>734
落ち着けよ。何言ってるか分からん。
日頃から人と話してないからそういう変な日本語になるんだぞ。
0737デフォルトの名無しさん
垢版 |
2018/04/07(土) 19:51:31.58ID:9Vh0SARC
仕事がないなら自分で仕事を作ればいいだけ
仕事が流れてやってくるのを待つだけならプログラマーやらない方がいい
0739デフォルトの名無しさん
垢版 |
2018/04/07(土) 20:06:20.72ID:h+NQtj0i
仕事というのはやれば利益が出るものだ
利益が出ないものは仕事ではない
安い労働力じゃないと利益が出ないのであればそれはすでに仕事じゃないんだ
0743デフォルトの名無しさん
垢版 |
2018/04/08(日) 00:23:39.85ID:gtzBS3Pe
C#のnAudioを使用してボイスチェンジャーを自作しようと考えております。
音声データのリアルタイム入出力及び音声データ数の増減によるピッチ変更までは出来ている状況です。
私が今困っているのは音声データ数の増減なしのピッチ変更についてなのですが、どなたかご教示願えませんでしょうか?
また、使用言語がC#のため、こちらの板に書きませていただきましたが、質問内容が不適切であれば、適切な相談する板をご紹介願えませんでしょうか。
以上です。よろしくお願いいたします。
■ このスレッドは過去ログ倉庫に格納されています

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