C#, C♯, C#相談室 Part95
■ このスレッドは過去ログ倉庫に格納されています
■Visual Studio 2017 Community(無償の統合開発環境)等はこちら http://www.visualstudio.com/downloads/ ■コードを貼る場合はこちら http://ideone.com/ ■前スレ C#, C♯, C#相談室 Part94 http://mevius.2ch.net/test/read.cgi/tech/1492843013/ ■次スレは>>970 が建てる事 建てられない場合は他を指定する事。 >>643 だから無駄な道具を乱造して散らかす奴が悪いんだろ? いくら「これが正しい!」と喚いてもゴミ屋敷をスマートとは言えんわ なんかずれてんな いやわざとか? みんな「1行コードはクール」 みんな「いや害悪だ」 >>631 「1行コードにはこんな意味不明な頭悪いコードが実在するんだぜぇ」 >>634 「いやーそれはストラテジでしょ。普通のコードだよ」 あほ「巨大整数ガー!ゴミ屋敷ガー!」 途中から明後日の方向に向かってんだよ 一例に過剰反応バカが湧いてきたあたりからね 一つ言えるのは、一行コードをセンスが無いやつが書くとゴミクズになるってことだな まあ何行でもゴミと言えるかもしれんが、一行のゴミはメンテする時腹が立つ 1行メソッドの利点を理解できないアホが逆ギレしてるだけのパターンもあるということは忘れないで 一行のゴミにも何か利点はあるはずだと頑なに改めようとしない>>647 なのであった マジでゴミ屋敷の主だな >>645 はstrategyも理解してないアホの子だから許してあげて ただのラッパーを戦略と勘違いしてるなんて、きっと今年の春から働き始める新人だから 上司「なんでこのインクリメントを関数に分けてんの?」 新人「様々な型に対応する為のストラテジです!巨大整数などにも対応できます!」 何というか無能な働き者って言葉がしっくり来るな たぶんこいつは誰からも理解されずに五月病患って数ヶ月で退職するわ インクリメントの(多相じゃなくて正しい意味での)ストラテジって何だろうね ++とInterlocked.Incrementを切り替えるとか? エイプリルフールネタにもならんな ここには初心者スレに行ったほうがいいような連中しか居ないようだな ゆとり世代はなんでも揃ってるところからスタートだから楽でいいよな iteratorの実装なんて考えたことすらないんだろう 羨ましいよ >>650 何で巨大整数に対応する必要ない状況を前提としてるの? 対応すべきという状況を前提とした途端に真逆の結論になると思うけど 仕様上ありえない予測 それを人は 妄想 と呼ぶのだ 巨大整数対応を勝手に仕様上あり得ないことにしている点 「○○にも対応できるように」の○○に巨大整数を入れるのはあくまで一例であり他にも山ほどあり得る点 この辺りが問題かな 言われた通りの物を納品すればいい所謂IT土方系の環境なら問題にならないんだろうけど >>656 対応すべきという状況を前提にしたとしても、>>650 の新人がストラテジパターンを誤解している阿呆であるという結論は覆らない >>631 を型ごとに用意するのは一般にはパラメータ多相、あるいは単にオーバーロードと呼ぶんだよ すまん訂正 パラメータ多相じゃなくてアドホック多相だな この手のっていつも「自分の前提」の元に議論初めてかみ合わないんだから止めとけよ ネタが下らないことだし、そんなことにこだわるしかやることないのかよ int型をBigInt型に切り替える必要が生じたとして、 型宣言から書き直さないといけないのにインクリメントを分離しておいて何が効率化できたというのかと そもそもオブジェクト指向に則ればその型自体にインクリメントを備えるだろっていう 現実に設計したこともない新人が本の知識で言ってるだけだなこりゃ 正しい設計 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) 処理 ↑型の数だけオーバーロードする必要がある どーでもいいことかもしれんが、セミコロンがないのが凄く気になる >>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); } } >>663 なんでBigIntのソースが手元にある前提なんだよ まあ素人は標準のパッケージ以外を持ってきて使うなんて経験はないのかもしれんから間違えても仕方がないか 君素人っぽいし >>665 惜しい。一旦クールダウンしてよく考えよう。 同じ入力(コンテキスト)に対して複数のStrategyを定義し、状況によって使い分けるのがStrategyパターンだ。 一方incrementの場合、実装は入力の型に応じて一意に決まるだろ?「同じ入力」に対して複数の実装があるわけじゃない。 そういう、引数の型に応じて静的に実装を選択するのを一般に「多相」という。 特に、君のコードは関数型言語で型クラスと呼ばれるものに近い。ググってみると勉強になるよ。 >>667 1つ飛ばしでイテレートしたい場合とか同じ型でも幾らでもバリエーションは考えられるわけだがわかんねえだろうな用意されたもの使うだけのゆとりには >>665 なにこの頭悪すぎるゴミ 意図が読めない典型じゃん >>669 あらゆる物事に対してそれを理解するために必要な知能の下限が存在する これって1つの真理だと思うのよ >>670 funcって何? funcObjって何? miって何? mxって何? Execって何?どういう機能? BigIntでAdd?コレクションなん? パッと見ただけでこれだけ疑問が湧くんだが、 プログラマ百人に聞いたら百人が死ねって返すレベルのクソだぞこれ 命名だけでバレる実力なら無理して書くなよ >>668 そうだね。確かに君の言う通りだ。 じゃあ君はなぜ>>665 でわざわざジェネリックを使ったのかな? >>665 を見た殆どの人は、型に応じて++の実装を切り替えたいのだろうと思うだろうね。それを君はストラテジだと言っている。 このままでは誤解してしまう人もいるだろうから指摘したんだよ。 君自身はもしかしたら本当は正しく理解してたのかもしれないけど、衆目に晒すにはあまりにも不適切なレスだ。 文脈読めない、中心になってる話題を理解して枝葉末節を気にしない、っての実践するにもある程度の知能が必要なんだろうなー そういうの苦手な人ってミーティングの時とか相当鬱陶しがられてると思うから注意したほうがいいよ >>665 これforでローカルに代入してるが値型のつもりなのか? >>673 悪いけど、文脈を読んだら>>665 のコードは100人中100人が型++を切り替えようとしてるのだろうと解釈すると思うぞw >>672 ジェネリックかどうかは関係ない話だろ この例も仮にスクリプト言語だったら型引数は無くても動作する たまたま型の指定が必要な言語を例に使ったからジェネリックになっているだけ しかしそのエッセンス自体は何も変わってない まずはそこを理解しよう >>665 を読むとこいつうちにいた新人より頭悪い気がする ストラテジとか言いながらやってることが関数型だし これでデザパタのつもりなら学校通い直すのを勧める ここでいうエッセンスというのは * 処理の一部を外部から与えることによってアルゴリズムを交換可能にするテクニックをストラテジーパターンと言う * ストラテジーはしばしばインクリメント処理のように非常に小さな処理になることがある * その一例が>>631 であり>>631 馬鹿げたコードでもなんでもなく実用的なコードの断片である という3点のことな >>678 λや関数オブジェクトがサポートされる言語では暗黙的にストラテジーの考え方が利用されている そうと意識してないだけだ ちょうどいい時期だ上司に頼んでお前も新人研修受けてこい 何も見せてなければ何とでも言えたろうが、 >>665 を見せてしまったらもう無理だな レベルの低さが露呈してるから言い訳にもならない 正直>>665 を見たあとだと>>631 が優秀に見えるくらいだし >>680 世間一般的にstrategyというのは>>663 の例を指す お前のは違う そもそも関数の細分化は可読性を損ねるって話なのに、 抽象的で省略しまくりの名前付けてる時点でな 設計に口出すのは十年早いと思うわ どうでも良いが>>665 をよく見るとこいつrefの使い方すら知らないど素人くさいな 値次第でループバグ起こす構造だしこんなコード実務で仕込まれたら俺ならテロ認定する 本気で書いたコード貶されたら 「あれは手抜きだからw」と言い出す まあリアルにいるよな ミーティングとか言い出して露骨に話題を避けようとしてるの笑える stringが参照型ってことはさ string str; void Reset() => str = ""; とするより string str; string None = ""; void Reset() => str = None; と生成済みのテキストを使い回した方が効率良いの? >>692 null代入するのはC#8.0で警告対象 >>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)); >>693 非推奨になるのか! って、C#5.0から変える気が無いけどもw >>690 これILはどっちも一緒の結果にならないのかね >>698 Formしか使わないからね まぁ最近はスマホが多いのもあるけど C#ってどんどん惨くなってねーか。業務じゃもう使えないだろ。 アメリカではソフトウェアの内製化やクラウド化により、 ソフトウェアは自己責任でどんどんリリースできるようになってるの 自己責任ならデグレ出したらこっそり直してすぐにリリースしちゃえばいいの SI型ビジネスとは違い、過剰にリスクを避ける必要がない VSやC#もそういう変化に適応して開発やリリースのポリシーが変わってしまった もうジャップランドのSIでは使えないよ リッチテキストボックスでDetectUrlsをTrueにしてハイパーリンクを開けるようにしたんだけど、 ハイパーリンクをクリックして既定のブラウザで開くと、勝手に最終行までジャンプしてしまう。 仕方がないのでEnabledをいったんfalseにして、その後開き、もう一度trueに戻すとジャンプはしなくなったんだけど、 リッチテキストボックスの任意の場所をクリックすると、やっぱり変な場所に表示が移ってしまう。 なんか対策ないでしょうか? >Enabledをいったんfalseにして、その後開き、もう一度trueに戻す ごめん何言ってるのか全然わからない >>706 すいません、こうです private void richTextBox1_LinkClicked(object sender, LinkClickedEventArgs e) { richTextBox1.Enabled = false; System.Diagnostics.Process.Start(e.LinkText); richTextBox1.Enabled = true; } treeViewのちらつき防止ってどうやるんだろう? 5chブラウザとか、mousemoveでテキストにアンダーラインが出るようにしても全然ちらつかないよね ダブルバッファでいけるのかと思ったら、treeViewはそれでは解決しないようで・・・ >>705 ミニマムコード書いて確認しろよ クリックした位置にカーソル出ないのなら分かるが勝手に最終行までジャンプとか意味不明 あと初心者スレ池 >>700 もうここ10年新規案件やってないな。全部Javaに持ってかれたまま。 当然といえば当然だな。老害ヘジの暴走を誰も止めることができなかった。 ID:d442a5v8 ←みたいな低スキル信者の取り巻きばっかなんだろうな。 CAD系だから低身の見物 流石にJAVAでやれと言われた事は無いな 会社で生産管理ソフト導入したらそれ.netだった 描画はネイティブのDLLに丸投げだったけど 業務で言えばjava : c# = 1000 : 1 ぐらいなイメージ 業務だと冗長でもいいからバカでも使える単純な機能だけで組まなきゃいけない 三項演算子程度のものも使用禁止 C#とは無縁の世界 それだけじゃ足りない どんな初心者、いろんな人が保守しても長期間にわたって大きく崩さないような土台を建てる必要がある 超絶技法で難解なプログラムを作るよりよほど難しい そして冗長でコピペだらけの巨大なシステムが出来上がって別の意味で保守できなくなるんだろ 業務系ってそんなシステムばっかりじゃん 誰でも読めるようにひらがなだけで六法全書を書く並みにバカ 余計わかりにくくなるだけ それは分かりやすさというより開発のスケーラビリティの問題 日本のSEってトップダウンのコード設計が全くできないから、 開発規模をスケールさせようとすると重複上等でなるべく個別の機能ごとに独立した形にするしかないの 重複した分だけ開発・保守工数が増えてくから重複上等じゃスケールしないよ あっちでバグがあった、仕様が変わった、横展開しろ、って炎上の王道パターンだよね つかわかりやすさの問題だ 言語機能は便利でわかりやすいから追加された それを使わないということはそれだけわかりにくくなるということ ベタなループ書くよりLinqの方がわかりやすいからLinqが発明された そういうこと 20年以上前から言語機能では勝負してないと思う そういうのよりミドルウェアの有無などのほうが業務でjavaが選ばれる理由だと思う 一から新しいものを作らないといけないか既存のものを使えるかが分かれ目 業務で必須のDIとかそういうのをしっかり土台ができているのか c#はそういう所でjavaに負ける Javaなんて、Android向けのクライアント開発なければどうなのよ?? 今業務でもサーバーサイドJavaなの?? んなわけないよね? 業務系のロジックは大体javaだよ 一般的に開発求人といえばjava 大規模になればなるほどjava以外の選択肢はなくなる 今時ミドルウェアやサービスに大した差はないってのが現実 そもそもプラットフォームや言語を選ぶ時点でそのミドルウェアは候補から外していい >>720 Javaで書かれたサーバーサイド資産は大部分がメンテナンスモード 新規開発はかなり減ってる webプログラマーと業務プログラマーは別 業務はほぼjava一択 >>716 ちゃっかり業務系を六法全書に例えるなよw あれは絵本だぞひらがなが最適なんだよ EXCEL(xls形式)のデータを読み取って何らかの処理を施して別ファイルに書き込みたくてNPOIについて調べてるんだけど セル内文字列の一部に文字飾り(取り消し線、上付き、下付き)がある場合にどの文字飾りか判定できる方法ってない?(文字飾りを反映させて別ファイルに移すために) HSSFRichTextStringとして読み取ればnumFormattingRunsが文字飾り有無で文字列を分割した際の部分文字列数となることは分かった getFontAtIndex、getFontOfFormattingRunで指定箇所の文字飾り情報が分かると思ったんだけどこれで得られる数値が同じ文字飾り種類でもコロコロ変わってよく分からない状態 Javaエンジニア「インスタンスメソッドは難しい。インスタンスを禁止して初心者でも理解できるstaticメソッドを使おう。」 Javaエンジニア「ファイルが沢山あると初心者が混乱する。クラスを禁止してファイルをまとめよう」 Javaエンジニア「関数は初心者には難しい。すべてMainに書こう」 C#はVBがカスPGカス案件の受け皿になってるお陰で、Javaに比べると平均レベルは高い気がする というかJavaのスキル幅が広すぎる VB.netは何のメリットもないのになんでつかってんだろ? C#は上級者向けって散々プロパガンダしてきたから自覚のある雑魚がVB.NETに吸収されてくれた Javaは誰でもウェルカム初心者に最適の言語みたいな空気を出し続けた結果底辺が爆発的に増えて悲惨な事になった 多分VB.netのほうが難しい 少なくとも見づらい >>10 Javaで言うNashornみたいなのあります? それでjQuery使いたい。 C#勉強してもJavaと違ってほとんど仕事ないんだぞ。 最新機能のコード張ってドヤ顔してる奴は日頃何のコード書いてんだ? もしかしてアプリは何も作ってない生産性ゼロの無職じゃないのか。 >>733 最新機能のコードってどのレスだよ… 仕事でやっているような奴らがこんなところにこんな内容で書き込んでいたら心底軽蔑するわ >>734 落ち着けよ。何言ってるか分からん。 日頃から人と話してないからそういう変な日本語になるんだぞ。 仕事がないなら自分で仕事を作ればいいだけ 仕事が流れてやってくるのを待つだけならプログラマーやらない方がいい >>733 仕事はあるんだよjavaドカには縁がないだけでさ 仕事というのはやれば利益が出るものだ 利益が出ないものは仕事ではない 安い労働力じゃないと利益が出ないのであればそれはすでに仕事じゃないんだ マ板でやれよ 趣味グラマには関係ないしローカルルール違反 >>708 ヒマだったから試したけど5chブラウザがどうなっているか知らんけどダブルバッファ設定なしでチラつくように見えないが https://msdn.microsoft.com/ja-jp/library/system.windows.forms.treeview.hottracking (v=vs.110).aspx 背景付けたらチラつくかもしれないが、それはダブルバッファ設定で解決するはず C#のnAudioを使用してボイスチェンジャーを自作しようと考えております。 音声データのリアルタイム入出力及び音声データ数の増減によるピッチ変更までは出来ている状況です。 私が今困っているのは音声データ数の増減なしのピッチ変更についてなのですが、どなたかご教示願えませんでしょうか? また、使用言語がC#のため、こちらの板に書きませていただきましたが、質問内容が不適切であれば、適切な相談する板をご紹介願えませんでしょうか。 以上です。よろしくお願いいたします。 ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.1 2024/04/28 Walang Kapalit ★ | Donguri System Team 5ちゃんねる