C#, C♯, C#相談室 Part94 [無断転載禁止]©2ch.net
レス数が1000を超えています。これ以上書き込みはできません。
■Visual Studio 2015 Community & Express (無償の統合開発環境)等はこちら
http://www.visualstudio.com/downloads/
■コードを貼る場合はこちら
http://ideone.com/
■前スレ
C#, C♯, C#相談室 Part92 (実質93)
http://echo.2ch.net/test/read.cgi/tech/1485589613/
■次スレは>>970が建てる事
建てられない場合は他を指定する事。 ■過去スレ
C#, C♯, C#相談室 Part89
http://peace.2ch.net/test/read.cgi/tech/1443271409/
C#, C♯, C#相談室 Part90
http://echo.2ch.net/test/read.cgi/tech/1455160063/
C#, C♯, C#相談室 Part91
http://echo.2ch.net/test/read.cgi/tech/1467142749/
C#, C♯, C#相談室 Part91 (実質Part92)
http://echo.2ch.net/test/read.cgi/tech/1467211515/
C#, C♯, C#相談室 Part92 (実質Part93)
http://echo.2ch.net/test/read.cgi/tech/1485589613/ スレ番間違えたクソスレ立てた分際でID変えて自演とな 基地だらけだな
あっちは間違えてなのかわざとなのかワッチョイに変わってるから無しスレ立てただけだろ ワッチョイあったほうがいいよ
linqの宣伝で埋められるからwwww 前スレでよくわからなかったんだけど
EntityFrameworkはオワコンなの? >>12
EFはオワコンどころか常に始まってるからジャパニーズドカタには手を出しづらい >>12
(能力がなくて)触れない人がいるだけだよ テンプレがいつまでもVisual Studio 2015なのは何だかなあ
次から2017にしてくれ 戻り値のあるTask関数の作り方を教えてください
public Task<bool> Hoge() {
return true;
}
とするとエラーメッセージがでます >>16
恐らく非同期メソッドと混同してるんだろうね >>16
public Task<bool> Hoge() {
return new Task(
() =>
{
return true;
}
);
} フォームのRadioButtonのCheckedChangedイベントの順って、
外れた方→新たに選択された方であることを昔(.NET2.0)から保証されてるよね?
今こちらの環境(.NET3.5と.NET2.0の両方)で上記順であることは確認したのだけど、
コメントに「逆だからこうした」あり、逆順を期待するコードがあって???となってる。
Web漁ってみたが、MSDNには明記されてない。
https://msdn.microsoft.com/ja-jp/library/system.windows.forms.radiobutton.checkedchanged(v=vs.110).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-2
MSDNやStackOverflow含めたほとんどのサイトのサンプルコードは
someRadioButon.Checked==true を見てるからあってるはずだけど、
https://msdn.microsoft.com/ja-jp/library/system.windows.forms.radiobutton(v=vs.110).aspx
http://stackoverflow.com/questions/11493845/radio-button-checked-changed-event-fires-twice
中には逆を書いているところもある。
http://yan-note.blogspot.jp/2008/12/radiobutton-checkedchanged.html
保証されてないって事はないよね?昔から変わったとも思えないのだけど。
(こちらの実装ミスであることを確認したい) >>19
回答じゃなくて悪いけどそもそもそんな順番に依存するようなコードそのものが
問題だと思うね。
っていうか、そもそもRadioButtonはAutoCheck = falseで使うのが基本だと思ってる。
サンプルコード的な短いコード以外ではAutoCheckを有効にして使ったこと俺はないや ちなみにここにはfalse->trueの順(>>19の通り)と書いてあるが、
これって準仕様書の扱いになる?
(URLは長すぎて切りましたので1行に繋いでください)
https://books.google.co.jp/books?id=sygW0iEw2zkC&pg=PA217&lpg=PA217&dq=.NET+
radiobutton+CheckedChange+event+order&source=bl&ots=A3ndItBpMH&sig=BHLCZLbBQIkAq_Gzq37viy_nGW8&hl=
ja&sa=X&ved=0ahUKEwjTx4zLhrvTAhVLabwKHaQ-AoMQ6AEIYzAH#v=onepage&q=.NET%20radiobutton%20CheckedChange%20event%20order&f=false >>20
いや普通はAutoCheckはtrueで使うだろ。規定値もそうだし。
順に依存しないコードにも出来るが、
これまで順が保証されていたつもりで書いているから
全RadioButtonのハンドラを確認しないといけないんだな。
(というかこのコメントだと逆順のところが大量にありそうな気がして怖い)
とりあえず確認したいのは、「順が保証されているか」「昔からか」だね。
ダメならダメで書き直すけど。
一般的に(他環境でも)RadioButtonのイベント順は保証されている(と俺は思っている)ので、
特に悪い使い方でもないとは思うのだが。 >>22
まあ議論するつもりも俺のやり方をごり押しするつもりもないけど、
本来ビューはあくまでモデルの状態を表示する表示器でしかないはずで、
AutoCheckのようにビューがビュー自身でどの項目がcheckされるかを決めるような機能は
ちょっと問題だと思うよ。 >>23
いやそれは君の方がおかしいよ。
RadioButtonは「一つしか選択されない」というものだから。
というか、UIとしてはそういう使い方しかしてはいけない。
だからそれを自動的にやらせるプロパティがデフォでONになってる。
そして通常はイベント順が決まっているので、
サンプルコードでもCheckedを見ろ、ということになっている。
それを手動でやることも出来るけど、コードの無駄でしょ。
MVC原理主義的には認められないのかもしれないけど。
君はテキストボックスの入力文字も
xterm等のターミナルみたいにモデルと通信すべきだとか言うのかい?
それはいくら何でもやりすぎでしょ。
ラジオボタンのAutoCheckもそれだよ。
多分、AutoCheckを切る使い方の方が少ないと思うよ。
HTML(JavaScript)ではそもそも切れないし。(俺が知らないだけかもしれんが)
.NETは機能が多いけど、使いもしない機能が多いのも事実。
なおJavaも多分AutoCheckに該当する物はないと思うが、
いかんせんドキュメントが見にくくてよく分からん。
https://docs.oracle.com/javase/jp/6/api/javax/swing/JRadioButton.html
ただ、良い悪いはさておき、仕様として順を保証してないんだったら修正するしかない。
.NETの仕様書ってMSDNだよね?
書いてないって事は保証無しなのかな?
まあ知ってる人居たらお願いします。 C#2008とIpython2.7を使用しているが、使い分けが不自然
GUI=C#,CUI=Ipython
としておりすが、恩恵を受けている感じがしません
どの様に使えば、もっとも、良いでしょうか? >>19
保障ってどういう意味?
仕様書に明記されていない事は実装依存で保障されてないわけだが
いまだかつてそのような仕様が明記された資料はみたことないけど
そもそもイベントって
発行した順にイベントハンドラが実行される保障や
複数のイベントハンドラを一つのイベントに登録したときにイベントハンドラの
登録順に実行される保障なんてあったか? >こちらの環境(.NET3.5と.NET2.0の両方)で上記順であることは確認したのだけど
これはあかん
ダメなパターンや
論理的に物事を考えられない思考やで >>27
デバッグビルドとリリースビルドでイベントの前後関係が違ってバグるとかたまにあるな。 >>27-30
このスレも急にゆとり汚染で劣化しててびっくりだわ。
お前らってそういうところあるよね。
事実かどうかではなく、そう思うかどうかが全てだという。
>>27
そのレスには俺ですら知っているほどの明確な間違いを含んでいるけど、
詳細は言わないことにするよ。
俺はゆとりは死んで欲しいと思っているから。 >>31
決まっていない事実は全て「偶然」
物事を演繹的に考えられない奴はネットワーク機器でも弄ってたほうが幸せになれるよ
煽りじゃなく向き不向きの問題 仮に現環境で動いても仕様として明記されてないちょっとしたバージョンアップで狂うかもしれん内容に依存した実装なんてしたくない >>31
ゴミは減らず口叩いてないで死んでろよ
魚の餌にでもなってろ 外野だけど、
RadioButton コントロールは、
同じグループ内の他のオプションボタンと同時にオンにすることはできません。
その上で、RadioButton.CheckedChanged イベントは、
Checked プロパティの値が変更された場合に発生します。
ただ、イベントハンドラ内でイベントハンドラが呼ばれる事を否定していないので、
例えば、RadioButton.CheckedChanged内で意図的にChecked プロパティをtrueに
変更したりすると、
RadioButton.CheckedChangedの処理中に別のRadioButton.CheckedChangedが呼び
出されます。
だから、false→trueのように見えるけど、
この点は注意しろよって事なんでしょう
とエスパ− JSON文字列のDeserializeで時々エラーが出ます。
原因は、JSON文字列の変換後にList<string>になる事を想定しているのですが、
たまに要素が一個だけ持つJSONが来るのでそれはListに出来ないからのようです。
場合を分けるしかないですか? 文字列想定してるのに文字が来た。
みたいな事?
じゃあ、文字が来たら一文字の文字列にすればおk。
場合分けしかないですか?って、それで解決するのに何悩んでるの。 そのJSON出力してる奴を脅してお誂え向きな仕様にしてもらえ >>39
デシリアライザーが気を利かせて要素一個のList<string>に変換してくれれば良いのですが。誰か作ってくれませんか? JSON使った事ないから知らんが、要素一個(文字列ではなく文字)だったら.toString()ってすりゃ済む話かと思ったんだが、違うのん? >要素が一個だけ持つJSONが来るのでそれはListに出来ないからのようです。
ここが曖昧、そして重要
そもそもデシリアライザは何を使ってるん? window.client.mouse.pointにアクセスしたい変数があり、その型が
struct Point {int x; int y;} // publicは省略
のとき
c++であれば
Point &p = window.client.mouse.point;
で参照を持ってきてpに代入をするとwindow.client.mouse.pointの値も変わるように出来ますが、c#で同じようなことをするにはどうしたら良いのでしょうか? >>44
変数はunsafe指定でポインタとしてしか宣言出来ない。
関数の引数ならRef付ければ参照得られる。 できません
C#は、関数型言語になりたがっているので、
今後もエイリアスに相当する機能は実装されないでしょう ありがとうございます
unsafeでやることにします ふつうに
ref Point p = ref window.client.mouse.point; >>37
そりゃJSON送ってくる奴がバグってるだろ
その要素は文字配列だって定義してるなら、
JSON配列の中身が
1個なら hoge : ["fuga"]
2個なら hoge : ["fuga","fuga"]
という形になるはず。
1個の時 hoge : "fuga"
で来るならそれは不具合ってやつだ イントラネット上のTCP/IP通信に関する質問なんですが
ネットワーク上に「A,B,C」の3つのPCがあるとして、例えば
「A→B」「B→C」「C→A」「A→B」のようにデータのやり取りをしたいといった場合
(同じデータを渡すのではなく、BはAからの受信があったらある処理を実行させ
その結果をCに渡し、Aに処理内容を返す。CはBから渡された結果で別の処理を実行し
処理内容/完了をAに通知する。Cからの完了通知を受けたAはまたBに処理の実行通知を出すといったような)
それぞれのPCのアプリケーションに実装するのは、どういった感じになるでしょうか。
今までにこういったことをしたことがなく色々調べてはみましたが
この場合はサーバー?クライアント?となったりでいまいちピンとこず理解がなかなか進みません。。
何か解かりやすいアドバイスや今時のやりかたを教えて頂けないでしょうか
ちょっと何言ってるかわからなかったらすみません >>54
サーバーを1人決めて、仕様を満たすように作るだけ >>54
同期しようとするとカオスになるのでメッセージキューを使うのがいいと思う
AMQPとか >>56
サーバーを1人確定すれば並列になりそうにない仕様なので
キューはいらんような気がする >>52
そんなことはわかっててそうは言っても送信側には手を入れられないとかの話だろ
エスパーしろとまでは言わんけどちょっとは察しろよ >>54
そのままプログラム化するだけだと思うが
問題は最初のきっかけはどうするかとか途中でエラーになった時にどう回復するかだと思う
そういう意味で >>55 のようにサーバー決めてそいつが管理するように作った方がトラブルになりにくいしトラブっても調査や復旧が簡単
>>56 はメッセージキューって言いたいだけだろ >>54です
レスくださった方々ありがとうございます
頂いたアドバイスでもう一度考えてみたいと思います
ちなみにイントラネット上であれば開いたソケットはアプリを閉じない限りクローズする必要はないでしょうか
あとは仕様的に同期式でいけそうな場合でもポーリングなどはせずに非同期のイベント通知などで設計するのが普通でしょうか >>60
とりあえずtcpのサンプルでも貼り付けて実行してみなよ >>60
> ちなみにイントラネット上であれば開いたソケットはアプリを閉じない限りクローズする必要はないでしょうか
当然だけどリッスンポートは待ち受けで開いたまま
コネクトする側は必要なくなったら閉じるのが普通 オブザーバー、発行・購読
中央管制塔ありのメディエイター
メッセージキュー >>61>>62
ありがとうございます
もう少しサンプルを調べて勉強してみます C#って言語とランタイムの性能はいいけどエコシステムが貧弱だな 最近はNuGetもかなり充実したけどJavaにはさすがに到底敵わない なんで叩かれてるのか知らないけど、Mavenリポジトリと言えば満足? >>71
Web系はやっつけだろうが早くリリースするのが至上命題だからテストを自動化しないとカオスになる クラスのメンバーの型を動的に変更するなどは可能ですか?
例えばMyClassのメンバーに
public string name { get; set; }
が有るとして、それを一時的に
public List<string> name { get; set; }
に変えるなど可能ですか? >>74
できない
何のためにそんなことをしたいのか public string|List<string> name { get; set; }
じゃ駄目? >>74
そのメンバーに色々な型のデータを突っ込みたいなら dynamic 型を調べるがよろし >>76
ありがとうございました。うまく行きました。
こんな手法があるんですね。 あっTypeScriptと勘違いしてた
C#じゃ出来なかったわ
すまん いつどこからアクセスするかわからないプロパティの型を可変にする意味は何?
実際バグ出したいだけだろ? 静的に型付けされてるメンバーを動的に変更することは出来ないに決まってるねw
逆に出来たら困る
なんか静的に型付けされているってことの意味が分からない人が時々いるよね
型Bと型Cの両方を受け入れるプロパティが欲しいならプロパティーの型を共通のベースクラスAにして、
プロパティの値はプログラマの責任で適切にキャストして使うしかない
あとはBとCの間で相互に暗黙変換できるようにするとか 初心者は制約があるより自由にかけるほうが良いと思う時期があるものさ
問題があった時にどこからでもさわれたほうが対処しやすいからフィールドは全部publicにしたほうがいいとかね class A
{
public int i;
public virtual void storeNumber(int arg){ i = arg; }
}
class B : A
{
public new int i;
public override void storeNumber(int arg) {
base.storeNumber(arg);
i = arg; }
}
A typeA = new B();
typeA.storeNumber(1);
System.Console.WriteLine(typeA.i); //1
B typeB = (B)typeA;
System.Console.WriteLine(typeB.i); //1
typeB.storeNumber(2);
System.Console.WriteLine(typeA.i); //2
System.Console.WriteLine(typeB.i); //2
new キーワードのメンバは変数の型で参照先が決まると書いてあったんですが
A型の変数から呼び出しても、オーバーライドしたクラスBのメソッドから代入すれば
new が付いてるint i でも値を代入できるということでいいんでしょうか? >>91
ありがとうございます。オーバーライドとbaseのことを調べてコード書いてたら
これでひっかかってたので助かりました。 隠蔽した本人から隠蔽後のメンバーじゃなくて
隠蔽したはずのベースクラスのメンバーが見えるなら何のための隠蔽よww
まあでも、どうせ隠蔽なんてまず使わないw
俺が使ったのはたぶんWindows Formのコントロールをカスタマイズするときに
virtualになってないメンバーを苦し紛れになんちゃってオーバーライドする時ぐらいだ 隠蔽は後から他の奴が基底クラスに同一シグネチャのメンバを追加しやがったときに
派生クラスが壊れないようにするための仕様だよ
積極的に使うものではない
当時のMSは極度の互換性パラノイアに陥っていたため、C#はバージョニングに関しては異常に神経質設計されている ヌル許容のdatetimeだとyear関数とか使えないんですか?
入力必須じゃない項目なので困っています。 ヌル許容のdatetimeってわからない。.NETのは構造体なのに 大分前からヌルが基本的に無いintとかにヌル入れられるヌル許容型ってのがあるが。。。
int? x = 123;
int? y = null; stringですら?付けてstring?にしようという時代に
細かいことをごちゃごちゃと stringは参照型だから元からヌル許容してたのに、なぜヌル許容型をわざわざ?
浦島太郎で申し訳ないが説明頼む。 https://gist.github.com/olmobrutall/31d2abafe0b21b017d56
これだろ
string?じゃなくて、nullを許容しないstring!を導入したらどうか?という話
stringをstring!に変換しようとしたときにコンパイラがnullチェックを入れればいいだけだから悪くないアイデアだとと思う >>101
よく知らんけど、DateTimeとかDB側でNULL許容として扱われている値型を同等に扱うためじゃないのかね
じゃないとEFとか破綻しそう >>104
.Net1.0から実装されていて欲しかったけどな
つかDataSetっていうウンコがあったからNULL許容型の生まれが遅くなった可能性があるな >>104
そうじゃなくて逆にnon-nullableが欲しいというのが趣旨だよ
で102で紹介されてるstring?の案は「いっそ参照型もデフォルトでnull非許容にしようぜ」という超過激なトンデモ案 TypeScriptがそういう風に仕様変更されたけどさすがにC#には不可能でしょ
TypeScriptとは違って過去の資産があるし書捨てプロジェクトばかりじゃないんだから
やるならstring!しかないけど!だらけでソースが見苦しくなるのが難点だな いつまでもVBを引きずって瞑想していたMicrosoftとは思えないな
ヘジたんは偉大だ >>96
ありがとうございました。
単純に理解不足で参照側に?をつけていないだけでした。 またnullの話w
null非許容が欲しいなんて問題の原因を取り違えているだけであって、
そんなもの導入してもnull例外が初期化忘れに置き換わるだけだっていう
簡単な事実が分からんアホが多すぎで呆れるよ >>112
何言ってるのかわからん
初期化忘れって何よ またJavaに大きな差を付けてしまうな
あとはエコシステムも充実させてくれ >>112
null結合演算子も超嫌ってたしね〜君 TypeScriptとかSwiftとかKotlinの先例があるのにnull非許容の意味が理解できない>>112 みたいのが社会の進歩を妨げてるんだよなぁ
nullの代わりに空文字を入れることになるみたいな意味不明なことを言ってるやつもいたし、英語の議論が読めないにしても他の言語の例ぐらいは確認してからしゃべってほしい またしょうもないのが現れたな
意味も意図も理解できるが、意図した通りの機能は発揮しないと言ってるんだけど
だからその「先例」とやらで現に意図した通り間違って自分の足を撃たない機能を発揮してるのかと。
してやしねえよw 要するに、nullを許容することに起因する問題が存在するので
nullを許容しなければそれは解決するのだ、なんていうのはただの愚か者の錯覚であって、
そんなものは問題Aをより発見が困難な問題Bに置き換えることにしかならない ポインタじゃなくていいところでは(nullを許容しない)参照をつかう
C++では当たり前にやっていた事でその威力は皆が知っていた
C++から派生したC#やJavaがこれを捨て去った意味が逆にわからない
C#はあるべき姿に戻ろうとしているだけ Int f(int x) ならxで例えば小数の事を考えなくて済む。
同じく f(hogeClass y) でyがnullの可能性を
考えなくて済むならそのほうが良いだろう。
そう思わないならプログラマーは
早々にやめたほうが良いと思うの。
nullチェック忘れてヌルポだすコードを
量産するバカが減るのは助かる。 なんで馬鹿は馬鹿を説得しようとするんだろう?
馬鹿は馬鹿なんだから自分が馬鹿だなんて認める分けねえだろ
だからお前も馬鹿だと言うんだ
馬鹿は死ね >>128
少数のことを考えなくて済むように、nullがあった方が助かる場面もあるだろ
そう思ってないようなおまえは早々にやめたほうが良いと思うよ どうしてnull非許容型を導入するって話をnullの根絶なんて話に持っていこうとするんだろうね? >>128
間違ってるよその発想
その発想って>>1254の記事にもあるけど、メソッドが引数にnullを受け入れる
確信もないのに意図してnullを渡すプログラマなんかいません。
nullを受け入れないメソッドにnullを渡してしまう事態が起こるのは、
バグによってプログラマの意図に反してそうなるからだよ。当たり前でしょ。
だからnull非許容型を導入したところで、「プログラマの意図の反して変数の能がnullであるバグ」が
「プログラマの意図に反して変数の値が不適切であるバグ」に置き換わるだけ。
そして後者は前者より発見が困難な分、悪性度はより高い。
こんな簡単なことが分からん奴ってアホだろほんっと。 >>133
一つより二つ覚える方が大変だろ
未開人だと三つ以上は沢山だぞ
そんなにプログラミングの要素を増やすな
覚えきれない 変数がnullである は 変数が不適切である に含まれる
変数が不適切なケースのうち変数がnullであるケースを言語仕様として排除できるって話じゃないの?
確かにこのnullのケースを排除しても他に不適切なケースがある設計なら完璧な対策ではないだろうけど有用なケースも認められるなら検討の価値はあるんじゃないかな? >>134
意図してNull値を渡すつもりがないなら
Null値が入る可能性があることがコンパイル前に判明するほうが
あきらかに修正もしやすいだろ
なに言ってんだ >>134
ただの理解不足。具体的にTypeScriptとかのコードでその状況を示して見てよ。
多分、nullが入れられなくなるので初期値に別に値(stringならstring.Empty的なもの)を入れるもんだと思ってるんだろう。
それは間違った考え
・nullの考慮忘れ
・過剰なnullチェック
というのを防ぐのが目的
<従来>
void Hoge(string arg){ 〜 }
//listが要素を持っていなければfirstはnull
string first = list.FirstOrDefault();
//何らかの処理
//nullの考慮忘れ。実行時例外
Hoge(first);
<null非許容型>
//Hogeの引数はnull非許容
void Hoge(string! arg){ 〜 }
//ここは「何らかの処理」の都合でnull許容とする
string first = list.FirstOrDefault();
//何らかの処理
//nullの考慮忘れ。コンパイルエラー
Hoge(first); >>141
具体的で素晴らしい
確かにその例で示されているような「nullの考慮忘れ」を防ぐ一定の効果は
期待できることは認める。
でもそれ、よく考えると机上の空論でしょ。
普通のプログラマならある変数やコレクションが仕様上nullを持ちうるかどうかは
常に気にしながらコーディングするので、そこに例示されている「nullの考慮忘れ」は
実際にはそんなにありがちな問題ではないと思う。
ありがちなのは、その例でいえばリストに値を入れる段階で
プログラマの意図に反してnullが混入する問題だよね。 実行されるまで気づかないならインタプリタと一緒じゃん >>143
>ありがちな問題ではない
ありがちかどうかではなく、その機能を導入するメリットとデメリットの釣り合い。
エラーが未然に防げたり、記述が簡潔で見やすくなるならメリット。
文法が複雑になったり、別のバグの原因になったり、動作が遅くなったり、実装に手間がかかるならデメリット。
現状は「新バージョンではnull許容はstring?にしろよ」から「文法は変更せずフロー解析でどうにかしようぜ」までいろんなアイデアがある
個人的には、標準ライブラリの頭nullチェックをしてArgumentNullExceptionを出すようにしているところがいらなくなってライブラリ作者にはメリットがデカそうかなとはおもってる
null入れてArgumentNullExceptionがでるテストも書かなくて良くなる >>143
>リストに値を入れる段階でプログラマの意図に反してnullが混入する
nullを含まないリストならList<null非許容型>にすれば意図に反してnullが混入しうる状況ではエラーや警告にしてくれるようになる
List<null許容>から変えられないなら、取り出す時にnull非許容にすればその場でエラーが確認できる
フロー解析で検出が無理な状況も当然存在するけど、多分こんなことをするのかな
<現状>
string A(){
string a = Hoge();//Hogeの戻り値はnull
別の処理
return a;//意図せずnullを返してしまう
}
これだと、別の処理中にぬるぽになったり、戻り値がnullになるかも。
Hogeの戻り値が不適切なのに、別の処理中でエラーが起こるのでスタックトレースとかではバグが探しにくい。
<null非許容>
string! A(){
string! a = Hoge().ToNull非許容; //null非許容に変換
別の処理
return a;
}
これが以下のようにコンパイルで展開される
string A(){
string a = Hoge();
if( a == null)throw new Null非許容型変換例外();
別の処理
return a;
}
例外発生箇所が確定するので、バグの位置がすぐにわかる
この例だとnull比較のコストが入ってるけど、俺の知識が浅いだけなのでもっとうまいやり方も多分あると思う null許容にするメリットを実感できないんだろうな 使えとは言ってないのにな
親でも殺されたか?
ゴミムシの親なんか区別がつかないだろうが >>146
コンパイル後の出力にnullチェックが入ってるってことは
string! aにnullが入る可能性が出来てしまうってこと!?
そこはコンパイルエラーにしてもらおうよ
>>141の
> ・nullの考慮忘れ
> ・過剰なnullチェック
> というのを防ぐのが目的
(+テスト)
は、防ぐというより無くしたい >>150
nullチェックはNull許容型からNull非許容型にする際の話
nullの可能性があるならタイプマッチとかで消すほうが素直だけど、kotlinとかでは例外を投げる変換を用意してるみたい
修正されてない古いライブラリとかだとnullにはならないけどnull許容型みたいのが存在せざるを得ないので、そういう機能もほしいということじゃないかな 今のところ超過激なトンデモ案が優勢なのかな?
採用されたら仕事が捗りそうなので、とても期待しているww null非許容型が追加されるならconstメソッドも
追加してほしいもんだ。 いまだに2.0とか3.0やってる化石には全く関係のない話だから
足引っ張らないで欲しいわ Linqすら使えない自分の職場の悪口は止めてくれないか ロック問題で、価値ないつまらんネタ書いている奴こっち来い
適当にあしらってやるよ 最近は、こっちではnull非許容ネタやってるのか・・・
これ導入されたらガベージコレクタの性能落ちたりしないかな
4G越えのでかいツリー構造とか作っていると、参照つなぎ替えだけで色々やばいことが起こるんだよな
できるかぎり、用のないフィールドに参照ぶら下げたくないと最近しつこくnull入れてたりするんだが。
あと、event関係、弱参照で全部作り直さないとヤバないかな。
Taskとかと相性悪くて簡単にメモリーリーク起こすし、 WeakEventManagerでWPFは変態回避してただでさえコード変態状態だし。
VMごと作り直さないと色々噴き出しそうだ >>158
ここはキチガイの建てたゴミ箱、ちょうどいいんだよ。 >>159
そんな場合はnull許容型を今迄通り使えばよろし なんで択一の考えしか出来ないんだろうな
頭悪いのか?
頭悪いならゴミ回収みたいなルーチンワークしてろよ >>161
統一性のないコードになりそうだw
ここまで破壊的変更をするなら同じVM上で動く別言語として全く新しく設計した方が良い気がしてきている。
C#と混合してプロジェクトに登録できるようにすればシームレスにつながると思う。
今のC#には、アクロバテックな予約語追加とかも増えてきているし、いろいろ限界が来ていると思うんだ。 どうせならC#を改造するのではなく、新規言語にして、ここにあるパターンをサクっと言語仕様として実装してみてほしいな。
https://ja.wikipedia.org/wiki/%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3_(%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2)
>一部のデザインパターンは、プログラミング言語(例: Java, C++)の機能の欠損の印であると主張されることがある。
>計算機科学者のピーター・ノーヴィグは、GoFによるデザインパターン本の23パターンのうち16パターンは、
>言語によるサポートによって単純化または除去できることをLispやDylanを用いて実演した。
あと、マルチスレッドプログラミングに関するパターンも、C#で書いていて本当に冗長と感じる。
文法は、Pythonみたいにインデントでネストを書けるようにしてくれれば、Pythonと交互に書くときに {} 忘れで判りにくいバクにならなくて済む。 >ID:OZ9w4Yf7
基地外こっちでも大暴れかwww >>165
ようキチガイ、ここは、お前が建てたスレだろ。
向こういくなや、あっちはマジ質問なんだから。
お前とは、ここで遊んでやる。 >>163
swiftもkotlinも同じ感じの仕様だから適切に使い分けられれば良いんでないのかな
それがスキルだし c#がもし最初から作り直せるとしたらどんなふうにする?
俺は
yield returnじゃなくてyieldにする
ジェネリックをsystemに入れる 取り敢えずintは64ビットでstringはnull無し immutable保証の構文は欲しい
if forは文でなくて式でありたい
副作用隔離文法も欲しい ジャップなんて99%素人に毛が生えたレベルなのに使い分けとか酷だ constとreadonlyの整理
c++のconstが好きだった デフォルトでconst
キーワード指定した時だけ非const
が良いなあ 何が嫌かと言えばVMだな。最初からネイティブコードコンパイラーならC++すら凌駕したかもしれん 少なくともC#のconstとreadonlyは機能的に違うし、
どちらを無くされても困ると思うけど... 名前空間の分割をもっと簡素にする
今はusing増えすぎでめんどい
あと一ファイルに名前空間一つに限定で
ファイル先頭で指定、{ }なしにする
namespace Hoge.Hoge :
これでwebからのコードのコピペが楽になる switch の最後の節の break は不要にする
ってかこれぐらいすぐやれ
毎回モヤモヤするんだよ >>180
だから整理って書いたんだけど…
統合って意味じゃないよ readonlyは長すぎる
javaのfinalもだけど頼むから多用する奴は3文字以内にしてくれ
scalaなら定数も変数も同じ3文字だから揃って見やすいのに >>184
では整理とは具体的にどういう意味でしょう 細かい機能系だと == オーバーロードが割と収集つかない感じなっているので
object.ReferenceEquals object.Equals を毎回書く羽目になり始めている
これは無駄なので == オーバーロードは廃棄して
object.ReferenceEquals object.Equals の糖衣構文として === !== == != という形にして欲しい。
Java屋がC#登場時に==オーバーロードはヤバイと警告していたが、今のC#は本当にそうなってしまった。
当初は気にしすぎと思っていたが、これは良くなかったな。
<= >= なんかも最低1個書けば残りは自動的に実装してほしいな。
== != はobject.Equalsは必須なので、あとは < <= >= > のいずれか一個を定義すれば残りは全部生成可能。
IComparable<A>を実装したのなら、逆にそこからobject.Equalsを実装してほしい。
object.ReferenceEquals に対応する GetHashCode() は簡単に利用できるべきだ。
LINQを使うときに、Distinct()などで、object.ReferenceEqualsを使いたいケースは多い。
どの比較を使うのか簡単に指定できるようになって欲しい。
比較演算子は、三引数の演算子にして、比較方法、比較対象1、比較対象2という感じにして
a ==[比較方法] b のような感じで扱えるようになると見通しが良くなると思う。
今のC#は、ラムダ式と比較用interfaceが入り混じって混沌の世界と化している。 >>187
トレイトがあれば自動実装出来るのにな… >>189
今のC#はまさにそこに向かっているので嫌なんだよね。
収集のつかない言語拡張、誰も知らない大量の構文と予約語で築かれた謎の言語仕様。
C++は、21世紀のCOBOLだ c++はほらバカには便利だろう見たいな新機能をいれてるけどそれすら使いこなしにくい 型宣言は後置の方がいい
>>174
>immutable保証の構文
デフォルトでimmutableにして、
必要ならmutableに出来ればよくね C#が滅んでも困らないからいいや
node.jsがあれば安泰 >>190
糖衣構文を要求したその口で「収集のつかない言語拡張」とか一体何の冗談? immutableを構文を作るのであれば、new でプール中にすでに同じ内容のオブジェクトが無いか調査して
既にあるならそちらを利用する仕組みも欲しいな。
これを利用する場合比較演算子EqualsとReferenceEqualsは同じ結果になるのでEqualsもGetHashCodeも自動実装の物でよい。
オブジェクトプールは、弱参照のHashSetで実装される事になると思うが、弱参照の先が死んでいた場合、HashSetの登録項目も整理できる。
ガベージコレクトと一緒にこれを整理できればより効率的だが、これは現状ライブラリベースで作る事は出来ない、VM側のサポートが必要。
これについては、メモリ管理にリファレンスカウンタを実装しても良いと思う、基本はリファレンスカウンタでマークスイープはゴールキーパーとして機能させる感じで。 >>187
何言ってるのかよく分からうけどカオスを増加させるだけにしか思えんな
参照型の==がデフォで参照の比較になっているのが混乱の元だと言いたいならそこは同意する。
VBと同じように参照等価検査専用の演算子を用意して==はオーバーロードしない限り
使えないようにしてくれた方が分かりやすかったと思う >>195
お前みたいな馬鹿には分からないのですw >>197
オーバーロードしたらEqualsとの違いが不明確になる。
使う側にはそれはとても伝わりにくい。
だから==と書けばそれはEqualsの事であるという事にした方が簡潔だと思うよ。
比較は頻発するので毎回Equalsを書くのはさすがに面倒。 >>186
そんなん知らんよw
なんで具体的な提案なんかしなきゃならんのだ
2種もキーワードがあるのにc++のconstに比べて貧弱だなーって思っただけ
この部分がもっと便利になればいいねーくらいで話ししてんのに難癖つけられてもなー 関数型のように値は一度割り当てたら変更不能というストリクトな仕様は
変数一つ一つに意味を考えて名前を付けるようになれるので見通しは良くなるね。
半面、ビギナーには辛いやり方だと思う。
変更できない物だけでどうやって変化していくものを表現するのか分からなくて途方にくれそうな絵が見える。
果たして吉とでるか凶とでるか? >>209
自動の方がいいと思うよ、安心感が全然違う。
ただ、マークスイープはオブジェクト総数増大につれてパフォーマンスに問題が出始めている感じがする。
ガベコレはすべてのスレッドを止めないと始められないが、オブジェクト総数増大とともに停止時間がやばくなる。
極力、マークスイープ以外の方法で回収できる感じにした方が良いかもしれないと最近は思う。 >>196
思い込みで変なことを語る前に今のGCについて勉強した方がいいのでは
殆どのオブジェクトはマークアンドスイープ「ではない」GCによって回収されるんだぜ >>210
少なくともC#では、スタック周りだけでしょう。
シンプルな世代別ガベコレで実装されていると思われます。
C#ではC++のスマートポインタのようにスコープ抜けた瞬間に回収される所は見ないです。
それでは解決しきらないというのが自分の環境では起こり始めつつある。 まぁ、C#の場合すべて強参照状態なんで参照カウンタで実装したところで
よほど意識してくれないかぎり有効に機能してくれない可能性は現状では高いですね。
特にevent回りとasync/await/Task回りに言えます。 >>212
余計な工夫でmidlife crisis起こしてそうw
オブジェクトはすぐに使い捨てたほうがGCの負担になりにくいんだよ >>214
規模が小さいなら、使い捨てても使い捨てなくても、もともとパフォーマンスが問題になる事はないんですよ。
パフォーマンスが問題になるほど規模が大きくなっているので負担が大きいのは必然なんです。
トートロジーみたいな議論だからその反論は無意味。 >>204
自分で言ったことを知らないって無茶苦茶だな
というか、そもそもC++のconstって肯定的に語る人はほとんどいないよ。 >>216
え?金も出ないのに次期言語仕様のドラフト上げろっていうの?
君がどれくらいの人にアンケート取って肯定的な人が居ないと言ってるのか知らんが逆に否定的な人はどうなの?
肯定的な人が居ないのはそもそもちゃんと使ってる人が少ないからってだけでは?
assertionとかもそうだけど無くても問題もないものは当然初心者向けサイトでは扱われず使用者も少なくなりがち
ちなみにconst c# c++ってググれば検索上位は似たような内容が国内外含め結構出てくるよ C++を肯定的な奴少ないが使ってるのは多い。置き換えきれる言語がないんだよ c#でポインタが使えれば俺はc++はもういらない。 メモリ管理はRustのゼロコストGC(正確にはGCじゃないけど)に期待してる
>>221
っunsafe パフォーマンスを上げるのに
new するときにどの世代のメモりに生成するか指定できると便利になりそうな気がする
明らかに長期生存が分かっているオブジェクトを若いからというだけでガベコレに晒すのは無駄なんだが、現状無差別でしか生成できない。
アプリケーション終了時点まで消えてなくなることが無いと分かっているオブジェクトに至っては、生成直後に管理から外してもらえると良いんだけど。 >>219
天国だよ
特にラムダ式とかローカル関数では、コピーとキャプチャを区別しなくてよくなる。
というかキャプチャとか考えたやつ、もうちょっとマシな方法思いつかんかったんかよって思う。
どのスコープの物なのか判りにくくてバグの温床
C++みたいに、キャプチャかコピーか明示できるようにして欲しかった。 キャプチャーがそんなに分かりづらいとは思わんけどな >>226
もしそうだったら、何時ぞのバージョンアップの準破壊的変更で
foreach(var item in xxx) のitemのスコープを変えたりとか苦しい羽目にはならなかったろうよw >>227
それキャプチャーの問題じゃないでしょ
ループ変数のスコープの問題 >>228
何言ってんだよ、キャプチャがなければ何の問題もない話だろw >>230
お前が、トラブルにあったことが無い程度にしかプログラムしていない初心者だからだよw 言っても無駄だと思うけど、だからそれはキャプチャーの仕様が
トリッキーでミスリーディングだから起こる問題じゃありません。
foreachのループ変数のスコープがプログラマの予想を裏切るものだから起こる問題です 結局、C#のEqualsやキャプチャとかが分かりにくくなってしまったのは
利用者から見て隠すべきでない物を隠してしまった所にあるんだろうな
operator == のオーバーロードも、C++ならポインタと実態の違いをプログラマが
. と -> の違いとしてしっかり認識しながらプログラムしている。問題なんか見たことない。
だから、C++のプログラムをしていた自分はJava屋が指摘する == のオーバーロードの危険性について
そんなの気にしすぎと軽視していたんだよな、ところが実際にはヤバかった。
C++プログラマは、ポインタとして利用しているオブジェクトには、ポインタらしい == のオーバーロードを
実体に対しての == は、実体を比較する為のオーバーロードをいつも意識している。
C#は、参照(意味的にはポインタ)を、実体の比較としてオーバーロードしようとしてしまう。意識していないからね。
このあたりが齟齬の発生地点のような気がする。
というかC#はじめて、やらかした。
どころか、標準の string からしてやらかしている。
C++では、ラムダ式でもしっかりと意識したコードができるようになっている。
次の問題は async /await だ、あれも隠してはいけない物の代表格、バグの温床だね。
C#の設計陣、そろそろ学習しろよって思うのであるがw ああ、昨日の人か
==のオーバーロードが危険とはまったく思わないし、等号という記号のイメージに
そった定義で可能なことは自然で当然のこと
問題があるとすれば、むしろオーバーロードしなくても使えてしまうことだろう。
昨日も書いたけど、VBのようにオーバーロードしないと使えない仕様の方が好ましかった マップキーに使える値型は==を上書きする
それ以外はデフォルトのまま参照の比較
これで困ったことはないな
強いていうなら決まり切った形式の実装がめんどくさいことか そういや空の自作構造体をhashset辺りに入れるとどうなるの? >>236
.netのソース見るとnon-staticなフィールドのない値型のインスタンスは全部等価になるっぽい
試してないけど structの既定の比較は、かなり複雑な事やってる。
ポインターとか環境によって可変するフィールドや、アライメント関連で構造体中に隙間が無い場合に限ってmemcmpで高速比較する。
それ以外は、リフレクション使っての比較なのでパフォーマンスが大幅に落ちる。
なので、原則オーバーライドして使えという事を、昔C#が出始めたころにMSが言っていた。
自分は、いいかげん面倒くさいので、自分用は式ツリー使って比較とハッシュ計算の関数を自動生成してコンパイルした上で使っている。
既定の比較もこういうのを標準で作ってくれると面倒が無いし間違いもないんだが、などと思っている。
比較したいフィールドもしくはプロパティーに[EqualsTarget]というアトリビュートを付けたら、それで自動生成される感じ。
大小比較もこれで実装されるようにしてやった。
公開して、全員に使ってもらおうかどうか思案中、ちょと変態コードすぎるので気が引けてる。 スレチ感があるけど該当スレが分からずここで聞くんですが
Windows Formで背景色って灰色が初期値なのって何故でしょうか >>242
それ本来はOSの設定で変更可能なはずなんだけど。Win8以降コンパネで設定できなくなってるから
何だか訳分からんことになってるね
しかし、今触ってみて改めて思ったけどWin10のUIはウンコだな
Win7の時代の方がよほど分かりやすかった
誰が考えたらこんなカオスで使いづらいUIになるんだ つか、元のコンセプトから見れば、灰色じゃなくて銀色のはずなんだけど
どう見てもねずみ色だね なぜグレーかというと、ハイライトと陰でウィジットを立体っぽく表現できたから。
だからフラットデザインではグレーにすり必然性はない。 開発用端末はMac、サーバーはLinux
最近はWindowsの出る幕がない 俺も最近は職場のPCでも開発はほとんどVirtalBox上のLinuxでスクリプト書いてる
たまにVS立ち上げる機会があるとクソ使いやすくて感動するけど、VS以外のWindowsは大嫌い >>248
VS でスクリプト書けばいいだけじゃん VSをLinuxやMac向けに売れば絶対儲かるやろ
for MacとかじゃなくてWin版と同じように使える奴 XCodeで心穏やかにプログラムを書ける奴を尊敬する
よほど精神修養したんだろうな ユーザー数が
Win >>>> 越えられない壁 >>>> Mac
だから採算が取れる見込みが無けりゃ作らないよ >>252
開発者は
Mac>>>>>越えられない壁>>>>>Win
だろ >>254
それはない
大企業の開発環境がMacとかあり得ん 現実見た結果Macにたどり着いた
まあ三流企業は永久に窓でも使ってろってこった winでもmacでも*nixでもストレスしか溜まらん
開発者向けの天国OS欲しいわ >>260
弱小企業は金がないから窓使うしかない
かわいそう でかいビル丸ごと一棟開発の部署でほぼ全部windowsマシーンとか見たことないんだろう >>261
で、なんでお前みたいなカスがここにいるんだ? 国内でmacが1000台稼働してますなんてオフィス見たことも聞いたこともない コスパならLinux
快適さならMac
思考停止するならWindows >>262
その光景に寒気を覚えない奴は実務未経験だろうな visual studioとc#が最強すぎるから今はwindowsが一番いい 一番最低の開発環境はWin+Cygwin
仕事を辞める理由に値する スポーツでもそうらしいけど、デキない奴ほど道具にこだわるのって
なんか日本人の伝統芸みたいだねw
あとこれはたぶんIT系だけだと思うけど「〜使ってる俺すげえ」っていう
よくわからん自己陶酔に浸る奴は相変わらず多いね。
自己陶酔は自己不安の裏返しだって気づかない時点で程度が知れるけど こだわるとか凄えってほどのものじゃないだろう
当たり前のように一通り使って見て
当たり前の感覚であぁ窓よりMacの方が使いやすいなぁって感じる
ただそれだけのことなんだよね
鉛筆よりシャーペンの方が良いなぁって感じに似てる 「こんなに素晴らしい○○を使っている私は特別な存在なのだと感じました」
「○○は優れている」ってのが「優れている○○を使ってる俺は優れている」に転化しちゃってる奴は多いね。
IT系に限らず趣味の世界一般で多いけど。
そんでそれがdisられると、まるで自分がけなされたかのようにムキになる。 そうはいっても業務で筆を使ってる人が居たらペン使えよって内心でバカにするだろ?
そういうこと Winでいいって言ってる奴はRoR使った事ないだろ あ、ここC#スレだったわ
すまん、スレ勘違いしてた >>272
筆を使って業務に支障がないなら別に文句はない
評価は仕事ができるかかどうかでペンを使うかどうかじゃない macで開発を主張してるのは各種OSSが簡単に導入できるからだろ
それがc#と何の関係があるのかはしらん
ちゃんと管理された大企業のPCに勝手にOSS入れることは難しい >>280
開発機と事務用PCの違いってわかるかい? 一山いくらのPGなんてそんなもんよ
コード生産ライン作業員に自由なんてない 管理がしっかりしてる企業の方がリスクリターンを解ってるから導入は簡単
OSSは不安とか杓子定規にフリーはダメな三流企業は難しい OSSダメ言い出したらLAMPすら無理じゃん
.NETだってオープンソースになってLinuxやMacに移植されてんのに
企業が管理してるのとか実績があるのだったら良いのか? .net compact framework(C#2.0?)で知識止まってるんだけど久々にザマリン使って泥アプリでも作りたい
動くだけならできるんだろうけどlinqとかlambdaとか学びながらやりたいんだが
本とかサイトでいいとこ教えてくれ
C++,PHP,ruby,Javascriptはまー普通に書けるレベル >>270
WindowsとMac、両方並行して使ってるけどそこまで致命的な差は感じないなぁ
バージョン管理、統合開発環境、エディタ、パッケージマネージャがマルチプラットフォームで動くようになったのはでかなり楽になった
RubyはまだWindows冷遇は強いので悲しいけど。
OS自体としてもデフォルトでも使いやすいのはMacだけど、カスタマイズしていくと差が埋まってく
人によるだろうけど、カスタマイズ好きとしてはどうせMacもLinuxもWinもカスタマイズするので大差なかった >>284
PowerShellもMSBuildもRoslynもダメなのかねwww 誰もそういう事は言ってないだろ
馬鹿じゃないの?
会社のPCに社員が勝手にソフト入れんなってことだろ この手の話題は俺社環だからマ板でやれと言われているのに何この無限ループ >>286
LINQはってのは使えば解るレベルの簡単さだから大丈夫
たまに毛嫌いする困ったちゃんがいるけど FormにwebBrowserコントロールを置いて、
WEBページを拡大や縮小して表示する方法がありますか? REST APIが一般化したせいで様々な環境と言語をメンテする機会が増えた ソースを貰ってみると
(これどの辺がRESTなん…? RESTいいたかっただけやろ…)
と思うことも多々あり >>302
どの言語+フレームワークが一番よかったですか? ConfigureAwaitのデフォルトをtrueにしたのって大失敗だろ
書くのめんどくせえよ >>307
trueにしないと死屍累々だったと思うが まあどっちを既定にしても文句は出るところだと思うけど
await/co_awaitみたいにキーワードで指定できりゃ良かったんじゃは思う ConfigureAwaitをtrueにするのはもうデスクトップアプリぐらいだろ
dotnet coreになってasp.net mvcもコンテキストへの依存がなくなったわけだし デスクトップアプリだけ既定がtrueになっとると思っとりました デフォルトfalseだと常に排他制御が必要になるだろ
わざわざコンテキストに戻すのはマルチスレッドの煩わしさを避けるためなのに >>314
あるよ
一部awaitしない呼び出しがあったりすると、後続処理がスレッドプールで実行されてしまうと見かけ上同一コンテキストのように見えるコードでも
同時に複数のコードが並列で実行されてしまう可能性がある(というか確実にそうなる) awaitすればいいじゃん
それってasync/awaitの世界では前提でしょ だったらtrueでもWaitしなけりゃ問題ないじゃん
排他制御が必要になるケースももちろんだけど、そもそもawaitの前後で常にスレッドが変わること自体がプロブレマティックすぎる
そんなのに比べたらUIスレッドでWaitする馬鹿のリスクなんて全く取るに足りないレベルだ
coreはWeb用ということで想定される要件が技術的に単純だから許されるんであって、さすがにそれを全ての用途に適用するのは無理がある >>318
https://www.microsoft.com/net/core/platform
>.NET Core is a blazing fast, lightweight and modular platform for creating web applications and services that run on Windows, Linux and Mac. http://qwerty2501.hatenablog.com/entry/2014/04/24/235849
ここに書かれてるような問題があるからデフォはfalseが良かったって言いたいなら
俺も羹に懲りて膾を吹いてるようにしか思えんね >>319
完全にMicrosoftのミスリーディングやなこれは >>319
こんなこと書くから勘違いするやつらが出てくるんだよ 逆でしょ
コンテキストが同じでなければならないようなコードを書くほうが問題がある
UIのように物理的な制約でコンテキストを同じにしなければならないようなケース以外ではコンテキストに暗に依存すべきではない >>319
web用なんてどこにも書いてないじゃんw
どういう読解力だよ >>323
スレッドの一貫性を要求する既存のライブラリやAPIや既存コードが世の中にどれだけあると思う?
現代の実用的なソフトウェアって、君が思ってる以上にスレッドに強く縛られてるんだよ >>325
そんなものにガッツリ依存するような書き方を普段からするのが良くないのでは? >>326
俺もそう思うけど、そういう要件に遭遇するたびに会社辞めるわけ? >>327
それはあなたの自由だけど普通はもっとコストの低い方法を探すだろうね 依存しまくってもいいんだよ
何でもかんでも分離しとくのがコードの形としては理想だけど手間かかるからな
その手間と依存することによるデメリットを比べて考えろ 何を言ってるんだろうこの人は
要らない手間を減らすために疎結合にするんだろ
あちこち依存しまくったら何をしようとしてもめちゃくちゃめんどくさくなるぞ 疎結合にしたところでスレッド一貫性への依存は回避できないよ?
どう足掻こうが最終的には同期コンテキストに頼ることになる なにまたUIスレッドくんなの?
豆腐の角に頭ぶつけて死ねよ UIスレッドなくすと手間じゃなくて、グラフィックなどのパフォーマンスに影響出るからね 最終的には同期とるけど最後なるまではコンテキストに依存しない方が良い
未だにデスクトップ開発してる子ってこんな簡単なこともわからないんだなぁ いやデスクトップとか関係ないからw
昨日から何か勘違いしてる「俺スゲー」バカが湧いてるけど、こういう奴ってそもそも
非同期メソッドのメリットがどこにあるのか理解してないんじゃないのか >>336
流れ読めよ
アホなこと言ってるUI君を揶揄するからデスクトップって単語が出てくるんだよ
いや馬鹿には数スレ読むのも難しかったかこりゃ失敬 悪いけど俺の目には反抗期のConfigureAwait(false)坊やが諭されてる流れにしか見えないな イミュータブルなオブジェクトをクローンしたい
ただし1つだけプロパティを変更しつつクローンしたい
こういう時に使えるイディオムないか? >>341
ない
それが頻繁に必要になるようなら設計ミスだ
集約の単位を間違えたってこと オブジェクトを複製したい
ただしIDと生成タイムスタンプは変えて
とかよくある 個人的にはオブジェクトを複製する機会がほとんどない
設定フォーム出す前ぐらい 不変な物だったらコンポジションでいいと思うけど
複製コスト考えたらなおのこと イミュータブルとか言って意識高い系を気取るなら
IDが付いてるかどうかは値ではなく型で区別できるようにすべきだし、
更新時刻のようなメタデータを混ぜるのも美しくない
コンポジションでいいよ 更新時刻はドメインによってはメタデータとは限らないしIDのくだりは意味不明です object obj = GetX(); //objectを返す処理
if(obj == null) //nullなら処理終了
return;
func(obj); //続きの処理
みたいな処理書く時のnullチェックって簡潔にならない?見た目が好きじゃないのよね
if(obj!=null)ならまだいけるんだけど、等号ってのがなんか気持ち悪い
if(!obj)みたいな書き方があればいいんだけど >>352
真面目な話、むしろそういう自分自身を気持ち悪いと思った方がいいよ
くだらない >>355
これって?を見逃しそうであんまり好きじゃないんだよな。
1行で終わる関数やプロパティではいいけど複数行あるような場所じゃ使わない。 not nullableとかoptionalとか早くnull対策の拡張して欲しいね
これがあるとコードが明快かつスッキリして気持ちがいいんだ あからさまにアンチを釣ろうとするなよ
休みなのに暇人かお前 HttpWebRequestでログインした際のCookie情報を
webBrowserにわたしたいんですがどうしたら良いでしょうか?
HttpWebRequestでのログイン方法は以下のサイトを参考にしました。
C#によるWEBサイトへのログイン方法(ベーシック認証、クッキー認証)
>Aクッキー認証(ニコニコ動画へのログインサンプル)
>http://c-loft.com/blog/?p=637 >>361
seleniumだとブラウザ立ち上がるから嫌なんですよ >>362
ブラウザが立ち上がらないドライバもあるよ C#でそこそこ大きなアプリ作りたいんですけど何かフレームワーク的なものってありますか?
PHPでいうとCAKEPHPとかそういうのがあると嬉しいです
どなたか教えてください >>364
因みに作るアプリはウィンドウズアプリです コントロールやライブラリがいっぱい用意してあるのに.NETはフレームワークとして認められないのか ヘッドレスだと内容がわからないんでちょっと困るんです・・・
注文が多くてすいません・・・。 注文が多いのは別に構わん
それに応えるのがプログラマーなんだから
後出し情報は勘弁して欲しい 普通にASP.NET MVCでしょ
このスレはWebアレルギーなおじさんが多いけどペチパーなら違和感なく馴染めるはず >>367
デバッグ時は普通のブラウザ
運用時はヘッドレスブラウザ
運用時に何も見えないのが嫌ならコンソールで出力したっていい
ブラウザコントロールはオートメーションのためのコントロールじゃない
オートメーションしたいなら然るべきツールを使おう 非同期でフォームをフリーズ?させずにコントロールをいじることはできないのでしょうか?
Invokeを使ってもつまるところ一緒だと思うのですが、何か方法はありませんでしょうか。
例えるとタスクマネージャのような感じです。 何がしたいのかわからない
コントロールを作ったスレッドからしかコントロールの操作はできない >>377
> Invokeを使ってもつまるところ一緒だと思う
よくわかってないならまずは言われた通りInvoke使っとけよ Formを閉じるとき、FormClosingイベントが2回走るんですが何故だかわかるでしょうか C#とうかvisualstudioの質問なんですが、
https://www.youtube.com/watch?v=vSi7hINZJds&t=767s
この動画の5:30くらいでやってる
rect.noでif文入ってるのってコードスニペット?ReSharperの機能? webbrowserでダイアログボックスを開いて操作することってできるんでしょうか?
たとえば画像アップロードサイトでファイルをアップロードするために「ファイルを選択」ボタンを押すと
ファイル選択画面になりますが、ここにファイル名を自動で入力して自動で「開く」ボタンを押したいと。
外部のブラウザならウィンドウハンドルを取得してそこに投げてやればいいのはわかるのですが、
webbrowserでやろうとして失敗しました。 すいません、初心者なんで初心者用のほうで聞いてきます。 デフォルトメーラーの新規メール作成画面を、任意の添付ファイル付きで起動するには、どうしたらいいでしょう >>387
確実にやるのはたぶん無理なんじゃ...
ググったらmailtoで添付ファイルを指定する非標準の方法があるらしいので、
環境次第で運がよければこれで動くかも
http://hardsoft.at.webry.info/201307/article_3.html >>388
ですよねー
mapiのlibraryも気軽に使えないし
素直にoutlook限定でやるしかないのかしら… コトリンに完全に出遅れた感があるね
Javaと一緒にオワコンになりそうだ Listって添え字とかCountの戻り値の型がintだけど要素数はintの最大値が最大なの?
ulongとまでいかなくてもせめてuintの最大値くらいのサイズで使いたいのだけど >>394
intの最大値まで
https://stackoverflow.com/questions/7885294/list-size-limitation-in-c-sharp?lq=1
によると64bitプロセスでフラグ指定しないと2gb以上は取れないので注意
Listは大量の値を扱うのにはおすすしないので、実装を考え直したほうがいい そんな巨大なものを汎用コレクションで扱う意味がわからないな
そんなのIListとかを受け取る既存の特に巨大なコレクションを考慮してない普通のメソッドに渡しても現実的に機能するとは思えないんだが レスサンクス
いやC#初心者で手抜きできるならしたかっただけなんだ uintの最大個までListに放り込みたいものってなに? C#初心者なだけで他になれてる言語でもあるのか?
億超える変数をメモリ上における言語なんてある? LINQ to SQLはもう非推奨だよ
今でも使ってる人は早く次へ行こうよ LINQ=LINQ to SQLのイメージ付いた人多いからLINQ自体非推奨とか言い出しそうで怖い >>408
entity frameworkと言う後継技術にリプレース
常識すぎるのでソースはggrksレベルだよ LINQ to SQLはしゃーない
普通のLINQとと違って単純に関数渡すわけにいかないから list使うなって、entityframework使ってdbからlinqでtolistするの非推奨なん? >>411
ToListの後に何をするかによるんじゃね まあ、データが多いなら、メモリに確保せず捨ててくのは当然か。
社内ツールぐらいしか作ったことない井の中の蛙だから大海に出たい。 >>413
社内で自由に出来る程度がちょうどいいよ
他会社と共同作業になると制約が増えてストレス溜まる いまだにDataSetにFillしてぐるぐる回してます
源流がCOBOLの業務系デスマーチ製造会社 開発スタイルがCOBOLのまま変わってないのに道具だけ進化しちゃうと悲惨だよね
COBOLだとコピペだらけの膨大なソースのせいで帳票に項目数個足すだけで一千万とか今でも珍しくないけど、
オープン系で「うちはCOBOL時代から変わらない伝統工法だから一千万かかるんです」はさすがに客に理解されないわな >>414
EFとやらの旬な使い方を日本語で解説してるとこおしえてください! >>411
できるだけIQueryableでメソッドチェーン引き回して最後にToListしようよってことだと思う
最後は必ず実体化しないとならないのだから、非推奨とかないはず >>424
foreachで処理するならToList要らないし、他の処理にListで渡す必要がある時ぐらい? EFで質問なのですが
<connectionStrings>
<add name="Model1" connectionString="data source=PC1 ・・・" />
<add name="Model2" connectionString="data source=PC1 ・・・" />
<add name="Model3" connectionString="data source=PC1 ・・・" />
</connectionStrings>
↑のModel1,2,3はApp.configに記録されているEntityで使う接続文字列の情報ですが
public partial class Model : DbContext
{
public Model()
: base("name=Model1")
{
}
public virtual DbSet<Table_1> Table_1 { get; set; }
・
・
・
}
↑のようなModel1の接続文字列の引数を
textBox1に1を入力ならModel1、2ならModel2に切り替えたいです。 >>427
string strA = "name=Model1";
public Model()
: base(strA)
{
}
↑のような書き方だと オブジェクト参照が必要ですとでるのでアドバイスお願いします。 >>429
うまくいきませんもう少し詳しくお願いします。
↓なら動くのですがModel1,2,3の切り替えをアドバイスが欲しいです。
const string strA = "name=Model1";
public Model()
: base(strA)
{
} ここ↓が参考になるかも
C#でApp.ConfigのConnectionStringを取得する - normalian blog
http://normalian.hatenablog.com/entry/20090115/1231992331 構造体の1次元配列なんだけど、
(1) 4byte境界に配置されるって理解であってる?できればMSDNか何かの
ドキュメントのソース付きでお願いします
(2) これを制御する属性ってありましたっけ? 今気づいたけど、C#って、
int a = 0xffffffff;
って書けない?
いちいち
int a = unckecked((int)0xffffffff);
って書かないといけないのか? >>436
0x7fffffffまでは使えるがそれ以上はuintと認識される 既定でuncheckedなのに何でリテラルだとこんな余計なお世話の仕様になってるのかね var a = 0xffffffff;
うおおおおおおおおおおおおおおおおおおおおおおおおおおおおお >>441
桁倍にしても有効だぞ、良かったな
ここ初心者のスレか >>438
そらオーバーフローすることが分かりきってるからに決まってるだろ
C#ではオーバーフローすることが予め分かっている場合は必ずuncheckedを明示的に指定するのが正しい作法
そうしておけばコンパイルオプションでcheckedに変えてデバッグできる >>444
そんなしょういもない意見を偉そうに言われても
オーバーフローすると分かり切ってるかどうかはまったく明らかじゃない。
0xffffffffの型をuintのリテラルだと解釈すればその通りだけど、これは4バイトのビットイメージを表していると
解釈すればオーバーフローじゃないし、そういう解釈を採用することだって可能だったはず。
そもそも16進表記の用途ってそういうものだし。
だいたい、
int a = 0xffffffff;
こう書けて困る奴がいるのか。 > そもそも16進表記の用途ってそういうものだし。
それはおまえが思ってるだけ >>446
SingleやDoubleでもビットイメージとして判断するのか
めんどくさいやつだな decimalってビットイメージ出来るのかね
構造上無理そうだけど まあ、やっぱり規定でunckeckedなのにリテラルや定数で初期化する時だけ
チェックが入るのは一貫性がないし、余計なお世話としか思えないね >>450
めんどくさい馬鹿だけど、その型をそんな用途に使う馬鹿がいたらな 今のC#はもはやC++屋が使えるレベルの代物じゃない。ゴミだよ、ゴミ。 >>446
unchecked不要は意見として分からなくもないが、
キャスト不要は無理筋でしょ。
// キャストは必須
uint x = 0xffffffff;
int y = (int)x;
// 定数の時のunchecked必須はお節介?
const uint x = 0xffffffff;
int y = unchecked((int)x); つまらんところにこだわるのはコードあまり書かない人だと偏見を持ってる 分野は違うけどイチローってほんと細かいこと拘ってるよな。MSで言えばカトラーが細かいことに煩いか。 自由な環境で仕事できてる幸運な人はこだわりも強い
そんなことを言ってられない可哀想な人はこだわりなんて持てない >>458
個々のリテラルごとに型がきちんと確定しないと式の解釈があいまいになるのは分かるけど、
整数の定数式なんかビットイメージをそのまま代入してくれた方が便利だしそれで誰も困らんと思うけどな this.xxx
みたいな使い方のthisキーワードって極力省略すべき?
それともなるべく書くべき?
省略すべきときと書くべきときの使い分け方あったら教えてほしい そもそもthisを経由しないメンバ呼び出しを「省略」だっていう認識がおかしいと思うよw
であれば、どうすべきかは自明じゃないのかな >>465
俺は引数と名前が被るときぐらいしか書かない >>465
どっちでもいい
コーディング規約次第
規約がないとか仕事じゃないなら好きにするといい thisという特殊なメンバ変数を持っている
ただその変数から間接的に参照できるってだけなのかな
それなら必要に迫られない限りわざわざ使う必要はない気がする 同じ名前のメンバーとローカル変数を区別する時に必要だな メンバー変数を表すプレフィックス(m_とか)を付ける位なら、thisを付ける 今のVSは必須でないときにthis付けるとデフォルトで警告出るね 必ずしも必要ないとき、thisの有無で生成される中間コードって変わるの? 書いた方がいいよ、this。どこの変数か分かりやすい。
今は被らなくても何年か修正し続けるうちに
いつか被るかもしれないし。 どこの変数か分からなくなるような長いもん書くなというアレだっけ アンダースコア入れない派。
mXxx
もしくはアンダースコアのみ。
_xxx >>481
解決も糞もそもそも問題なんか存在しませんってw
thisつける(つけろ)って言ってる人の大半は釣りだと思うけど、
マジで言ってる人は(悪いけど)まともじゃないから相手にしちゃダメww それと、仮にC#でフィールドにプリフィクスつける意味があるとしたら、
それはプロパティやそのバッキングフィールドとの区別をつけやすくするため。
それ以上の意味はないし、それも本当に意味があるかかなり怪しい しばらく考えていたらthisをつけたらいい理由が思い浮かんだ
なんとなく納得したけど自分のコードではつけない C#ではメンバーアクセスはプロパティで行うのが基本
大文字小文字が違うから引数やローカル変数とかぶることはまずない さっき思いついたのはそんな理由じゃなくてバグの温床になるからだ
途中でコード変更してメンバ変数と同じローカル変数を加えると
それまでメンバ変数に対する処理や参照だったものが全部ローカル変数がターゲットになってしまう
int a=0
int Calc()
{
a++;
return a;//これはthis.a 1
}
↓
int a=0
int Calc()
{
int a=100;//これを追加
a++;
return a;//これはローカルa 101
} 自分はthisつけない派だけどいつかバグは出してもおかしくない
ローカルとメンバ変数同じ名前にしなければ問題がないけど
listやtextやcountはやりそうで怖い
かといってアンダースコアもつけたくない 名前忘れたときに一覧出すためにthis.って打つだけや。 >>489
そういうのを「為にする議論」という
温床てw
蓋然性が存在するのと「温床になる」って全然レベルの違う話でしょw 好きにすればいいよ
思いこみを語ろうとする人は仮説検定してから述べて de:code2017でMSのちょまどはthis付けろって言い張ってんじゃん
インテリセンス利くからやりやすいじゃんって感じだったけどね
int aみたいな一文字ローカル変数なんて使うならthis打たんのだろうがの thisつけない派だけど困ったことないなー
クラスがでかすぎるとかメソッドがでかすぎるとかを起因として名称が増えまくって名前が被るんじゃね?って思ってしまう メンバ名は大文字から書いて、ローカル変数は必ず小文字から書くので重複はないと信じたいが不安はある >>494
一文字はともかく、ローカル変数の名前なんか短くていいわ
俺はローカル変数は極力一単語で済ませるようにして、
それ以上長い名前を付けたくなったらスコープが長過ぎることを示す悪い匂いだと考えてる あと長い名前を付けたがるケースとしてありがちなのが、同じものを表す変数に対して一貫して同じ名前を使うことで品質を高めようというCOBOL的発想
必ずしも悪いとは言わないけど、大抵は適切にクラスを使えてないだけ 移譲で内部に別クラスを持ち、クラス名をプロバティーにして、それを内部で使うときにthis使うかな ガイドラインやルールで決まってないんだから
ローカルルールに則っときゃいんだよ。趣味なら好きにすりゃいいし、ちょまど信仰者なら言うこときいときゃいい だーから、スコープによる隠蔽がバグの原因になるって
蓋然性としてはありうるが現実にありがちかって言えば全然そうじゃないよw
長年プログラマやってるけど、少なくとも俺は一度も経験ないね。
だいたいそれが本当にバグの原因になるのならthis付けろじゃなくて
隠蔽なんかなくせと主張するのが正しい。
オーバライドもオーバーロードも使えなくなるけどね
インテリセンスにクラスメンバー一覧を表示させるためにthisをつける(つけろ)って言う奴もバカ。
本当にそんな機能が欲しいなら、そんな姑息的手段じゃなくてインテリセンス自体に
そういう機能とショートカットキーを追加してくれと主張すべきだ
いやそもそもいらないけどねそんな機能 >>502
言語仕様変えろって言うほうがおかしいだろw
頭大丈夫か? ありがちじゃないからこそ問題なんじゃないか
指摘されるまでそれが問題だなんて意識すらしてない >>503-904
頭悪すぎて反論する気にもならん。 まああれだ、杞憂って言葉があるけど、>>504は今後一切外に出ない方がいいよ。
だって外に出たら、隕石が君の頭上に落ちてくる蓋然性は存在するからな。
そんなこと地球上で何十年に一人経験するかどうかってレベルのはずだが、>>504によれば
ありがちじゃないからこそ問題なんだよね。
指摘されるまでそんな問題が存在すると意識してなかったろうけど、
今ちゃんと指摘したよ? >>506
それだったらデバッグする必要ないよな
お前はテストも否定しそうだな
お前の言い方じゃ10年に一度起こるバグもほっとけばいいんだろ >>505
お前のせいで904までアンカーついたぞ
死ねハゲ レスの多い方が勝ちだとでも思ってんのか
昼休み終わったらそれ以上続けるなよ 急に単発の煽りが増えたなぁ。そういえばゆとりは夏休みやな。 thisつけないってヒトのレスは頭オカシイから
自分は今後はthisつけるようにする。 そんなあぼーん宣言みたいなしなくていいよ
負け犬臭い 会社のルールとかじゃなければ自分の好きにしたらいいのに
何のために2chで「俺はこう書くぞ」宣言なんかするんだろ それが自覚できないから言ってるんだから言っても無駄だよw
頭の悪い奴って総じて自分が見えてないし自分に突っ込む能力がないし
自分が他人からどう見えるのか考える能力が欠如してるから見てて笑えるけど、
なんか哀れだよね。 >>516
うん、絵に描いたような酸っぱいぶどうだねそれ 頭悪い奴ってさあ、議論で勝てないとすぐにこうやって問題をずらすんだよね。
そんあすっぱいぶどうを取る方法を議論してどうするんだ、ってねw
そんなことで勝ったつもりになれるところがまた頭の悪い所以でもあるんだけど、
それがただの幼稚な防衛機制でしかないことに本人がまったく気が付いてないところが
見てて哀れだよねほんと 逆やw ふつうは馬鹿のほうが長文は書けへんもんやw いやーだらだら書くだけなら簡単だよー
思いついたこと片っ端から書いていったらいいんだもん
もちろんいい長文は難しいけどね >>522
あほかこいつ。コテもつけず単発IDのゴキブリが話に入ってくんな。100年ROMってろや。 ID:0qyy9e35 = ID:kVXZn+TQ = ID:ZdFVUMtA = ID:pBeXUKYV
分りやすいwww ちょまどはMS社員と言っても営業みたいなもんでプロダクト作ってるわけじゃないからなあ あと、MSの公式な見解としては「VSのデフォルトでは警告」という事実があるわけだし >>533
2015でも2017でもそんな記憶がない つまりthis書いても省いてもデフォルトじゃ警告でないってことだな コーディングスタイルなんてどうでもよかねえか
パブリックAPIが標準から逸脱していない
クラス(1ファイル)の中で一貫性がある
これだぇ守ってくれりゃとくに苦もなく読める
それよりまともな構造を追求することに労力を使おう
構造がクソだとスタイルでどう頑張っても読めないよ >>537
お前が読めるかどうかなんてどうでもいい
プロジェクトに参加してるあまり程度の高くない協力会社のコーダーにも読めることが必要
まあコーディングルールの話に構造がぁって言う奴はたぶんうちが使ってる協力会社よりレベルは低そうだが w >>537
読めるかどうかじゃなくて、いろんな書き方されると読むのにいらん苦労するから
書き方のスタイルを決めましょう、って言うのがコーディングルール
いろんなスタイルの大量のファイルやクラス読まされてみ
ちゃんと動いてるコードが読めないようならプログラマ失格だな C#実践開発手法という本が気になってるんですが、5000円越えと高価なので迷ってます。
この書籍、良書といえますか? スタイル規約だけはしっかりしてるスパゲティコードを何度見たことか
構造がスッキリしてればスタイルの違いなんてなんの苦労にもならない
ユニット内で統一感が取れてれば十分
それがユニットというものだ 多少わかりにくいレベルでスパゲティというやつがいるから困る。 >>541
VSのフォルダに言語仕様書のWord文書が入っているがそれで十分な気がする ■概要
HTML・JavaScriptを自動解釈してくれるライブラリやツールを探しています。
■詳細
疑似WEBブラウザを開発中です。
指定したURLへのHTTPリクエストを飛ばして返ってきたレスポンス(HTML・JavaScript)を自動処理して、
後続のHTTPリクエストも飛ばす、というものです。
1回目のクリエストを飛ばしてレスポンスを取得するところまでは開発が完了していますが、
そのレスポンスを自動で解釈して次のHTTPリクエストを発行する機能を作りたいのです。
これを愚直に行うと、
レスポンス内容の中からURLに該当する文字列をピックアップしてURLを抽出して後続のリクエストを飛ばす・・となってしまいますが、
近年JavaScriptが自動的にリクエストを飛ばす処理も多くみられますので、現実的ではありません。
なので、2回目以降のリクエストを自動的に行うために、
HTML・JavaScriptを自動解釈して、2回目以降のリクエストURLを抽出してくれるようなライブラリやツールを探しています。
良いライブラリやツールをご教授下さい。(URLやライブラリ名など)
厳密じゃなくても似たようなものでも結構です。
※ちなみにWEBブラウザのような表示機能は不要です。あくまでHTTPリクエストを飛ばしたいだけです。
■開発環境(本質問とはあまり関係ないですが一応掲載します)
Microsoft Visual Studio Express 2012 for Windows Desktop
C++ CLI(NET Framework) >>547
どこかで最近見たような内容だな
ここはc#スレなのでc++はスレチ >>547
要はスクレイピングやWebサイト自動テストの類だろ
Selenium使え とんでもないマルチポスト野郎なのか
それとも誰かが勝手にやってるのかw 失礼しま〜す
どこかにあるかもしれませんが質問を。
C#を というか、プログラミングを始めたばかりなんですが、
メイン処理のソースが、ほかのところに回せそうな処理で長くなってしまうのは
格好が悪いとおもうのですが、自力ではどうにもならないです。
なにか、分散させる方法のアドバイスがあれば、どうかご回答をお願いします。 >自力ではどうにもならないです
の意味がわからん
お前の書いたソースじゃないのか? 私が書きました。
でも、なんかダサい気がします。気がするんですがどう修正したらいいのかがわからなくて… 動作を早くしたいのならループ中の余計な動作を減らすようにするとか
保守しやすいコードを書きたいのならデザインパターンなどを勉強するとかあるが
>>553
ソース示さずにそんなこと言っても自分のセンスの問題なんだからどうしようもないから諦めろ >>556
ソース貼ろうか考えたんですが、ちょっと…
わがままです。ごめんなさい C#ならリファクタリングで処理を切り出したりしやすいし
リーダブルコードとか良いコードを書く技術とか読んで
いろいろやってみりゃいい もっとソースみるなり勉強してきます。
ありがとうございました。 短くしなきゃいけないという強迫概念に襲われてるやつ多いけど、別に長くてもいいよ。気にすんな ソースをhttps://ideone.com/みたいなとこに張ったら一発だよ
ここのお兄さんがたが知恵を絞って色々批判してくれるよタダで
そしてそれが、すこしの恥とひきかえにおまいを成長させる >>560、>>561
どうもありがとうございます 前略main(引数略)
{
処理a;
処理b;
処理c;
処理d;
リターン
} なにやら、「Stateパターン」というのを使えばきれいになりそうです Stateはアンチパターン
「状態は明示的かつ最小限に」が今風 いいから>>561のサイトにお前の書いたコード貼れ ろくにコード書かない初心者ばかりのスレに貼ってもしょうがないな https://ideone.com/cHsNov
これでどうか。
どなたか優しくご教授になってくださるとうれしいです... ほんとにはじめたてです。
VisualVasic使ってますが、機能がいまいち使いこなせません。 >>569
のやつ思った通りに動かないやつでした。
また貼りにきます >>572
これから内容増やしまくるので、
本体から離したいです。 プロジェクトまるごとどこかにUPした方が口出ししてもらえるかもよ >>573
分岐条件と処理の対応表作って飛ばすだけじゃだめなの? 長い処理は長くていいと思うが保守目的なら、parial使ってソースファイル分けるのがいいかな。 これはどうしようもないとまで言えないけど
こんなもんだろ >>579
こんなもんなんですね!
では気にせず書いていきたいと思います
>>580
partialについて勉強して、良さそうだったら使ってみようかと思います
ありがとうございました 長いかどうかというか責務が分割されてるかだよ
責務が分割されてるなら自然と短くなる
ショートコーディングを突き詰めるのはその後 処理を1つ1つのシーンごとに完成させたいんですが、
キーイベントと描画で、一緒に書きたい部分が分けられちゃってるんです。
それを、できたらどうにかしたいと思います。 ベースとなるシーンクラスを作る。キーイベントや描画の仮想関数も入れとく。
個々のシーンごとに、継承してクラスを作り、そこにキーイベントと描画を実装する。
ストーリー進行管理クラス作り、そこでシーンクラスの切り替えを行う。 キーイベントをコマンドに変換してモデルに投げるクラス
モデルを描画するだけのクラス
これは分けとかないと後で泣くよ C♯を触ってるけど、独習C♯をちょっとかじって、作りたい物ちょこちょこ適当に作ってるから綺麗なコードってのがよく分からない
このスレの人達はサンプルソース見たりとかやりやすい作法とかどうやって見つけてますか? >>586
本を読む
コードを書く
レビューする
レビューされる
常に考える >>587
レビューする、されるは考えた事なかったですねー
作ってる物が物なだけにあんまり同じ方向でやるような思考が無かったのもありますが・・・
ありがとうございます >>586
GitHubの有名なプロジェクト見てみ >>589
あー、そういうところから見るって手もあるんですね
こういう管理系統のモノ入れても使っていませんでしたが、そういう使い方もしたいですね >>589
こういうアドバイスする奴は実は自分でソース見たことない奴だと思うわ
結構癖のあるソース多いし考え方って想像以上にバラバラだから初心者が見たら余計に混乱するだけ 本読んで勉強するレベルの奴はきれいなソースなんて考えなくていいよ
まずは動くソースかけるようになれよ
動くの書けたらごっちゃなソースになってるだろうから、そこで余裕があったら考えりゃいい
昨日の質問の奴みたいにその書いたソースに合わせてな >>586
ブログで成果物のコード公開してみたら?
コメント等で指摘してもらえたりするかもよ? >>591
使いたい機能で備忘録とかサンプルみたいなのは見たりするけど、
プロジェクトレベルで無いかなーとかは思ってたので、どんな感じかは興味ありますね
>>592
動くものはそこそこ作ってるんですけど、オブジェクト思考とかまったく勉強してないので、
関数切り貼りとか汎用関数適当にぶち込んだクラス使い回しで、ほぼベタ書きみたいなもんなんですよね
たまーに少し凝って少しずつ汎用度は上げてますが
>>593
やっぱり公開するのが一番手っ取り早い上達方法だとは自分も思います
自分で改善するには、現状の自分のレベルよりも上の人からきっかけ貰わないとそもそも気付けないパターンのが多いですし
基本的にはスクレイピングしてDBにデータを集めて、それを色々と分析するようなプログラム書いてるだけなので、
ベタでも動かすのは大体問題無いんですよね
しかし、こういう作法は効率悪いよとか、こういう書き方すればいいじゃんみたいな参考コードから
自分のコードに付け足したいってイメージでした >>594
そういうのはC#よりPythonなどのスクリプト使ったほうがいいんじゃないか?
圧倒的に手っ取り早く作れるよ >>595
Rubyでスクレイピングしてる参考書買ってちょっと書いてた時期あるんですが、それが少し動作遅かったのでC♯で移植してからずっとC♯使ってるんですよね
後はC♯のchartクラスとかも少し触ったりしてます
Pythonは触ったこと無いですが、作業内容に合わせてコーディング時間調整できるぐらい色んな言語触れる用になるのは目標ではありますね・・・ Pythonだとmatplotlib使えばクソ簡単に高品質なグラフ描けるよ
スクレイピングがスクリプトで遅いのはXPathをうまく使えてないんじゃないかな
スクリプトを使うなら重い処理は極力ライブラリに丸投げするのがコツだ >>586
その独習C#とかで書かれてるようなのがいわゆる綺麗なコード。
まあ、有名ライブラリ書いてるコミッタとかでもそんな綺麗じゃない場合もあるので、ぶっちゃけ優秀な成果物作ったもん勝ちってのはある。
勝てば官軍。
行儀のいい無能より、素行不良でも有能な奴が好まれるのはどの業界でもよくある。
勿論、綺麗なコード書けるに越した事はないけど。 「きれいなコード」とはまた違うのかもしれないけど、「C#らしい生産性の高いコード」ってなかなか書けないよね
C++やC++/CLIが高機能かつ安全になりすぎたせいもあってC#の優位性が失われた気がするんだよな
VisualStudioやVSCodeの補完機能の効きが違うせいでC++よりC#が使いやすいとか、機能が少ない分C#の方が他人の書いたコードが読みやすいとか、今となってはそれぐらいしかメリットが無い気がする >>598
お前が井戸からでて実際のコード見てから語れよ w >>608
どこのソースを読んでどんなところがいいのか具体的に言ってみ 人のソース見てもたいていは小手先の表現しか参考にならない
汚いコードとの対比がないからな
人のソース見てそれ以上がわかるやつは相当デキル >>609
Cakeでもいいから頭に入れてもらおうか 綺麗なコードは端的に読みやすくて再利用性が高いってイメージで使ってました
後から機能拡張し易い書き方とかもそうですね
基本的にはオブジェクト指向な感じです >>612
で、どんなところがいいのか説明してみ
名前だけならソースなんて見れないボンクラでも書けるし w webbrowserコートロールにedgeが使えるようになるのはいつ頃でしょうか? >>614にまともな返事がない時点で勝負は決した
敗者は頭を下げるように >>619
日本語が理解できないのかな?
> 名前だけならソースなんて見れないボンクラでも書けるし w >>620
うん、ボンクラだから理解力皆無ってことね >>620
ねえねえもしかしてCakeのソースすら見たことないのかな? >>616
横レスだけど
https://social.msdn.microsoft.com/Forums/ja-JP/d0aeb9ca-c21e-43ea-8ed0-5eb309d96f9e/webview?forum=windowsgeneraldevelopmentissuesja
.NetFramework デスクトップアプリケーション用のWebView(WebBrowserコントロール)は以下の認識
でいますが間違いがないでしょうか?
1.Microsoft Internet Explorer 7が既定となっている。
2.レジストリ変更によりInternet Explorerのバージョンの変更が可能。
3.Internet Explorer以外のブラウザ(Microsoft Edge、Google Chrome)を使用できるコントロールはない。
このページの内容は間違っているの? >>622
CakePHPとでも勘違いしてるんだろ >>623
1、2はIEのコントロールのことであってる
3はedgeもchrome系もコントロールあるから間違ってる 質問。
これはどういうケースを想定したものなのか教えてくれ。
> フォーカス イベントと検証イベント
> (中略)
> マウスの使用、または Focus メソッドの呼び出しによってフォーカスを変更する場合、Control クラスのフォーカス イベントは次の順序で発生します。
> Enter
> GotFocus
> LostFocus
> Leave
> Validating
> Validated
> https://msdn.microsoft.com/ja-jp/library/86faxx0d(v=vs.90).aspx
現状固定的な画面のUIでやっていて、
ファイル名を入れるテキストボックスとその隣にopenFileDialogを呼ぶボタンを配置している。
まあ、よくあるUIだ。
これを、ボタンの領域をケチりたい(少しでも長くファイル名を表示したい)ので、
試しに動的なUIで「テキストボックスのEnterイベントでボタンが出現する」ようにしてみた。
ボタンはテキストボックスのLeaveイベントで消す。
ボタンを押すときは当然テキストボックスの外に出るので、
ボタンのEnterイベント、LeaveイベントでテキストボックスのLeaveイベントを -=, += している。
(後からMouseXXXXイベントも対応するから、今は突っ込まないでくれ)
さて、ここで、ボタンが押せない。
理由は簡単で、テキストボックスのLeaveの方がButtonのEnterよりも早く、ボタンがremoveされてしまうからだ。
これについて、上記を読む限り、Enterのほうが先、つまり、
ButtonのEnter -> TextBoxのLeave
だと思うのだが、とにかく、そうなってない。
上記ページはどういったケースについて記したものか、分かる人教えてよろしく。
或いはこのケースはどのページを参考にすべきなのだ? 移動先のEnterが先っていう説明じゃなくて
当該コントロールに入ってから出るまでのイベント発生順序なんじゃないの >>628
ああ、そういうことか。サンクス。
ただそれならFocusのGet/Lostで分離して書いていてくれれれば誤解無いのだが。
>>630
フォーカスは一つ(マウスは一つ)なのだから、
動的にadd/removeしても全く苦労しないし問題ないが。
当然visibleを使っても出来るが、同様にイベント順は見えるから同じ。(はず) >>631
状況によって変わるものをどうやって書けと…
leaveとenterが常にセットで起こるとは限らん
相手が一つも限らない >>632
どう考えてもEnterはLeaveより先なんだから、普通に以下でいいだろ。
----
マウスの使用、または Focus メソッドの呼び出しによってフォーカスを『得る』と、
次の順序で Control クラスのフォーカス イベントが発生します。
Enter
GotFocus
マウスの使用、または Focus メソッドの呼び出しによってフォーカスを『失う』と、
次の順序で Control クラスのフォーカス イベントが発生します。
LostFocus
Leave
Validating
Validated
----
もしかして、別々に書いているのは、Control内部で状態保持していて、
キーボードでフォーカスを得た際は、マウスでフォーカスを失っても、別順
Leave
Validating
Validated
LostFocus
という超絶糞仕様だったりするの?もしかして?
> 相手が一つも限らない
いやFocusは常に一つだよな? >>627
テキストボックスのMouseDownにボタン用のイベントを入れる
MouseDownされた座標を調べてボタンの位置でなかったら実行しない
で一応は実現できると思う。ボタンは位置を示すためだけの飾りになる
その前にコントロール重ねるのもイベントが衝突しかねないのも良くないとは思う 前提条件を限定してエンジン側の仕様に文句言っても…
想定した前提条件に合致するように橋渡ししてやりゃいいんじゃない? >>633
変な考え方する人だな。
Enter発生後の状態って概念があるかどうかわからないけど仮にEner状態と呼ぶとして、
「EnterはLeaveより先」って仕様だと親子(入れ子)関係にない2つのコントロールが
同時にEner状態であることを許すことになるわけだけど、そのあたり考えて言ってるのかなそれ >>634
実装はボタンを遅延消去(10ms)する方向で考えてる。
理由はそのほうがコードがスッキリするから。
コントロールは重ならない。
というかボタン出現時にテキストボックスをその分縮めるからだが。
>>636
知らんがな。
MSDN確認したらそう書いてあるからそう実装したら動かない、
じゃあ逆なんだろ、ってのは予想付くが、それで正しいのか?という疑問だ。
普通はLeave->Enterの順だと思うよ。HTMLはそうだし。
ただ.NETはそこら辺古くて、奇妙な仕様が残っていたりするから確認したかった。
ああ、だから、以下の書き方が一番いいのか。まあいいけど。
----
マウスの使用、または Focus メソッドの呼び出しによってフォーカスを変更すると、次の順序で Control クラスのフォーカス イベントが発生します。
LostFocus
Leave
Validating
Validated
Enter
GotFocus >>637
いや、仮にもエンジニアの端くれなら、「EnterはLeaveより先」って話を聞いたら
瞬間的に整合性がない(仕様バグ)話だなって思わないとまずいと思うよ 自分で何ともならん時は、理不尽でもそれを受け入れるのが職業エンジニアじゃね? >>638
> 仕様バグ
それは違うだろ。どっちが組みやすいかはさておき、どちらの仕様でも組めるはず。
勝手にオレオレ仕様に決めつけるほうがまずいだろ。
俺も逆なのか?とは思ったよ。最近はHTMLに慣れてしまったので。
ただ今回に関してはEnterが先の方がコードは単純に済んだ。
一概にどっちがいいというものでもあるまい。 >>640
違わない。
自分で書いてるでしょ。
入力フォーカスを持つコントロールは常に一つだと。
Enterが何を意味しているのかMSDNに書いてあるか知らないが、
普通に考えれば自分自身または子コントロールが入力フォーマスを持たないのに
「Enter状態」になるのは変で、そうであれば上の入力フォーカスの仕様と矛盾する 馬鹿が暴れてるw
マウスは瞬間移動可能
周りの領域を通らないでいきなりenterだけ発生させることも可能だし
逆にleaveだけもありうる >>641
君がどう考えるのも自由だが、俺は同意しないよ。
定常的には「フォーカスを持つのは常に一つ」だが、過渡的には実装次第だろ。
直感的には「フォーカスを持つのは常に一つ」の方がいいからそっちに揃っていることが多いだけで。
他で有名なのはRadioButtonで、
俺の勘違いでなければ.NETは仕様を変えてる。
そういうのがあるから確認しただけ。
ああだからそういった意味だと
> 相手が一つも限らない (>>632)
は俺の読み違いだな。彼はそこを指摘したのか。すまんかった。 Enterが先に起こるとフォーカスが同時に2つになってしまう
Enter内部でフォーカスのカウントしてたら困るだろ
Leaveが先に起こってカウント一個→0個→一個のほうがいい フォーカスが移った時、ユーザーが見ているのは移った先の方だから
enterの処理を先にやったほうがレスポンスが早く感じる
てか、enterが先のほうが正義という理屈も有るんだから現状をバグと決めつけるのはどうかと思うよ
仕様を決めた人の裁量の範囲 排他的な状態変化に連動する状態変化が排他的じゃなかったら矛盾に決まってるわけだけど、
こういうロジカルは話は通じない人には全然通じないね...
たぶん数学苦手だったタイプの人だと思うけど ロジカルが全てならleaveとenterは完全に同時発生しないとおかしいわけで
先にleaveと言っている時点で既にロジカルから妥協しているだろ
多分数学が得意だと思いこんでいたタイプの人だね 途中で送ってしまった
が、それはどうでもいい
実際コードを書いて確認した
予想通りというか内容的には納得の内容の結果を得た
それになんでこんな仕組みになってるかも理解した
他に並んでいるイベントをよく見るとおやっと思ったのでそこをつついたらいい答えがでた
Enterは確実に後でなくてはいけない
理由がちゃんとある
てめえらで確認せえや >>647
実験の結果
同時に起こってはいけないという結論に至った そして
EnterやLeaveは過信してはならない
というか仕組みを理解しないで使ったらだめだなこれは >>651
シビアな場合はBeginInvoke噛まして、両方発生してから動かすのが吉だな >>647
よく考えてから人を批判した方がいいよ
仮に一時的にどのコントロールもフォーカスを持たない状態が出来ても
入力フォーカスの排他性と矛盾しないが、2つのコントロールが同時に
入力フォーカスを持ったら矛盾する 君らも思い込みで話さないでテストしたらいい
しつこく何度もやってると思ってるのと結果が違うから 英語圏の人間じゃないから感覚がわからなかった
leave left left
leaveであってleftじゃないってこった >>653
それは君のオレオレ正義仕様でしかないだろ。
世の中にはそうでないものもあるってことさ。
有名なのはPHPの三項演算子が左結合とか。
http://y-uti.hatenablog.jp/entry/2013/03/10/101020
仕様ってのはそう決められていれば仕様であって、
効率的でない/直感的でない/矛盾しているとかは別の話。
とはいえ、これらの場合は糞仕様と呼ばれることになるが。 だからオレオレとかそういう話じゃなくて、全体の仕様に矛盾があるかないかのっていうロジカルな問題なのw
好みが入り込む余地なんかどこにもないってのw
いってるそばからこれ>>646だね。
まさにバカの壁 ボクシングでも何でもいいけど、排他的にしかタイトルホルダーになれないとしたら、
タイトルホルダーが誰もいないのは問題ないけど、同時に二人がタイトルホルダー
になるのはまずい。
だったら、「ダイトル返上」イベントの前に「タイトル獲得」イベントが発生する仕様は
破綻してるに決まってるじゃないの >>658
破綻してはいないんだよ。
数学が得意なつもりだが実は馬鹿な人には分からないのだろうけど。 まあバカの壁の向こう側の人に何言っても無駄だからこれ以上はどうぞお好きに。
自分の同僚にこういう人いなくてよかったw つーか、自分の学校時代の成績考えりゃ自分が数学脳の持ち主かどうかなんて
だいたい見当つくとおもうんだけどねw
どう考えてもロジカル思考が得意なタイプと思えんが、その自信はどっから来るのかねw
ネトウヨと同じ、抑圧された劣等感としての自己陶酔か >>661
むしろお前の自信の方が不思議だわ。
とはいえ罵倒しあうのも意味無いから、片をつける勇気があるのなら、具体的に、
・○○のケースでEnter->Leaveの時には『絶対に』実装できない
というのを見つけてみろ。
それが確かにどうにも実装できないのなら、Leave->Enterの順でなくてはならないことになる。
それを俺らの誰かが実装できた=解けたなら、君が馬鹿だという証明になる。
分かりやすいだろ。
俺はそういうのは無いと思っているから、
・君が何も言えなかったら俺の勝ち
・君が言った物を誰かが解けても俺らの勝ち
・君が言った物を誰も解けなかったら君の勝ち
となる。では出題よろしく。
>>654
ちなみにテストコードを書く元気があるのなら、
・フォーカスがある(Enter済)ControlをRemoveで親から剥がしてみな。
確認してないが、多分Leaveは発生しないと思う。
というかHTMLではそう。
だからガシガシ動的に書き換える場合は基本的にカウントするのは危険だったりする。(>>644)
この場合にLeaveが発生した方が楽なのかはよく分からん。
ただそれ以前にFormはHTMLとは違って
動的にControlを剥がしたりするように設計されてはいないから、
この辺をつつけば矛盾はボロボロ出るはず。
とは言っても、そういう使い方をするな、でしかないが。 プログラムって国語だろ必要なの
仕様読み書き
言語読み書き >>663
何か訳のわからないこと書いてるけど、
> ・○○のケースでEnter->Leaveの時には『絶対に』実装できない
> というのを見つけてみろ。
そういうケースがあるとか、そんな話誰もしてないでしょ。
ばっかじゃないの本当。
仕様の整合性がないと言っている。
言っちゃ悪いけど、こんな簡単な話が理解できないのは、たぶんこのスレで君ともう一人ぐらいだよ。 なぜ重箱の隅をつつくような話のように見えても論理的な整合性が重要かって、
普通のプログラマは、他人の作ったフレームワークであってもきちんと論理的に
整合性のある仕様になってるはずだと期待してそういう前提でコードを書くからだ。
論理的な整合性がない、仕様バグのあるフレームワークであっても
必ずしもそれが原因で実現できない処理が存在するとは限らない。
問題はそれが直感的でないこと。
プログラマの期待に反する仕様がバグを湯初すること。 まあ、さすがにこのレベルの話が理解できないのが多数派とは思えないので、
誰か何か言ってやってよw
どうしてLeaveよりEnterが先に発生するような仕様は仕様バグなのか。
これがそんなに難しい話かねえw
言っちゃ悪いけど、頭悪い奴の思考回路って分からん。 >>665
なんだ論点ずらしで逃げるのか。
ネトウヨを嫌っているのだからパヨクなんだろ?
まあパヨクが馬鹿で口だけなのはいつもだが。
俺は最初から.NETの仕様を問題にしている。
お前は「オレオレ仕様」と違うから勝手に「仕様バグ」だと喚いている。(>>638)
俺たちは「それは違う。バグではない」と言っている。(>>640,645)
理由は、それでも組める=仕様として成立する範囲だから。
お前は馬鹿だからそれが分からず、俺らが組める範囲でも無理だと思っているだけ。
だったら証明してみろ、と言ったら君は逃げた。典型的なパヨクだね。
>>666
論点は、「仕様バグかどうか」であって、「いい仕様かどうか」ではない。
お前はそれすら分からない馬鹿パヨクのようだが。
とはいえ君は本当に馬鹿だから、これでも通じないだろう。終わりでいいよ。 夜中の3時にこんな長文投稿している方が
社会的に破綻した人間だと判断される可能性が高いから安心しとけ このスレに頭のおかしいのが複数住み着いているのはよくわかる Enterイベントが発生した段階でフォーカスはまだ移動してない筈だし
Enterイベントが発生したからといってフォーカスを得る保障も無かったはずだけど
あとコントロール間のイベントの発生順序の保障も無かったと思ったがな >>676
だから試せと言ってるんだけど
思い込みはよくないそれと
上に出てたイベント発生順をよく見て理解できないところを埋めないと
おまえらに大ヒントだけどVのつくイベントを実装してから1テストしろ
そしたらleaveより先にenterが発生してはいけない理由がわかる >>677
>思い込みはよくない
たしかに
たまたまテストした範囲でそうなったから保障されてるという
思い込みはよくないな お、そうだな。ちゃんとライブラリのソース読まないとな ライブラリのソースを呼んでも、現在の実装がそうなっているというだけで
それが仕様として保障されてるかどうかとは別問題だけどな
まあ、現在の実装で確認できればほぼ問題ないケースがほとんどではあると思うが 保障以前にそれが何を意図してるのかを理解できなければ意味がない
leaveより先にenterが発生してはいけない ID:fngH3Ate 毎年恒例の釣りに馬鹿が釣られてるw なんでいつもトンチンカンな議論が永遠に続くのかね。
そもそもMSDNに書かれてるイベントの順序は
ある一つのコントロールのフォーカスが当たってから
(もしくはアクティブになってから)
抜けるまでのイベント順が書かれてるだけで
コントロール間のイベントの推移が
書かれてるわけじゃ無いよ。
なんでleaveから始まらなきゃあかんのよ。
それが読み取れないのがそもそも
プログラマとしての適性が云々カンヌン…
テキストボックスのenterなどでボタンをvisible(テキストボックスのリサイズ?)、
ボタンのpressとleaveなどでボタンのhiddenとかテキストボックスのリサイズとしないから
コントロール間のイベント順なんて言う実装依存や環境依存に頼ることになって、
いらんバグの元をこしらえることになる。 >>687
むしろいまごろになってトンチンカンなこと言ってるのは君だと思うよw >>689
日本語読めないのかな?
そもそもの質問が
>>627
> https://msdn.microsoft.com/ja-jp/library/86faxx0d(v=vs.90).aspx
『Windows フォームのイベントの順序』
についてだったんだが。
脱線しすぎてなんの議論してるかも忘れちゃったのかな? >>690
それかー
ここ1週間で読んだの最新3レスぐらいだったからなw >>627が1週間前で60以上も駄レスが続いてるのに
3つって。数も数えられないのかな? >>686-689ぐらいしか見てないってことだよ。議論()になんて混じる気もない フォームアプリケーション作ってるとついついフォームのクラスに全部書き込んでしまうんですが、クラス分けの基準というか、指針はありますか? >>695
難しく考えない。
UIがWPFになってもUWPになってもそっくりそのまま使いまわせたらうれしいよね?
逆に言うと、そうなってないなら考え方が間違ってる それは違うんじゃないか?
普通のwinformsのアプリをMVVMにも使いまわせるように
なっているのはある意味おかしい
M層だけ使いまわせることになってるけど
実際はモデルの仕組みをMVVMよりに設計したりしないといけない
つまりMVVM知ってないとwindowsformでアプリ作れないって変なことになる
そういう目的なら最初からWPFなりUWPなりで作れと思う 質問者のレベルがわからないから答えられません
というのはやめといて
基本的に自分で糞コードいっぱい書くしかない
わからないときは人のソース見たりしてみたりもいい
その中でもクソだなって思ったり自分でも使いたいところがあると思う
そういった成長の後でリファクタリングに進めばいい
同じコードが何度も出てきたらメソッド化してみたり(VSにメソッド抽出機能があるので楽) >>697
一般的なMVVMが本当にそうなってるなら(なってないと思うけど)。それはMVVMが間違ってる >>700
ModelにINotifyPropertyChangedを実装してるか? 今時ビジネスロジックなんか全部バックエンドにあるんだからフロントが何だろうがWeb API経由で完全疎結合だから問題にならないよ
あえて全部クライアントに置くような前時代的な設計を採用する場合、
それはアプリがクライアント端末のGUIやハードウェアに密接に依存していることが多いので
差し替えなんか考慮して作るのはそもそもナンセンスだ AutoMapperのInitializeがめんどくさいんだけど
初期化なしで使えるマッパーライブラリなんかないかい? https://github.com/AutoMapper/AutoMapper/blob/master/README.md
AutoMapper知らなかったけどこのページのInitializeのことでいいの?
この程度ならリフレクションでやれば一発だろ
ジェネリックの代わりにTypeオブジェクトを引数に渡せるオーバーロードがあるのかは知らないけど、
それが無くてもMethodInfo.MakeGenericMethodで型引数を動的に指定できるよ 最近C#の勉強を始めました
プログラミングも初めてです
return ◯◯
で結果を返すという事について教えてください
画像のstring resultString="";の部分のresultStringという変数にresultString="グー";という文の値を代入するまでは分かるのですが、1番最後の行の結果を返すというreturn resultStringはどこに値を返すのでしょうか?
1番上に記述されているprivete string getComputerHand();というメソッド?にグーやチョキなどの値を返しているのでしょうか?
初歩的な質問ですいません
http://i.imgur.com/CBE1y8L.jpg >>707
その画像の部分が結果を返すための一つのメソッド
他の部分で例えば
string str=getComputerHand(); //この場合はstrに結果の文字列が入る
みたいに書いてそのメソッドを呼び出す。 >>708
レスありがとうございます
この画像でいうとresultString=◯◯の結果の値が
getComputerHand();
というメソッドに返されていて
意味としては
getComputerHand();=グーorチョキorパー
というような解釈でよいでしょうか…?
また重ねて質問なのですが
string resultString=" " ;
の文で" "を使うのは何故でしょうか?
格納先がstring resultStringとstring型で指定されているので要らないのかと思っていました >>709
メソッドに返すんじゃなくて「メソッドが返す値」
>getComputerHand();=グーorチョキorパー
だいたいあってる
>string resultString=" " ;
string resultString="" ; //半角スペースも何も入れない初期化
値が無い(未参照)の変数は返せないので必ず初期化が必要。これはコンパイラとかの制限
その程度だとここで聞くより自分で動かしてみたほうがダントツに早く身につく >>707
C#の基本的なことがわかってないみたいだから本屋行って「独習C#」でも買ってこい 勝ってこい、だってさw
また「命令バカ」湧いてるのな >>707
これは君のノートか?
最近の学生は手書きではなくワープロでノートを取るのか? webBrowser1_DocumentCompleted はブラウザが完全に表示される直前で呼び出される
と思いますが、完全にブラウザが表示した時を知るにはどうしたら良いですか? 戻り値ってのはアキュームレータに設定される値と思えば良い。 yes and noだね
厳密に言えばあるが、恐らく>>717が想定しているような意味での
特権的なアキュムレーターは無くして直交性の高いデザインにしよう、
っていうのがモダンな(っていっても40年ぐらい前からだと思うけどw)考え方じゃないの?
知らんけど アキュムレータって、x86のレジスタのEAXレジスタぐらいしか思いつかない。 アキュムレータレジスタあるCPUなんていっぱいあるだろ。 C#erはタスク管理どうやってんの?
gradleみたいなツールが欲しいんだがdotnetランタイムだけで動作する類似品ツールはないのか >>726
タスク管理というと曖昧だな…ビルドツールのことを言ってる?
dotnetランタイムって言い方も普通しないけど、Cakeはどう?
https://www.cakebuild.net/ >>727
すごく良いですね
こういうのを探してました
>>728
JREに依存したくなかったので… >>729
cakeの採用例はIdentityServer、omnisharp-roslyn、NUnitと有名どころでも増えてきてるし、覚えといて損はないよ 注文明細の税込価格を計算して注文ヘッダごとに合計する
合計値が注文ヘッダに設定されている注文上限価格を超えている注文ヘッダを抽出する
抽出した注文ヘッダを注文日順に順位を付ける
順位が100位から200位までの注文ヘッダを抽出する
抽出した注文ヘッダに注文明細を内部結合する
EFでこういうクエリ書ける?
速度チューニングできる? その程度なんです。2chに仕事を丸投げしようとしたあなたがアホだったんです。
もしあなたがSIerならMSのサポートにチューニングに関する質問はするべきです。 ではこのスレは終わりですね
簡単な質問にも答えられないようでは存在する必要ないですよ 仕事ができないキミは会社では終わりかもしれないけどね。 いえいえ
あなたほどではありませんよ
あなたの終わってる感はまさに別格です 馬鹿にしたり煽ったら教えてくれるだろうというみっともない期待は無駄だろうな。
仕事のことで、一人でチューニングもできないスキルレベルなら素直にMSに聞きたまえ。
これが相談室でのマジメな回答だ。チューニングは簡単ではない。経験が必要だ。
なのに経験しようとせず丸投げするおまえは開発に向いてない。別格のアホ。 土曜に休日出勤してまで仕事やってんだ
あんまイジメないでスルーしてやれ 仕事の内容を2chで質問すること自体正気だとは思えない なんか例によって質問者に小姑みたいにクドクド絡んでる
バカが大量に湧いてるけど、こういう馬鹿な連中ってそういう自分が自分で嫌にならんのかね。
哀れというか人間的に終わってるというか >>747
それが2ch。だからそんなところで仕事の質問するのがおかしい >>747
そんな相手に一節ぶつけるのは
さぞ爽快であろ >>739
簡単な質問を自分で解決できないなんて存在する理由ないですね LINQやTask絡みの質問してもまともな回答もらえないしな
このスレは.NET2.0時代の人多そう >>752
.NET2.0時代の人ですねお疲れ様です >>747
何年も嫌み言い続けてるお前ほどしゃねえだろ ふらっとでやるのは困るが、ここでなら好きなだけやれw 質問に答えられないけどできるって言ってしまったお
どうするお
そうだ!相手を口撃してうやむやにするお!
俺って天才だお^_^
まあこんなところでしょうね ID変わった。俺がデキルと言ったんだが、あれを見てどこにデキナイ要素がある?
敢えて言えば一番難しいのは速度チューニングだけど条件ないからどんだけ遅い結果になってもチューニングしたといえばおkだしできるだろ 質問じゃなくて単なる仕事の丸投げだもんな。
そんなのにコード起こして答える奇特な人は滅多にいないだろ。
宿題スレでも行った方がまだ良いんじゃないか。 >仕事の丸投げだもんな
仕事の丸投げでもいいと思う。
おもしろそうならやってみるだけだし、おもしろそうじゃなかったら放置。
ただそれだけ。 C#始めるのです。
コンパイラはマイクロソフトが無料で配ってるなんちゃらって統合環境。
んで、検索とかしてやってみたらCUIとかは普通にできそうだったけど、
GUIがいまいち作り方わからんかった。
と言うか何と言うやつの中の何という奴を使えばいいのかすら分からんから検索のしようもない。
そこでGUIとかその辺のアプリ的な感じのやつは本に頼ろうと思うので、おすすめの本教えてください。 こうかな
たぶんもっとスマートな書き方があると思うけど
select * from 注文ヘッダ
join 注文明細 on 注文ヘッダ.注文ID = 注文明細.注文ID
where 注文ヘッダ.注文ID in (
select 注文ヘッダ.注文ID from (
select 注文ヘッダ.注文ID, rank() over (order by 注文日) as 注文日順 from 注文ヘッダ
join 注文明細 on 注文ヘッダ.注文ID = 注文明細.注文ID
group by 注文ヘッダ.注文ID, 注文ヘッダ.上限価格, 注文ヘッダ.注文日
having 注文ヘッダ.上限価格 < sum(注文明細.価格*税)
)
where 注文日順 between 100 and 200
) monoは前からLLVMに対応しているし、llilcというプロジェクトもある >>762
グルーピング弄ればinを回避できるよ
問題はこれをEFでどう書くの?
チューニングはどうするの?
ってとこなんだけど
SQL書いた方が生産性高いよなぁ むしろVSいれればGUIのほうがまんまやればいいだけじゃないのか?
今時はVBAすらやったことないのが普通なんかね >>761
C#だと何検索しても大体WinFormのやり方がHitするのにどんな検索したのか不思議 WPFはエヴァンジェリストのオモチャ
コーダーには不向き そーいやWPF関連はググると大抵MVPのサイトがヒットするわ
なるほどそういうことか WPFさえなければもっとC#が普及してて
C#の地位が高かったかもしれないと思うと悔しい
MVPの人たちはどう思ってるんだか MVPの連中はとっくにWebへ移ったよ
C#ってWeb開発の言語としては意外と普及してるんだぞ Winアプリは最終的に一番難しいのはGUIだよ
最初は細かい事分からず適当配置して出来た気分でいるんだろうけど
あとからあとから不具合が見つかって修正する事になる
GUIは環境によって見た目や動作が変わってしまうのでデバッグで再現させる事が
困難な事も多い >>775
よく簡単に「一番難しい」なんて断言できるね、大したもんだ 自分の体験した少ない範囲が全ての世界なんだろうな
初心者がちょっと自信つけ始めたころなんだろ 30年以上プログラミングしてるが俺も最終的にはUIだと思う。>>775と理由は違うが ハマるとキツイのはマルチスレッド絡みかなぁ
何せ落ちた所のプログラムが正常だったりするからな
mallocのサイズ間違ったバグは忘れないわ >>778
面倒だし時間はかかるが、バグったときに見えるから不具合見つけやすい 揚げ足取るのは建設的じゃないと思うのであえて>>775の意図を忖度してみる
どうしても非ユーザーコードの比重が大きくなるから、
どうしてもバグを回避するバッドノウハウ的なものが必要になりがちって意味では確かに「難しい」かもね。
Win Formなんか2.0で追加されたコントトールバグてんこ盛りだよね。
自分全然触ってないけど、Webなんか今でもあいかわらずバッドノウハウの塊でしょ? コード書くわけでもなくここで机上の空論やっていたら十分非建設的 それぐらい文脈からわからなければただの馬鹿だね・・ >>784
答えれば済む話でしょ。いちいち幼稚園児みたいな低脳煽りはいらないから知ってたら教えてよ。 知りたきゃ低能アピールしてないで追加されたの+注意点とかでぐぐれよ なんだ同一人物かよ、クソが。失せろカス。
ID:2WJ6m4B/ = ID:nXa8x8o4 = ID:7ymyOIx0 >>779
> 何せ落ちた所のプログラムが正常だったりするからな
これはシングルスレッドでもメモリーをぶっ壊すとかすると発生する
マルチスレッドのバグは再現性がなかったりするから厄介
何度も痛い目にあったから日頃からできる範囲でトレース入れる癖がついたわ >>785
横からだけど普通に考えたら
追加されたコントロール(は)バグてんこ盛りだよね
だろ
あえて煽るほどの話には見えん まだ自演続けるのか。こんな過疎スレでバレバレなんだよ。 datagridviewのチェックボックスの挙動がおかしいくらいしか思いつかないけど、てんこ盛りってほどバグが放置されているとは思えない
バグがあったところでwinFomsで組むのならそこを何とかするしかないしどうでもいい
コントロール周りの不具合なら>>780の通り目に付くからすぐわかるしな コントロールにバグというか使用上の注意なんていくらでもあるだろ
例えばカレンダーだと何も考えずに配置して表示してるとこんな風に表示がおかしくなる
ttps://i.imgur.com/8dX0KcJ.png 「これは仕様です」ってならそれは仕様の不具合だから、使用上の注意もバグも似たようなもんだよ >>785
揚げ足取りかと思ったら本当にわからないのかよ… 誤植を指摘されて発狂自演とか底辺PGらしくて微笑ましい 誤植ならちゃんと校正しないとね
>>799みたいなアホ文章はちゃんと校閲しないとダメだけど C#を独学で勉強し始めました
プログラミング自体初めてです
超入門用の本を2冊買って最後まで読み終えたのですが、勉強を進めて行く上でオススメの本などはありますか? 本読まなくてもプログラムのスキルは身につくけど本読むだけではいつまでたっても上達しない。料理みたいなもの >>802
VSフォルダの下の方にC#の言語仕様書がWord文書で置いてあるので熟読しなさい ○次受けが多いほど退場率が早くなる。高くなる
直受けの50万 客:いつまでもうちにいていいよ
3次受けの50万(客は90万払ってる) 客:短期延長していい?
5次受けの50万(客は150万払ってる) 客:作り終わったらとっと出てけ できなかったら即退場だ
長時間労働 高稼働 高スキル要求が多い
フリーランスサイトを運営している零細ITの自称エージェントは労働市場から流れてくる案件を転売してるだけだった。
労働市場に加入すれば誰でも案件に応募することができた。収入が40万50万台にならなくて済む
エンド - ユー子 - エージェント-JIET 公表価格 90~60 - エージェント×3 = 言い値50万以下
エンド - ユー子 - エージェント-JIET 公表価格 90~60 - エージェント×1 悪質な言い値で50万以下
エンド - ユー子 - エージェント-JIET 公表価格 90~60 - JIETに加入して公表価格で応募できる
eJobgo JIET JISA で検索
優良エージェント・優良サイト
首都圏IT(PE-BANK) クラウドテック プログラマーズ 本が読みたいのかプログラミングしたいのかどっちなんだ?って感じだな 道具とか本とか形だけ揃えて満足する人は多い。なぜかそこまでが目的な人も 自分も手始めに色々(書籍)買い揃えてしまうほうだけど、スキルアップした時は既に旧版扱いで入手困難だったりするから身の丈合わなくても旬なうちにハードル高い物も買ってしまってる 独習C♯軽く読んで簡単な動かし方覚えてから、とりあえずDBやライブラリ等色々ネットで調べながら動くもの作ってたけど
後から修正しようと思っても一から作り直した方が早そうなプログラムを量産してます
SEやPGでも無いし、自分用にしかプログラム作らないので特に納期とかも気にしなくていいけども
生産性を上げれるなら上げたいと思ってます
皆さんは後から修正するかもって思った時はどんな事に気をつけてますか? >>812
>>813 のそれぞれをインターフェースで結ぶ
…でもやりすぎるとかえってめんどくさかったり…
そのあたり上手くやれるのが経験だったり、才能だったりするんだろうな
と思う俺も趣味プログラマ できるだけ汎用的に使えるように>>813だな
今回使うための用途じゃなくて、ほかにどんなことに使えるか考えつつそれも視野に入れてクラス組む
そしてできたのは自分用のライブラリとして保存 >>813
>>814
クラスとインターフェースですか
コレクションとか凄いなぁって見ても、自分でインターフェース作った事無いですね・・・
一応、クラスは分けて作ってますが
クラスが増えすぎて、どれで何してたのか分からなくなってくる管理状況です
抽象化も出来てないので、似たような仕組みが分散しすぎてて、なんか勿体無いところも
かといって一部使いまわそうとするとクラスの数珠繋ぎで依存性が出てくるので管理が大変に まあ、あんまり考えすぎてもしょうがないと思うけどね
これがベストと思った書き方も、将来スキルがあがったらもっとベターなやり方
思いついたりもするし
とりあえず考えとく事は、クラスだなんだというよりももっとシンプルに、個々のパーツ間の
依存関係を極力シンプルにして、コードの見通しをよくしてメンテしやすくすること
他のプログラムに流用できそうな部分は、実際独立したパーツとして流用できるような
作りにしておくことくらいかな >>816
CommonClassとでも名付ければよか >>817
実際、部分的に使いたい時に前はこの書き方してたけど、今はこっちの書き方覚えたからこっちで少し最適化するかって感じで書いてたりしますね
そんな事しないで共通化出来るように抽象化したいですが・・・
>>818
staticでそれやってましたけど、なんか違うなぁって感じでファイル読み込みや書き込みはそのままで、ソートやループ処理での計算などはクラス毎に埋め込んでますね・・・
それとも自分が考えてる様なコモンクラスと別物ですか? >>812
> 後から修正しようと思っても一から作り直した方が早そうなプログラムを量産してます
これを止めて無理にでも流用するようにすれば、何が問題なのか体感できる。
それを次に生かせば、流用しやすい構成で組めるようになり、生産性が上がる。 オブジェクト指向でいう再利用性って、新しいものを作るときに
既存のソースファイルやDLLをコピペして使うというのとはちょっと意味合いが違うんだけどね
端的に言えば、同じ役割のクラスは同じクラスであるべき、ってことだ
あまり実感ないだろうけど、大規模な開発になってくると必ずそれが崩れてくるんだよ C#でPDFファイルのテキストやそのテキストに張ってあるハイバーリンクのURLを
取り出したいんだが、どんな方法で可能でしょうか? >>821
東京-大阪間の飛行機と新幹線は同じクラスであるべきなんですか? >>824
普通に開くってどうやって開くの?
サンプルコード教えて。 >>825
普通にバイナリファイルとして開く
コードも仕様もそこらにあるからぐぐれ
もともと印刷用だから癖はあるが簡単に読めるぞ >>822
1. そのままgrep (e.g. grep -a “http://www” pdf-file)
2. pdfgrep
3. pdftotext/pdftohtmlしてgrep
C#関係ないけど用を足すには十分
ハイパーリンクのurlとlink textを紐付けて抽出したいならpdftohtml C#宣伝してる奴がうざいんですが、どうしたらいんでしょうか? >>830
F#をマスターしてF#を宣伝する
所詮マウンティング合戦だから
新しいマウンティングで対抗しよう >>830
WindowsならC#を推奨するのは間違っていないが? >>834
おまえみたいに読めない奴がうざいって意味であって、C#自体に文句を言ってるわけじゃないでしょ >>835
自分でC#と言ってるのに、その人のことをC#と表現するからおかしい。
そんな解釈が難しいやりとりが普通の人間はプログラミングなんてやめた方がいい。 そもそも、たかが1言語についてそこまで固執したり拒絶するのって、病的だよ。
たかが道具に、なんか人生を預けるレベルで考えてるのがキモイ。
自覚がないのが可哀想。病院で治るのかしらんけど。 そういうときだけなんか書く俺みたいなバカが多いからだな >>837
単にC#推奨してるだけで固執とか言い出す奴の方が病的じゃね?
C#使えなくて解雇でもされたのかよ w >>830
javaスレにご迷惑おかけしているようで 盛り上がってると思って、またvarかと思ったらバカだった varを採用してからというもの、C#は今はもうマイナーオワコン言語だからな。
マカー同様スレチで普及したがるのも無理はない。 C#って、普及してる割にgithubのリポジトリ数が少ないと思うんですが、やっぱりサラリーマン向け言語だから趣味でコード書いて公開する人が少ないんですか? 業界談義はプログラマー板でってローカルルールすら守らないのは何で? ここ数年はGitHubランキング的なのを8-10位あたりでふらふらしてるけど
普及している割にというか「そんなもんじゃね?」という感覚だな 事実から目を背けるなんてまるでマカーのようだ。フフフ、笑える。 別にネガキャンとかじゃなくて普通の話題として振るけども
俺の周りの(趣味で)C#やってる人間がみんなKotlinに浮気しだしたんだが
そいつら曰く、
KotlinはなんとなくC#的な雰囲気あって良い
って薦めてくる
まだ触ったことないんだけど、実際のとこどうなの? KotlinはなんとなくじゃなくてC#を名指しでリスペクト(公然と丸パクリ)してる
C#もこれまで拡張を繰り返してきて綻びや変えたいけど互換性の問題で今更変えられない部分が沢山出ているので、
それを全面的に見直して綺麗に整理してある
難点を挙げるとすれば、今のところ全体的には素直で普通な言語にまとまってはいるけど
Kotlinがパクリ元のC#やScalaによらずリリース後に独自に入れている部分については
節操がなくあまりセンスが良くなくてScala化の兆しが見えていることかな
あの調子だと結局はScalaみたいに破綻すると思うよ C#が優れてるのは、独自路線の大きな拡張を長期にわたって繰り返し続けているのに
大きな破綻なく複雑にもなりすぎず言語を維持できているという点だ
他の言語の悪いところを見つけるのは簡単だが、トップランナーとして新しいものを作っていくのは遥かに難しいんだよ
その意味ではKotlinは粗探しは非常に上手いが、後者のセンスはC#のように天才的なものは感じないね C#に対する不満てほとんどは
Windows自体か.NET Frameworkに対する文句だからな linqのクエリ構文が出た時はどうなることかと思ったが、
メソッド構文が出て良かったよ MicrosoftはいまC#よりTypeScriptに力入れてんじゃないの >>860
どっちも
c#はほぼ.NET Coreと.NET Standardに全振り VSCodeは使いやすすぎてびっくりする
TypeScriptでインテリセンスが効くのはわかるが、型書いてない普通のJSでも余裕で効く
エスパーかと思うレベル
このままいくとVSもVSCodeに吸収されそうだね >>856
Javaが出てときと同じこと言ってる。同一人物か。 VSもVSCodeに吸収されそうの意味がさっぱりわからんが
フォントレンダリングだけはちゃっちゃと同じにして
ちゅーかもういい加減Windows全域でフォントのヒンティング切っとけや
本来にもう少しマシなレンダリングできるのに完全に癌になってるじゃろ やる気があればVistaの時点でやってただろうねw
どうしてMSみたいな大企業が作ってるOSがフリーのLinuxより酷い品質なのかちょっと理解できないけど VScodeってそんな魅力的じゃないよ
どちらも使ってるけど総合力じゃ今のVSのほうが数段上
VSCodeも最初と比べるとどんどん起動が遅くなってきてる C#がVB化してユーザーも低スキル化、DQN化したのが嫌われる原因だな。 VBとC#なんか変わらんしユーザーというかこの板に変なのがいるだけ
>>869
vsってエディタは聞いたことない マルチプラットフォームなwebプログラミング向けエディタ
って触れ込みだったのに今はVSと比較される様になったのか 言語だけぽこぽこ新しいのがでてくるが、
そろそろ言語+標準クラスライブライというか、.NETやJavaみたいな新しい実行環境でてこねぇかな。
いまなら負の遺産を一掃してもっと素晴らしいやつができるはず 要は.NETをJVM化すればいいのか?
Coreがもう少し充実すればええんでね? JavaはともかくC#や.NETにガラガラポンが必要とは思わないな >>876
SATAに駆逐されたデータ転送規格だろ。そんくらい知ってるわ >>871
まあ俺はほとんどエディタ代わりに使ってたりするけど... w C#もそろそろ新言語への乗り換えの時期じゃないか
いつまでも残ってるダサい互換性を切ってnot nullとか新しい機能を導入してさ
C#は実験場にすればいい プラットフォームが先細りだから無駄な足掻き。
パソコンは名ばかりでもはやオフコン。業務でしか使われない。 C#使い始めて何年も経つけど未だに乗り換えようと思うほど使いこなせない
思った通りのもの作れるし 我流で必要に迫られて始めたものの、汚いいVB6ちっくなコードしか書けない…
キチンとセオリーに則って基礎からやり直したい
とは言え、(どうせ、この先自分以外の誰かがソース開くことなんかねぇだろな…)と思うと、まぁいっか、と逃げてしまう >>888
惰性でいくら書いても無駄
良いコードを書くには良書を読むに限る 目的がきれいなコード書くことならそれに向けて努力すべきだけど
動くものが作りたいならそんなのは遠回り 動けばいいと言う奴のプログラムはえてして正しく動かないものだ オラクルのJavaシルバーに合格した。
C#も勉強したいが少し不安。
似てる部分が多いだけに頭が混乱しそう その場で書いて動かして後のこと考えなくていいなら汚いコードでもいいけど
長期的にメンテナンスすること考えたら多少手間でも綺麗なコード書いたほうが結局近道 >>894
C#なんてすぐバージョンが上がって推奨されてない書き方です、とか
時代についていけない老害とか馬鹿にされるんだぜ。使い捨てのコードを書く言語だよ。 俺も動くものは作れるけど、汚いコードや一箇所仕様変更すると他の関数にまで影響が出て整備がほぼできないコード量産してるわ
整備不可なコードの山を見て、整備しやすいコードの書き方勉強しようとしてるけど、イディオム本読んだりデザインパターン少し調べてもイマイチ理解が深まらなかった
インターフェイスや継承はまったく使ってなかったけど、最近取り入れようとサンプルコード書いてます リファクタリング(マーティンファウラー)
エリック・エヴァンスのドメイン駆動設計
C#の本じゃないけどな >>896
そんなことないよw
基本メソッドの中なんてブラックボックスで構わんが、
メソッドの切り分け方とか全体の設計方法に影響を与えるような変更なんか
そうしょっちゅうあるわけじゃないから。
2.0以降考えてもジェネリkック、ラムダ式、非同期メソッド、
あと強いて言えばオプション変数、これぐらいしかないでしょ ジェネリック
ラムダ
var
System.Linq
匿名型
オーバーロード解決の強化
非同期
2.0使うとこの辺りが欲しくなる 最近はC++でさえ、がんがん新しい機能取り入れてるからな
無理やり感は否めないけど まぁ実際すぐ動くもの欲しくなったら仕様変更考えない作りにする感じはある
余裕ある時じゃないと設計とか考えないから全然身に付かないけど
大手は分からないけど中小で入ったところは上層はコード共通化したがってたけど、PGはライブラリ各個で作って新機能追加の度に客先別コーティングしてたし、整備性を加えるのはそこそこ手間が掛かるのかなって印象 標準ライブラリとオープンソースをラップしてプロジェクト用のライブラリを作る
作業効率最適化とリスクを考えるとどうしてもこのラッピング作業が必要になる
社内ライブラリに変わったとしてもこのラッピング作業は必要だからプロジェクトの工数は減らせない
それどころかバグの多さやドキュメントの少なさを考えると社内ライブラリは害悪にすらなりうる >>906
TryParseが最初からout使う前提
refは呼び出し先でデータ加工して返すときに無いと面倒
あとどっちもwinapiとかアンマネージのライブラリのときによく使う印象 あと、2つ以上値を返すときは、今までrefかout使うのが便利だったが
タプルさん新型で、その需要は大分減ったかもしれんね 俺は綺麗に書こうと努めてるが、他人のすごいスパゲッティコードを見たとき、
ある意味これはこれですごいなと思う。
俺なら発狂しそうだし、こんな長いコードよくメンテできるなと
これはこれですごいなとは思う。 >>909
同意
多分IQはあいつらの方が高いんだろうなって思う
彼らは複雑なものを複雑なまま扱えるからシンプルに置き換えて考えようって気にならないのかもしれない メソッドの戻り値によく処理成否のエラーコードと処理結果のオブジェクトや例外情報をプロパティにした自作クラス使っているんだけど、C#7以降はValueTuple使ったほうが楽なのかね >>907
>>908
ありがとう
>>910
今までは困ってなかったんだけど、あまり使い方を知らなかったせいだとおもう >>909
そういう人って、書いてから何年もごぶさたなコードだって苦もなく修正できるのかな?
だとすれば無条件に感心するけど
自分も作ってすぐのほかほかスパゲティなら勝手わかってるけど、ごぶさたで冷めた
スパゲティはさすがに細部がどうだったか覚えてなくて、麺をほぐすのに苦労するw >>915
文系の記憶力を甘く見ない方がいい
あいつら暗記だけで受験や大学卒業まで乗り切ってきたんだぜ
数年前のスパゲティでもここどうなってんのって聞けばちゃんと答えを返してくる >>917
暗記で何とかなるプログラムしかやらないんだな staticタスクをwhileでずっと回してデータリストのデータを監視しててエラーがあったら注意喚起のフォームを開いたりフォームのラベルを変更したりしたいんだけど
staticだからタスクからインヴォーク使えないし、メインフォームに作ったフォーム開いたりするメソッドをデリゲートしようとしても静的フィールド〜でできなくて詰まった・・・
設計見直したほうがいいレベル? >>920
意味不明だから言いたいこと整理して
1ステートメントは短く簡潔に
複数行に分けてもいい
「〜である。」「〜だと思う。」「〜したい。」「〜してくれ。」をハッキリして 静的イベント定義してタスクはそれを発生させる
受け取り側各位はイベントを受けて適当にハンドルする
でいいんじゃね □メインフォーム
データリストを保持してる
一定間隔でデータリストをデータベースから取ってきて更新する
□バックグラウンドタスク
メインフォームのコンストラクタで起動する
メインフォームを閉じるまでwhileで動き続ける
メインフォームのデータリストに異常値を見つけたら注意喚起フォームを開く
□注意喚起フォーム
データが異常値だから直せ〜のメッセージが表示してある
オーナーはメインフォーム
バックグラウンドタスクのメソッド上で注意喚起フォームを普通に開こうとしたらクロススレッド〜で開けない
タスク上にインヴォークを記述するのはタスクがスタティックだから使えない
フォームを開く処理をメインフォームに書いてタスクにデリゲート処理を記述するのもタスクがスタティックだから静的なフィールド〜でできない
メインフォームはスタティックじゃないけど作りの問題でタスク側でnewするわけにはいかない
どうやってタスクからイベントを投げてメインフォームでハンドルすればいいか教えてください
>>922
これで理解できる? >>924
それはわかってるつもりになってるだけだよ >>925
後半が意味不明
タスクがスタティックってどういうこと
タスクはオブジェクトだろ static修飾子知らないってマジモンの素人やん
そら説明しても理解できませんわ
>>923
ありがとう
ちょっと調べてみる! バックグラウンドタスクをシングルトンパターンにして、
メインフォームから起動すればいいんちゃうか >>925
>バックグラウンドタスクのメソッド上で注意喚起フォームを普通に開こうとしたらクロススレッド〜で開けない
UIスレッドからタスクを実行してるならawaitでUI処理できるよね?
タスク一回終わらしてUI処理してからまたタスク起動する形にすれば簡単だと思う
それかイベントにするか
>メインフォームのコンストラクタで起動する
これって普通?コンストラクタで起動するのはちょっと気持ち悪い Formが抱えてるデータを走査してるんだから
Formインスタンスは持ってるんだろ
ならInvokeするだけじゃねえかアホかこいつ インヴォーク(FormインスタンスのInvokeメソッドのことでいいんだよな?)を記述できないスタティックなタスク
という記述から一般的な意味でのstaticメソッドではないスタティックなタスクと名付けられたもの固有の事情があることは明らか
なぜなら非UIスレッドで実行中のstaticメソッドからFormインスタンスのInvokeメソッドを呼び出せないということはないからだ
そもそもInvokeは非UIスレッドからUIスレッドに処理を移譲するための機構だ
まずはそこ(スタティックなタスクと呼んでいる何かについて)を説明しろ 綺麗なコードって何なんだろうと思う
俺のかいたコードじゃないことは確か
クラス設計もきちんと学んだことがなく
いつの間にか親子関係がおかしくなってそれぞれをコンポジションしたり
よくよく見たらstaticでいいよなって思うものが生えてくる
状態なのか具象なのかが混とんとしてくる
参考にしようと小さなソフトのgithubみたら100行に満たない小さなクラスが100も200もあったりする
どうやってこれの役割覚えて管理してるのかと感心する >>934
製作者がクラス図書いてなきゃ
そこで終了な案件
ソースからクラス図を生成するツールがうまく動いてくれればラッキー
動かなかったら地道に書いて見るしかない >>930
コンストラクタで起動するのが気持ちわるいのは超同意
でもコンストラクタで立ち上げて常駐する形じゃないとダメー!!!らしいのでしゃーなしでやってる
タスクの処理をUIスレッドでawaitして返り値で処理するのを繰り返す形が正解なのは理解してるんだけど
>>932
ぶっちゃけボタンかタイマーで起動してawait繰り返せば済むしコードも読みやすいし実装も楽だし拡張性も上がるんだけど
「おじいちゃんはバックグラウンドという言葉が大好き」なのでしょうがない >>934
小さいクラスはたくさんあっても困らない
見れば何やってるかすぐにわかるから
それに小さいクラスは1つの役割に集中していることが多い(それが良い設計)
なのでクラス名を見れば何をやってるクラスなのか大体わかる
何千行もある巨大なクラスは見てもよくわからない
大抵の場合、様々な役割が1つのクラスに詰め込まれているので、名前も曖昧になる
こういうクラスは1つでもあるとプロジェクトが大混乱する >>937
俺はわからんかった
細切れソースは俺は読めない
資料書いてくれ >>936
そもそも繰り返すのは正解じゃない
入力系イベントで同期的に検証すればいいだけの話
今回の場合は入力ではなくデータ取得なので取得したあとにデータを検証ればいい
検証なんてほとんど時間がかからないんだから非同期にする必要はない
データに変化がないのに何度も繰り返しデータが正しいか検証したってしょうがない >>938
そうか
長いクラスを読むのはもっと大変だろうね 俺が見たのは何とかジェネレーターというの沢山あるものだった
AジェネレーターがBジェネレーターをつくりそのクラスからCジェネレーターが出来て…と
とてもとても理解不能だった
なぜなんとかジェネレーターが必要なのかどうかがわからない コンパクトなクラスが読めないのは能力云々より
設計か命名の問題だと思う >>940
そういう問題じゃなくて意味があるまとまりにしてくれないと困る
んでおそらく形成されているであろうツリー構造がソースから把握できない >>941
単ー複の複が増減するんだろうねw
クラス図だと「ー●」確かこんな関係? コンストラクタ+メソッド1個みたいのもたくさんあった
単機能を実装したらこういうことになるんだろうとは思うけど
クラスが現実世界のものを表してるならこんな感じにはならない >>943
クラスは意味のあるまとまりだよ
クラスのグルーピングは名前空間でやってるでしょ
名前空間使ってないなら命名規約でわかるようになってるんじゃないかな
どっちも無いならちょっと不親切だね
ちなみにどのリポジトリ?Githubだったよね? >>945
作るの勝手だけど
そういう奴に限って設計書のクラスの
記述漏れてんだよなぁ
プチクラス作れば作るほど
設計書書くの大変なのに >>946
githubなんてアクセスしたら警告表示が出ちまうよ >>941
それはジェネレーターではなくファクトリーでは?
DIフレームワークを使わない硬派なプロジェクトだと大量のファクトリーが作られる 無駄にこだわりが多かったりプライド高いやつのは汚いソースになるな >>906
使わない
過去の遺物
ヒープ汚したく無い時のstruct用はあるが例外やね >>952
過去の遺物ってことは無いな
C#7で参照戻り値と参照ローカル変数が追加されたくらいだし C#はコードを使い捨てにする言語だからな。
殴り書きの汚いソースでも動くように最強のIDEがサポートしてくれる。 それには同意できない
殴り書きでいいならpythonつかえと おまえに命令される筋合いはない。おまえこそCOBOLでも使ってろよ。 業務系でC#使う上で最強のプロジェクト管理・ソース管理はどれですかね? 個人プレーならzipでソルーション丸ごと固めるのが結局最強 C++保守用に未だVSS使ってるわ。新規で作ることないから移行する気がない。
個人ではC#のコードは使い捨てだから変更履歴なんかいらないよな。バックアップだけで十分。 バックアップ目的だけでもgitのほうが楽だわ
何も考えずプッシュするだけ VCSに対してCVSとかSVNとかのイメージを引きずってるなら、
Gitは食わず嫌いしないで一度試してみるべきだな
本当に手軽に使え、全く負担にならない >>967
gitって非公開で使うにはお金かかるんですか? gitは今はVSにもデフォルトで入ってるんじゃないか?ネットワークないローカル環境でも使える
githubはしらね githubは非公開はお金がかかる
そういうサービス使わないで自分でgit使って自前のgitリポジトリ利用はタダ
好きなように運用したらいい gitはローカルで使いながら必要に応じてリモートと同期取るもんだけど、
無料でプライベートリポジトリが持てるホスティングサービスとしてはbitbucketが有名
github的な機能が不要で本当にgitリポジトリのホスティングだけでいいならAWS CodeCommitとかも無料で使える 個人でVSTS使おうと思うけど無料なん?
プライベートリポジトリ。 >>975
世の中はGitで完全に統一されてるよ
どんなホスティングサービスだろうがツールだろうが扱うのはGitリポジトリ
Gitでバージョン管理されているディレクトリをどこに置くか、GUIクライアントに何を使うか、の違いに過ぎない
移行も空のリポジトリ作ってプッシュするだけだ まんまとこの糞ボケに騙されたわ。
gitは糞複雑すぎる。 >>978
だったら全世界がお前を騙してることになるぞ
今時Gitなんか開発者にとってはHTTPと同レベルの常識
Gitできない時点でまともにプログラム書けるのか疑われるレベルだぞ うーん、やっぱりgitは日本語入れると死ぬなぁ
俺だけ? >>982
git、日本語のフォルダとかファイルとかあると駄目だわ >>979-982
もはやスレチじゃ。gitスレに帰れ、アホども。 >>984
そうだね、Gitも使えないんじゃc#スレにいてもしょうがないね VSに統合されてるし
変わったことしようとしなければ難しくないと思うけどな なんでGit使うの?
MSの無料のなんちゃらファウンデーションの方がよくない? >>988
バージョン管理とホスティングを混同してるだろお前 >>986
糞古いの使ってないか?たしか1.6ぐらいまでは日本語不具合あったと思う。詳しくはこっちできけ
Git 16©2ch.net
http://mevius.2ch.net/test/read.cgi/tech/1502726047/ >>990
VSTS(TFS)を使う場合でも、バージョン管理は基本的にGitやで >>954
それが例外の特殊必要例やね
積極的に使うものではなくてある特定の人向けのもの gitlabは確か無料だぞ
OSSだから自分で鯖立ても出来たはず >>991
向こうで何があったか知らないがgitスレはIP表示にしてるからこっちで暴れてるのではないか。
git関連は巣に戻れ。 このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 177日 8時間 9分 49秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。