X



C#, C♯, C#相談室 Part94 [無断転載禁止]©2ch.net
レス数が1000を超えています。これ以上書き込みはできません。
0002デフォルトの名無しさん
垢版 |
2017/04/22(土) 15:37:34.80ID:S+KK7a41
■過去スレ
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/
0008デフォルトの名無しさん
垢版 |
2017/04/22(土) 16:52:17.17ID:Pa0BQobe
基地だらけだな
あっちは間違えてなのかわざとなのかワッチョイに変わってるから無しスレ立てただけだろ
0009デフォルトの名無しさん
垢版 |
2017/04/22(土) 16:56:31.71ID:hC7lZfMR
こっちだな
0011デフォルトの名無しさん
垢版 |
2017/04/22(土) 17:09:23.67ID:c4VI05+R
というか板全体をワッチョイにして欲しいね
0016デフォルトの名無しさん
垢版 |
2017/04/23(日) 22:40:39.66ID:xOr+Fgi0
戻り値のあるTask関数の作り方を教えてください
public Task<bool> Hoge() {
return true;
}
とするとエラーメッセージがでます
0019デフォルトの名無しさん
垢版 |
2017/04/24(月) 01:58:20.59ID:zwb7nwH/
フォームの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

保証されてないって事はないよね?昔から変わったとも思えないのだけど。
(こちらの実装ミスであることを確認したい)
0020デフォルトの名無しさん
垢版 |
2017/04/24(月) 02:06:55.58ID:7scL/w5T
>>19
回答じゃなくて悪いけどそもそもそんな順番に依存するようなコードそのものが
問題だと思うね。

っていうか、そもそもRadioButtonはAutoCheck = falseで使うのが基本だと思ってる。
サンプルコード的な短いコード以外ではAutoCheckを有効にして使ったこと俺はないや
0021デフォルトの名無しさん
垢版 |
2017/04/24(月) 02:07:44.75ID:zwb7nwH/
ちなみにここには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
0022デフォルトの名無しさん
垢版 |
2017/04/24(月) 02:17:02.23ID:zwb7nwH/
>>20
いや普通はAutoCheckはtrueで使うだろ。規定値もそうだし。
順に依存しないコードにも出来るが、
これまで順が保証されていたつもりで書いているから
全RadioButtonのハンドラを確認しないといけないんだな。
(というかこのコメントだと逆順のところが大量にありそうな気がして怖い)

とりあえず確認したいのは、「順が保証されているか」「昔からか」だね。
ダメならダメで書き直すけど。
一般的に(他環境でも)RadioButtonのイベント順は保証されている(と俺は思っている)ので、
特に悪い使い方でもないとは思うのだが。
0023デフォルトの名無しさん
垢版 |
2017/04/24(月) 02:27:32.36ID:7scL/w5T
>>22
まあ議論するつもりも俺のやり方をごり押しするつもりもないけど、
本来ビューはあくまでモデルの状態を表示する表示器でしかないはずで、
AutoCheckのようにビューがビュー自身でどの項目がcheckされるかを決めるような機能は
ちょっと問題だと思うよ。
0024デフォルトの名無しさん
垢版 |
2017/04/24(月) 03:02:34.76ID:zwb7nwH/
>>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だよね?
書いてないって事は保証無しなのかな?
まあ知ってる人居たらお願いします。
0025デフォルトの名無しさん
垢版 |
2017/04/24(月) 12:45:21.88ID:WhX9zIin
>>18
ありがとうございました
0026デフォルトの名無しさん
垢版 |
2017/04/24(月) 13:30:02.16ID:JE5n6vCM
C#2008とIpython2.7を使用しているが、使い分けが不自然
GUI=C#,CUI=Ipython
としておりすが、恩恵を受けている感じがしません
どの様に使えば、もっとも、良いでしょうか?
0027デフォルトの名無しさん
垢版 |
2017/04/24(月) 17:26:40.36ID:VzMv01/A
>>19
保障ってどういう意味?
仕様書に明記されていない事は実装依存で保障されてないわけだが
いまだかつてそのような仕様が明記された資料はみたことないけど

そもそもイベントって
発行した順にイベントハンドラが実行される保障や
複数のイベントハンドラを一つのイベントに登録したときにイベントハンドラの
登録順に実行される保障なんてあったか?
0028デフォルトの名無しさん
垢版 |
2017/04/24(月) 23:01:32.26ID:aUzRCcRy
>こちらの環境(.NET3.5と.NET2.0の両方)で上記順であることは確認したのだけど

これはあかん
ダメなパターンや
論理的に物事を考えられない思考やで
0029デフォルトの名無しさん
垢版 |
2017/04/25(火) 00:46:29.16ID:WJVYNUba
>>27
デバッグビルドとリリースビルドでイベントの前後関係が違ってバグるとかたまにあるな。
0031デフォルトの名無しさん
垢版 |
2017/04/25(火) 07:58:25.82ID:5weZPMgK
>>27-30
このスレも急にゆとり汚染で劣化しててびっくりだわ。
お前らってそういうところあるよね。
事実かどうかではなく、そう思うかどうかが全てだという。

>>27
そのレスには俺ですら知っているほどの明確な間違いを含んでいるけど、
詳細は言わないことにするよ。
俺はゆとりは死んで欲しいと思っているから。
0032デフォルトの名無しさん
垢版 |
2017/04/25(火) 08:10:58.01ID:DkSnRcKc
>>31
決まっていない事実は全て「偶然」
物事を演繹的に考えられない奴はネットワーク機器でも弄ってたほうが幸せになれるよ
煽りじゃなく向き不向きの問題
0034デフォルトの名無しさん
垢版 |
2017/04/25(火) 08:47:06.56ID:urtDfpDE
仮に現環境で動いても仕様として明記されてないちょっとしたバージョンアップで狂うかもしれん内容に依存した実装なんてしたくない
0036デフォルトの名無しさん
垢版 |
2017/04/25(火) 10:28:03.55ID:sJGMscvy
外野だけど、
RadioButton コントロールは、
同じグループ内の他のオプションボタンと同時にオンにすることはできません。
その上で、RadioButton.CheckedChanged イベントは、
Checked プロパティの値が変更された場合に発生します。

ただ、イベントハンドラ内でイベントハンドラが呼ばれる事を否定していないので、
例えば、RadioButton.CheckedChanged内で意図的にChecked プロパティをtrueに
変更したりすると、
RadioButton.CheckedChangedの処理中に別のRadioButton.CheckedChangedが呼び
出されます。

だから、false→trueのように見えるけど、
この点は注意しろよって事なんでしょう

とエスパ−
0037デフォルトの名無しさん
垢版 |
2017/04/25(火) 10:32:24.88ID:XjlU4ojX
JSON文字列のDeserializeで時々エラーが出ます。
原因は、JSON文字列の変換後にList<string>になる事を想定しているのですが、
たまに要素が一個だけ持つJSONが来るのでそれはListに出来ないからのようです。
場合を分けるしかないですか?
0038デフォルトの名無しさん
垢版 |
2017/04/25(火) 11:31:33.17ID:DZfkzF9H
文字列想定してるのに文字が来た。
みたいな事?
じゃあ、文字が来たら一文字の文字列にすればおk。
場合分けしかないですか?って、それで解決するのに何悩んでるの。
0040デフォルトの名無しさん
垢版 |
2017/04/25(火) 13:03:26.63ID:XjlU4ojX
>>39
デシリアライザーが気を利かせて要素一個のList<string>に変換してくれれば良いのですが。誰か作ってくれませんか?
0042デフォルトの名無しさん
垢版 |
2017/04/25(火) 13:18:46.90ID:DZfkzF9H
JSON使った事ないから知らんが、要素一個(文字列ではなく文字)だったら.toString()ってすりゃ済む話かと思ったんだが、違うのん?
0043デフォルトの名無しさん
垢版 |
2017/04/25(火) 14:38:56.72ID:5peHc28u
>要素が一個だけ持つJSONが来るのでそれはListに出来ないからのようです。

ここが曖昧、そして重要
そもそもデシリアライザは何を使ってるん?
0044デフォルトの名無しさん
垢版 |
2017/04/25(火) 16:14:25.09ID:Z3ZAA/Q1
window.client.mouse.pointにアクセスしたい変数があり、その型が
struct Point {int x; int y;} // publicは省略
のとき
c++であれば
Point &p = window.client.mouse.point;
で参照を持ってきてpに代入をするとwindow.client.mouse.pointの値も変わるように出来ますが、c#で同じようなことをするにはどうしたら良いのでしょうか?
0046デフォルトの名無しさん
垢版 |
2017/04/25(火) 17:06:47.28ID:gy+i7xO9
>>44
変数はunsafe指定でポインタとしてしか宣言出来ない。
関数の引数ならRef付ければ参照得られる。
0047デフォルトの名無しさん
垢版 |
2017/04/25(火) 17:07:13.97ID:5peHc28u
できません
C#は、関数型言語になりたがっているので、
今後もエイリアスに相当する機能は実装されないでしょう
004844
垢版 |
2017/04/25(火) 20:40:44.01ID:3BEHaskK
ありがとうございます
unsafeでやることにします
0052デフォルトの名無しさん
垢版 |
2017/04/26(水) 01:46:46.08ID:gXPydJZJ
>>37
そりゃJSON送ってくる奴がバグってるだろ
その要素は文字配列だって定義してるなら、
JSON配列の中身が
1個なら hoge : ["fuga"]
2個なら hoge : ["fuga","fuga"]
という形になるはず。

1個の時 hoge : "fuga"
で来るならそれは不具合ってやつだ
0054デフォルトの名無しさん
垢版 |
2017/04/26(水) 09:20:07.34ID:OuCtoXhL
イントラネット上の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のアプリケーションに実装するのは、どういった感じになるでしょうか。
今までにこういったことをしたことがなく色々調べてはみましたが
この場合はサーバー?クライアント?となったりでいまいちピンとこず理解がなかなか進みません。。
何か解かりやすいアドバイスや今時のやりかたを教えて頂けないでしょうか
ちょっと何言ってるかわからなかったらすみません
0057デフォルトの名無しさん
垢版 |
2017/04/26(水) 10:47:57.13ID:LAzkzAvR
>>56
サーバーを1人確定すれば並列になりそうにない仕様なので
キューはいらんような気がする
0058デフォルトの名無しさん
垢版 |
2017/04/26(水) 12:42:38.93ID:vx1v4EP3
>>52
そんなことはわかっててそうは言っても送信側には手を入れられないとかの話だろ
エスパーしろとまでは言わんけどちょっとは察しろよ
0059デフォルトの名無しさん
垢版 |
2017/04/26(水) 12:49:09.95ID:vx1v4EP3
>>54
そのままプログラム化するだけだと思うが
問題は最初のきっかけはどうするかとか途中でエラーになった時にどう回復するかだと思う
そういう意味で >>55 のようにサーバー決めてそいつが管理するように作った方がトラブルになりにくいしトラブっても調査や復旧が簡単

>>56 はメッセージキューって言いたいだけだろ
0060デフォルトの名無しさん
垢版 |
2017/04/26(水) 19:45:07.41ID:RLi7Pcio
>>54です
レスくださった方々ありがとうございます
頂いたアドバイスでもう一度考えてみたいと思います
ちなみにイントラネット上であれば開いたソケットはアプリを閉じない限りクローズする必要はないでしょうか
あとは仕様的に同期式でいけそうな場合でもポーリングなどはせずに非同期のイベント通知などで設計するのが普通でしょうか
0062デフォルトの名無しさん
垢版 |
2017/04/26(水) 21:36:27.67ID:mlRIWo89
>>60
> ちなみにイントラネット上であれば開いたソケットはアプリを閉じない限りクローズする必要はないでしょうか
当然だけどリッスンポートは待ち受けで開いたまま
コネクトする側は必要なくなったら閉じるのが普通
0063デフォルトの名無しさん
垢版 |
2017/04/27(木) 00:21:44.79ID:GJNrvvrA
オブザーバー、発行・購読
中央管制塔ありのメディエイター
メッセージキュー
0064デフォルトの名無しさん
垢版 |
2017/04/27(木) 07:42:43.29ID:fVk5qOLv
>>61>>62
ありがとうございます
もう少しサンプルを調べて勉強してみます
0065デフォルトの名無しさん
垢版 |
2017/05/06(土) 00:24:40.77ID:LiC8gZ+P
こっちか
007067
垢版 |
2017/05/17(水) 23:19:09.78ID:SKu/yZ4u
なんで叩かれてるのか知らないけど、Mavenリポジトリと言えば満足?
0073デフォルトの名無しさん
垢版 |
2017/05/18(木) 06:54:17.24ID:Zif2rhHO
>>71
Web系はやっつけだろうが早くリリースするのが至上命題だからテストを自動化しないとカオスになる
0074デフォルトの名無しさん
垢版 |
2017/05/19(金) 23:40:22.50ID:K2XF16mV
クラスのメンバーの型を動的に変更するなどは可能ですか?
例えばMyClassのメンバーに
public string name { get; set; }
が有るとして、それを一時的に
public List<string> name { get; set; }
に変えるなど可能ですか?
0076デフォルトの名無しさん
垢版 |
2017/05/20(土) 00:28:41.92ID:lbI4YU5N
public string|List<string> name { get; set; }
じゃ駄目?
0086デフォルトの名無しさん
垢版 |
2017/05/20(土) 11:08:01.58ID:NUOkmiRN
いつどこからアクセスするかわからないプロパティの型を可変にする意味は何?

実際バグ出したいだけだろ?
0087デフォルトの名無しさん
垢版 |
2017/05/20(土) 12:26:52.90ID:pKHKYg56
静的に型付けされてるメンバーを動的に変更することは出来ないに決まってるねw
逆に出来たら困る
なんか静的に型付けされているってことの意味が分からない人が時々いるよね

型Bと型Cの両方を受け入れるプロパティが欲しいならプロパティーの型を共通のベースクラスAにして、
プロパティの値はプログラマの責任で適切にキャストして使うしかない

あとはBとCの間で相互に暗黙変換できるようにするとか
0088デフォルトの名無しさん
垢版 |
2017/05/20(土) 12:28:59.33ID:Lw3rlvDI
初心者は制約があるより自由にかけるほうが良いと思う時期があるものさ
問題があった時にどこからでもさわれたほうが対処しやすいからフィールドは全部publicにしたほうがいいとかね
0090デフォルトの名無しさん
垢版 |
2017/05/20(土) 22:16:05.31ID:tNlWtPh8
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 でも値を代入できるということでいいんでしょうか?
0092デフォルトの名無しさん
垢版 |
2017/05/20(土) 22:49:49.46ID:tNlWtPh8
>>91
ありがとうございます。オーバーライドとbaseのことを調べてコード書いてたら
これでひっかかってたので助かりました。
0093デフォルトの名無しさん
垢版 |
2017/05/20(土) 23:36:54.63ID:PmwbqNDX
隠蔽した本人から隠蔽後のメンバーじゃなくて
隠蔽したはずのベースクラスのメンバーが見えるなら何のための隠蔽よww

まあでも、どうせ隠蔽なんてまず使わないw
俺が使ったのはたぶんWindows Formのコントロールをカスタマイズするときに
virtualになってないメンバーを苦し紛れになんちゃってオーバーライドする時ぐらいだ
0094デフォルトの名無しさん
垢版 |
2017/05/20(土) 23:56:17.91ID:/WJez+wG
隠蔽は後から他の奴が基底クラスに同一シグネチャのメンバを追加しやがったときに
派生クラスが壊れないようにするための仕様だよ
積極的に使うものではない
当時のMSは極度の互換性パラノイアに陥っていたため、C#はバージョニングに関しては異常に神経質設計されている
0095デフォルトの名無しさん
垢版 |
2017/05/23(火) 12:03:34.57ID:+V9bC4xn
ヌル許容のdatetimeだとyear関数とか使えないんですか?
入力必須じゃない項目なので困っています。
0098デフォルトの名無しさん
垢版 |
2017/05/23(火) 12:21:51.82ID:3W0XlzKr
大分前からヌルが基本的に無いintとかにヌル入れられるヌル許容型ってのがあるが。。。

int? x = 123;
int? y = null;
0101デフォルトの名無しさん
垢版 |
2017/05/23(火) 17:45:15.21ID:PJIONmxy
stringは参照型だから元からヌル許容してたのに、なぜヌル許容型をわざわざ?
浦島太郎で申し訳ないが説明頼む。
0104デフォルトの名無しさん
垢版 |
2017/05/23(火) 18:49:06.30ID:UZ2qE6DF
>>101
よく知らんけど、DateTimeとかDB側でNULL許容として扱われている値型を同等に扱うためじゃないのかね
じゃないとEFとか破綻しそう
0105デフォルトの名無しさん
垢版 |
2017/05/23(火) 18:52:36.71ID:yWN+qtCg
>>104
.Net1.0から実装されていて欲しかったけどな
つかDataSetっていうウンコがあったからNULL許容型の生まれが遅くなった可能性があるな
0106デフォルトの名無しさん
垢版 |
2017/05/23(火) 18:53:40.67ID:LMlAaHk/
>>104
そうじゃなくて逆にnon-nullableが欲しいというのが趣旨だよ
で102で紹介されてるstring?の案は「いっそ参照型もデフォルトでnull非許容にしようぜ」という超過激なトンデモ案
0108デフォルトの名無しさん
垢版 |
2017/05/23(火) 19:06:32.73ID:X2XHKUCb
TypeScriptがそういう風に仕様変更されたけどさすがにC#には不可能でしょ
TypeScriptとは違って過去の資産があるし書捨てプロジェクトばかりじゃないんだから
やるならstring!しかないけど!だらけでソースが見苦しくなるのが難点だな
0110デフォルトの名無しさん
垢版 |
2017/05/23(火) 19:13:26.09ID:HT5KxiNP
いつまでもVBを引きずって瞑想していたMicrosoftとは思えないな
ヘジたんは偉大だ
0112デフォルトの名無しさん
垢版 |
2017/05/23(火) 19:23:28.74ID:SHq3YOvL
またnullの話w

null非許容が欲しいなんて問題の原因を取り違えているだけであって、
そんなもの導入してもnull例外が初期化忘れに置き換わるだけだっていう
簡単な事実が分からんアホが多すぎで呆れるよ
0119デフォルトの名無しさん
垢版 |
2017/05/23(火) 21:48:39.96ID:VdgHftUV
varの話してもいいですか?
0121デフォルトの名無しさん
垢版 |
2017/05/24(水) 02:20:31.18ID:IRME+Rk/
TypeScriptとかSwiftとかKotlinの先例があるのにnull非許容の意味が理解できない>>112 みたいのが社会の進歩を妨げてるんだよなぁ
nullの代わりに空文字を入れることになるみたいな意味不明なことを言ってるやつもいたし、英語の議論が読めないにしても他の言語の例ぐらいは確認してからしゃべってほしい
0122デフォルトの名無しさん
垢版 |
2017/05/24(水) 02:27:23.98ID:k5coCCFX
またしょうもないのが現れたな
意味も意図も理解できるが、意図した通りの機能は発揮しないと言ってるんだけど

だからその「先例」とやらで現に意図した通り間違って自分の足を撃たない機能を発揮してるのかと。
してやしねえよw
0123デフォルトの名無しさん
垢版 |
2017/05/24(水) 02:32:41.30ID:k5coCCFX
要するに、nullを許容することに起因する問題が存在するので
nullを許容しなければそれは解決するのだ、なんていうのはただの愚か者の錯覚であって、
そんなものは問題Aをより発見が困難な問題Bに置き換えることにしかならない
0126デフォルトの名無しさん
垢版 |
2017/05/24(水) 05:52:55.01ID:SWY45HoB
ポインタじゃなくていいところでは(nullを許容しない)参照をつかう
C++では当たり前にやっていた事でその威力は皆が知っていた
C++から派生したC#やJavaがこれを捨て去った意味が逆にわからない
C#はあるべき姿に戻ろうとしているだけ
0128デフォルトの名無しさん
垢版 |
2017/05/24(水) 08:19:55.11ID:gnZYpDQN
Int f(int x) ならxで例えば小数の事を考えなくて済む。
同じく f(hogeClass y) でyがnullの可能性を
考えなくて済むならそのほうが良いだろう。

そう思わないならプログラマーは
早々にやめたほうが良いと思うの。
nullチェック忘れてヌルポだすコードを
量産するバカが減るのは助かる。
0129デフォルトの名無しさん
垢版 |
2017/05/24(水) 08:56:56.79ID:2RBb7Y8v
なんで馬鹿は馬鹿を説得しようとするんだろう?
馬鹿は馬鹿なんだから自分が馬鹿だなんて認める分けねえだろ
だからお前も馬鹿だと言うんだ


馬鹿は死ね
0130デフォルトの名無しさん
垢版 |
2017/05/24(水) 09:20:10.02ID:CWb9U0nP
>>128
少数のことを考えなくて済むように、nullがあった方が助かる場面もあるだろ
そう思ってないようなおまえは早々にやめたほうが良いと思うよ
0133デフォルトの名無しさん
垢版 |
2017/05/24(水) 10:36:49.92ID:0w0qPph2
どうしてnull非許容型を導入するって話をnullの根絶なんて話に持っていこうとするんだろうね?
0134デフォルトの名無しさん
垢版 |
2017/05/24(水) 10:46:19.73ID:xvW9RZ2K
>>128
間違ってるよその発想
その発想って>>1254の記事にもあるけど、メソッドが引数にnullを受け入れる
確信もないのに意図してnullを渡すプログラマなんかいません。

nullを受け入れないメソッドにnullを渡してしまう事態が起こるのは、
バグによってプログラマの意図に反してそうなるからだよ。当たり前でしょ。

だからnull非許容型を導入したところで、「プログラマの意図の反して変数の能がnullであるバグ」が
「プログラマの意図に反して変数の値が不適切であるバグ」に置き換わるだけ。

そして後者は前者より発見が困難な分、悪性度はより高い。
こんな簡単なことが分からん奴ってアホだろほんっと。
0135デフォルトの名無しさん
垢版 |
2017/05/24(水) 11:09:16.07ID:PQqcAP89
>>133
一つより二つ覚える方が大変だろ
未開人だと三つ以上は沢山だぞ
そんなにプログラミングの要素を増やすな
覚えきれない
0136デフォルトの名無しさん
垢版 |
2017/05/24(水) 11:32:23.53ID:fJwJIEtw
変数がnullである は 変数が不適切である に含まれる
変数が不適切なケースのうち変数がnullであるケースを言語仕様として排除できるって話じゃないの?
確かにこのnullのケースを排除しても他に不適切なケースがある設計なら完璧な対策ではないだろうけど有用なケースも認められるなら検討の価値はあるんじゃないかな?
0137デフォルトの名無しさん
垢版 |
2017/05/24(水) 11:40:03.52ID:lmoDZ3Fc
>>134
意図してNull値を渡すつもりがないなら
Null値が入る可能性があることがコンパイル前に判明するほうが
あきらかに修正もしやすいだろ
なに言ってんだ
0141デフォルトの名無しさん
垢版 |
2017/05/24(水) 15:17:32.97ID:IRME+Rk/
>>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);
0143デフォルトの名無しさん
垢版 |
2017/05/24(水) 15:34:09.87ID:xvW9RZ2K
>>141
具体的で素晴らしい
確かにその例で示されているような「nullの考慮忘れ」を防ぐ一定の効果は
期待できることは認める。

でもそれ、よく考えると机上の空論でしょ。
普通のプログラマならある変数やコレクションが仕様上nullを持ちうるかどうかは
常に気にしながらコーディングするので、そこに例示されている「nullの考慮忘れ」は
実際にはそんなにありがちな問題ではないと思う。

ありがちなのは、その例でいえばリストに値を入れる段階で
プログラマの意図に反してnullが混入する問題だよね。
0145デフォルトの名無しさん
垢版 |
2017/05/24(水) 16:07:24.68ID:IRME+Rk/
>>143
>ありがちな問題ではない
ありがちかどうかではなく、その機能を導入するメリットとデメリットの釣り合い。
エラーが未然に防げたり、記述が簡潔で見やすくなるならメリット。
文法が複雑になったり、別のバグの原因になったり、動作が遅くなったり、実装に手間がかかるならデメリット。

現状は「新バージョンではnull許容はstring?にしろよ」から「文法は変更せずフロー解析でどうにかしようぜ」までいろんなアイデアがある

個人的には、標準ライブラリの頭nullチェックをしてArgumentNullExceptionを出すようにしているところがいらなくなってライブラリ作者にはメリットがデカそうかなとはおもってる
null入れてArgumentNullExceptionがでるテストも書かなくて良くなる
0146デフォルトの名無しさん
垢版 |
2017/05/24(水) 16:22:43.45ID:IRME+Rk/
>>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比較のコストが入ってるけど、俺の知識が浅いだけなのでもっとうまいやり方も多分あると思う
0149デフォルトの名無しさん
垢版 |
2017/05/24(水) 19:54:58.94ID:wmLMN2ht
使えとは言ってないのにな
親でも殺されたか?
ゴミムシの親なんか区別がつかないだろうが
0150デフォルトの名無しさん
垢版 |
2017/05/24(水) 23:36:34.45ID:a2/m6a7T
>>146
コンパイル後の出力にnullチェックが入ってるってことは
string! aにnullが入る可能性が出来てしまうってこと!?
そこはコンパイルエラーにしてもらおうよ

>>141
> ・nullの考慮忘れ
> ・過剰なnullチェック
> というのを防ぐのが目的
(+テスト)
は、防ぐというより無くしたい
0151デフォルトの名無しさん
垢版 |
2017/05/25(木) 01:11:21.81ID:lqQtAs3j
>>150
nullチェックはNull許容型からNull非許容型にする際の話
nullの可能性があるならタイプマッチとかで消すほうが素直だけど、kotlinとかでは例外を投げる変換を用意してるみたい

修正されてない古いライブラリとかだとnullにはならないけどnull許容型みたいのが存在せざるを得ないので、そういう機能もほしいということじゃないかな
0152デフォルトの名無しさん
垢版 |
2017/05/25(木) 03:16:43.36ID:ezJU1k3U
今のところ超過激なトンデモ案が優勢なのかな?
採用されたら仕事が捗りそうなので、とても期待しているww
0154デフォルトの名無しさん
垢版 |
2017/05/25(木) 03:38:41.10ID:K8EeLAYg
いまだに2.0とか3.0やってる化石には全く関係のない話だから
足引っ張らないで欲しいわ
0157デフォルトの名無しさん
垢版 |
2017/05/25(木) 11:41:19.09ID:OZ9w4Yf7
ロック問題で、価値ないつまらんネタ書いている奴こっち来い
適当にあしらってやるよ
0159デフォルトの名無しさん
垢版 |
2017/05/25(木) 11:50:35.84ID:OZ9w4Yf7
最近は、こっちではnull非許容ネタやってるのか・・・
これ導入されたらガベージコレクタの性能落ちたりしないかな
4G越えのでかいツリー構造とか作っていると、参照つなぎ替えだけで色々やばいことが起こるんだよな
できるかぎり、用のないフィールドに参照ぶら下げたくないと最近しつこくnull入れてたりするんだが。
あと、event関係、弱参照で全部作り直さないとヤバないかな。
Taskとかと相性悪くて簡単にメモリーリーク起こすし、 WeakEventManagerでWPFは変態回避してただでさえコード変態状態だし。
VMごと作り直さないと色々噴き出しそうだ
0162デフォルトの名無しさん
垢版 |
2017/05/25(木) 12:39:51.97ID:doyjLZp2
なんで択一の考えしか出来ないんだろうな
頭悪いのか?
頭悪いならゴミ回収みたいなルーチンワークしてろよ
0163デフォルトの名無しさん
垢版 |
2017/05/25(木) 12:40:36.41ID:OZ9w4Yf7
>>161
統一性のないコードになりそうだw
ここまで破壊的変更をするなら同じVM上で動く別言語として全く新しく設計した方が良い気がしてきている。
C#と混合してプロジェクトに登録できるようにすればシームレスにつながると思う。
今のC#には、アクロバテックな予約語追加とかも増えてきているし、いろいろ限界が来ていると思うんだ。
0164デフォルトの名無しさん
垢版 |
2017/05/25(木) 13:22:25.50ID:OZ9w4Yf7
どうせなら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と交互に書くときに {} 忘れで判りにくいバクにならなくて済む。
0166デフォルトの名無しさん
垢版 |
2017/05/25(木) 13:39:20.53ID:OZ9w4Yf7
>>165
ようキチガイ、ここは、お前が建てたスレだろ。
向こういくなや、あっちはマジ質問なんだから。
お前とは、ここで遊んでやる。
0168デフォルトの名無しさん
垢版 |
2017/05/25(木) 17:37:12.65ID:KYr+IXo2
>>163
swiftもkotlinも同じ感じの仕様だから適切に使い分けられれば良いんでないのかな
それがスキルだし
0169デフォルトの名無しさん
垢版 |
2017/05/25(木) 18:24:15.44ID:6uvmeYQm
c#がもし最初から作り直せるとしたらどんなふうにする?

俺は
yield returnじゃなくてyieldにする
ジェネリックをsystemに入れる
0174デフォルトの名無しさん
垢版 |
2017/05/25(木) 19:21:56.48ID:KYr+IXo2
immutable保証の構文は欲しい
if forは文でなくて式でありたい
副作用隔離文法も欲しい
0179デフォルトの名無しさん
垢版 |
2017/05/25(木) 20:07:38.18ID:ZdIAUNK0
何が嫌かと言えばVMだな。最初からネイティブコードコンパイラーならC++すら凌駕したかもしれん
0180デフォルトの名無しさん
垢版 |
2017/05/25(木) 20:09:09.51ID:lGDY6SHI
少なくともC#のconstとreadonlyは機能的に違うし、
どちらを無くされても困ると思うけど...
0182デフォルトの名無しさん
垢版 |
2017/05/25(木) 20:18:46.47ID:6uvmeYQm
名前空間の分割をもっと簡素にする
今はusing増えすぎでめんどい

あと一ファイルに名前空間一つに限定で
ファイル先頭で指定、{ }なしにする
namespace Hoge.Hoge :

これでwebからのコードのコピペが楽になる
0183デフォルトの名無しさん
垢版 |
2017/05/25(木) 20:24:26.30ID:vS0Oxp45
switch の最後の節の break は不要にする

ってかこれぐらいすぐやれ
毎回モヤモヤするんだよ
0185デフォルトの名無しさん
垢版 |
2017/05/25(木) 20:28:33.23ID:SU7CE5fr
readonlyは長すぎる
javaのfinalもだけど頼むから多用する奴は3文字以内にしてくれ
scalaなら定数も変数も同じ3文字だから揃って見やすいのに
0187デフォルトの名無しさん
垢版 |
2017/05/25(木) 20:33:29.10ID:OZ9w4Yf7
細かい機能系だと == オーバーロードが割と収集つかない感じなっているので
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が入り混じって混沌の世界と化している。
0188デフォルトの名無しさん
垢版 |
2017/05/25(木) 20:35:22.76ID:SU7CE5fr
>>187
トレイトがあれば自動実装出来るのにな…
0190デフォルトの名無しさん
垢版 |
2017/05/25(木) 20:42:49.06ID:OZ9w4Yf7
>>189
今のC#はまさにそこに向かっているので嫌なんだよね。
収集のつかない言語拡張、誰も知らない大量の構文と予約語で築かれた謎の言語仕様。
C++は、21世紀のCOBOLだ
0191デフォルトの名無しさん
垢版 |
2017/05/25(木) 20:44:09.62ID:6uvmeYQm
c++はほらバカには便利だろう見たいな新機能をいれてるけどそれすら使いこなしにくい
0192デフォルトの名無しさん
垢版 |
2017/05/25(木) 20:46:56.61ID:lm8UuBKM
型宣言は後置の方がいい

>>174
>immutable保証の構文

デフォルトでimmutableにして、
必要ならmutableに出来ればよくね
0196デフォルトの名無しさん
垢版 |
2017/05/25(木) 21:10:56.06ID:OZ9w4Yf7
immutableを構文を作るのであれば、new でプール中にすでに同じ内容のオブジェクトが無いか調査して
既にあるならそちらを利用する仕組みも欲しいな。
これを利用する場合比較演算子EqualsとReferenceEqualsは同じ結果になるのでEqualsもGetHashCodeも自動実装の物でよい。
オブジェクトプールは、弱参照のHashSetで実装される事になると思うが、弱参照の先が死んでいた場合、HashSetの登録項目も整理できる。
ガベージコレクトと一緒にこれを整理できればより効率的だが、これは現状ライブラリベースで作る事は出来ない、VM側のサポートが必要。
これについては、メモリ管理にリファレンスカウンタを実装しても良いと思う、基本はリファレンスカウンタでマークスイープはゴールキーパーとして機能させる感じで。
0197デフォルトの名無しさん
垢版 |
2017/05/25(木) 21:11:49.39ID:lGDY6SHI
>>187
何言ってるのかよく分からうけどカオスを増加させるだけにしか思えんな

参照型の==がデフォで参照の比較になっているのが混乱の元だと言いたいならそこは同意する。
VBと同じように参照等価検査専用の演算子を用意して==はオーバーロードしない限り
使えないようにしてくれた方が分かりやすかったと思う
0199デフォルトの名無しさん
垢版 |
2017/05/25(木) 21:18:19.71ID:OZ9w4Yf7
>>197
オーバーロードしたらEqualsとの違いが不明確になる。
使う側にはそれはとても伝わりにくい。
だから==と書けばそれはEqualsの事であるという事にした方が簡潔だと思うよ。
比較は頻発するので毎回Equalsを書くのはさすがに面倒。
0202デフォルトの名無しさん
垢版 |
2017/05/25(木) 21:27:49.57ID:SU7CE5fr
>>200
C++…うんこ
c#…B級グルメ
0204デフォルトの名無しさん
垢版 |
2017/05/25(木) 21:58:44.98ID:1nEgUyka
>>186
そんなん知らんよw
なんで具体的な提案なんかしなきゃならんのだ
2種もキーワードがあるのにc++のconstに比べて貧弱だなーって思っただけ

この部分がもっと便利になればいいねーくらいで話ししてんのに難癖つけられてもなー
0205デフォルトの名無しさん
垢版 |
2017/05/25(木) 22:05:37.39ID:OZ9w4Yf7
関数型のように値は一度割り当てたら変更不能というストリクトな仕様は
変数一つ一つに意味を考えて名前を付けるようになれるので見通しは良くなるね。
半面、ビギナーには辛いやり方だと思う。
変更できない物だけでどうやって変化していくものを表現するのか分からなくて途方にくれそうな絵が見える。
果たして吉とでるか凶とでるか?
0209デフォルトの名無しさん
垢版 |
2017/05/26(金) 00:05:23.61ID:grHVRT/B
やっぱメモリ管理は自動の方がいいですか?
0210デフォルトの名無しさん
垢版 |
2017/05/26(金) 00:15:54.83ID:R9lW8EDm
>>209
自動の方がいいと思うよ、安心感が全然違う。
ただ、マークスイープはオブジェクト総数増大につれてパフォーマンスに問題が出始めている感じがする。
ガベコレはすべてのスレッドを止めないと始められないが、オブジェクト総数増大とともに停止時間がやばくなる。
極力、マークスイープ以外の方法で回収できる感じにした方が良いかもしれないと最近は思う。
0211デフォルトの名無しさん
垢版 |
2017/05/26(金) 00:29:53.59ID:4xYFMnBo
>>196
思い込みで変なことを語る前に今のGCについて勉強した方がいいのでは
殆どのオブジェクトはマークアンドスイープ「ではない」GCによって回収されるんだぜ
0212デフォルトの名無しさん
垢版 |
2017/05/26(金) 00:33:29.03ID:R9lW8EDm
>>210
少なくともC#では、スタック周りだけでしょう。
シンプルな世代別ガベコレで実装されていると思われます。
C#ではC++のスマートポインタのようにスコープ抜けた瞬間に回収される所は見ないです。
それでは解決しきらないというのが自分の環境では起こり始めつつある。
0213デフォルトの名無しさん
垢版 |
2017/05/26(金) 00:38:57.52ID:R9lW8EDm
まぁ、C#の場合すべて強参照状態なんで参照カウンタで実装したところで
よほど意識してくれないかぎり有効に機能してくれない可能性は現状では高いですね。
特にevent回りとasync/await/Task回りに言えます。
0214デフォルトの名無しさん
垢版 |
2017/05/26(金) 00:40:01.31ID:Mhihnqx0
>>212
余計な工夫でmidlife crisis起こしてそうw
オブジェクトはすぐに使い捨てたほうがGCの負担になりにくいんだよ
0215デフォルトの名無しさん
垢版 |
2017/05/26(金) 00:43:15.17ID:R9lW8EDm
>>214
規模が小さいなら、使い捨てても使い捨てなくても、もともとパフォーマンスが問題になる事はないんですよ。
パフォーマンスが問題になるほど規模が大きくなっているので負担が大きいのは必然なんです。
トートロジーみたいな議論だからその反論は無意味。
0216デフォルトの名無しさん
垢版 |
2017/05/26(金) 02:06:01.59ID:7MLVuo4L
>>204
自分で言ったことを知らないって無茶苦茶だな
というか、そもそもC++のconstって肯定的に語る人はほとんどいないよ。
0217デフォルトの名無しさん
垢版 |
2017/05/26(金) 03:47:01.99ID:jh4BS3n9
>>216
え?金も出ないのに次期言語仕様のドラフト上げろっていうの?
君がどれくらいの人にアンケート取って肯定的な人が居ないと言ってるのか知らんが逆に否定的な人はどうなの?
肯定的な人が居ないのはそもそもちゃんと使ってる人が少ないからってだけでは?
assertionとかもそうだけど無くても問題もないものは当然初心者向けサイトでは扱われず使用者も少なくなりがち
ちなみにconst c# c++ってググれば検索上位は似たような内容が国内外含め結構出てくるよ
0218デフォルトの名無しさん
垢版 |
2017/05/26(金) 09:30:04.80ID:g456XZgo
C++を肯定的な奴少ないが使ってるのは多い。置き換えきれる言語がないんだよ
0222デフォルトの名無しさん
垢版 |
2017/05/26(金) 17:16:27.99ID:Vk2AXjGC
メモリ管理はRustのゼロコストGC(正確にはGCじゃないけど)に期待してる

>>221
っunsafe
0224デフォルトの名無しさん
垢版 |
2017/05/26(金) 19:35:43.26ID:R9lW8EDm
パフォーマンスを上げるのに
new するときにどの世代のメモりに生成するか指定できると便利になりそうな気がする
明らかに長期生存が分かっているオブジェクトを若いからというだけでガベコレに晒すのは無駄なんだが、現状無差別でしか生成できない。
アプリケーション終了時点まで消えてなくなることが無いと分かっているオブジェクトに至っては、生成直後に管理から外してもらえると良いんだけど。
0225デフォルトの名無しさん
垢版 |
2017/05/26(金) 19:47:07.58ID:R9lW8EDm
>>219
天国だよ
特にラムダ式とかローカル関数では、コピーとキャプチャを区別しなくてよくなる。
というかキャプチャとか考えたやつ、もうちょっとマシな方法思いつかんかったんかよって思う。
どのスコープの物なのか判りにくくてバグの温床
C++みたいに、キャプチャかコピーか明示できるようにして欲しかった。
0227デフォルトの名無しさん
垢版 |
2017/05/26(金) 20:11:40.53ID:R9lW8EDm
>>226
もしそうだったら、何時ぞのバージョンアップの準破壊的変更で
foreach(var item in xxx) のitemのスコープを変えたりとか苦しい羽目にはならなかったろうよw
0232デフォルトの名無しさん
垢版 |
2017/05/26(金) 20:21:16.22ID:bEaQUHBT
言っても無駄だと思うけど、だからそれはキャプチャーの仕様が
トリッキーでミスリーディングだから起こる問題じゃありません。

foreachのループ変数のスコープがプログラマの予想を裏切るものだから起こる問題です
0233デフォルトの名無しさん
垢版 |
2017/05/26(金) 20:33:16.54ID:R9lW8EDm
結局、C#のEqualsやキャプチャとかが分かりにくくなってしまったのは
利用者から見て隠すべきでない物を隠してしまった所にあるんだろうな

operator == のオーバーロードも、C++ならポインタと実態の違いをプログラマが
. と -> の違いとしてしっかり認識しながらプログラムしている。問題なんか見たことない。
だから、C++のプログラムをしていた自分はJava屋が指摘する == のオーバーロードの危険性について
そんなの気にしすぎと軽視していたんだよな、ところが実際にはヤバかった。

C++プログラマは、ポインタとして利用しているオブジェクトには、ポインタらしい == のオーバーロードを
実体に対しての == は、実体を比較する為のオーバーロードをいつも意識している。
C#は、参照(意味的にはポインタ)を、実体の比較としてオーバーロードしようとしてしまう。意識していないからね。
このあたりが齟齬の発生地点のような気がする。
というかC#はじめて、やらかした。
どころか、標準の string からしてやらかしている。

C++では、ラムダ式でもしっかりと意識したコードができるようになっている。
次の問題は async /await だ、あれも隠してはいけない物の代表格、バグの温床だね。
C#の設計陣、そろそろ学習しろよって思うのであるがw
0234デフォルトの名無しさん
垢版 |
2017/05/26(金) 20:51:46.15ID:bEaQUHBT
ああ、昨日の人か

==のオーバーロードが危険とはまったく思わないし、等号という記号のイメージに
そった定義で可能なことは自然で当然のこと

問題があるとすれば、むしろオーバーロードしなくても使えてしまうことだろう。
昨日も書いたけど、VBのようにオーバーロードしないと使えない仕様の方が好ましかった
0235デフォルトの名無しさん
垢版 |
2017/05/26(金) 21:36:33.37ID:Ym5et5f0
マップキーに使える値型は==を上書きする
それ以外はデフォルトのまま参照の比較
これで困ったことはないな
強いていうなら決まり切った形式の実装がめんどくさいことか
0237デフォルトの名無しさん
垢版 |
2017/05/27(土) 20:26:33.27ID:TYkkRdMw
>>236
.netのソース見るとnon-staticなフィールドのない値型のインスタンスは全部等価になるっぽい
試してないけど
0240デフォルトの名無しさん
垢版 |
2017/05/27(土) 22:01:52.68ID:pNqYSKN5
structの既定の比較は、かなり複雑な事やってる。
ポインターとか環境によって可変するフィールドや、アライメント関連で構造体中に隙間が無い場合に限ってmemcmpで高速比較する。
それ以外は、リフレクション使っての比較なのでパフォーマンスが大幅に落ちる。
なので、原則オーバーライドして使えという事を、昔C#が出始めたころにMSが言っていた。

自分は、いいかげん面倒くさいので、自分用は式ツリー使って比較とハッシュ計算の関数を自動生成してコンパイルした上で使っている。
既定の比較もこういうのを標準で作ってくれると面倒が無いし間違いもないんだが、などと思っている。
比較したいフィールドもしくはプロパティーに[EqualsTarget]というアトリビュートを付けたら、それで自動生成される感じ。
大小比較もこれで実装されるようにしてやった。

公開して、全員に使ってもらおうかどうか思案中、ちょと変態コードすぎるので気が引けてる。
0242デフォルトの名無しさん
垢版 |
2017/05/28(日) 00:28:08.62ID:v+RO0IME
スレチ感があるけど該当スレが分からずここで聞くんですが
Windows Formで背景色って灰色が初期値なのって何故でしょうか
0244デフォルトの名無しさん
垢版 |
2017/05/28(日) 02:09:41.98ID:0Vke4+SI
>>242
それ本来はOSの設定で変更可能なはずなんだけど。Win8以降コンパネで設定できなくなってるから
何だか訳分からんことになってるね

しかし、今触ってみて改めて思ったけどWin10のUIはウンコだな
Win7の時代の方がよほど分かりやすかった
誰が考えたらこんなカオスで使いづらいUIになるんだ
0245デフォルトの名無しさん
垢版 |
2017/05/28(日) 08:42:44.56ID:Q4IaIxAm
つか、元のコンセプトから見れば、灰色じゃなくて銀色のはずなんだけど
どう見てもねずみ色だね
0246デフォルトの名無しさん
垢版 |
2017/05/28(日) 10:16:19.73ID:LDH8CI3x
なぜグレーかというと、ハイライトと陰でウィジットを立体っぽく表現できたから。
だからフラットデザインではグレーにすり必然性はない。
0248デフォルトの名無しさん
垢版 |
2017/05/28(日) 11:35:19.99ID:WRDHmffy
俺も最近は職場のPCでも開発はほとんどVirtalBox上のLinuxでスクリプト書いてる
たまにVS立ち上げる機会があるとクソ使いやすくて感動するけど、VS以外のWindowsは大嫌い
0250デフォルトの名無しさん
垢版 |
2017/05/28(日) 12:42:49.19ID:U0KxOEQh
VSをLinuxやMac向けに売れば絶対儲かるやろ
for MacとかじゃなくてWin版と同じように使える奴
0251デフォルトの名無しさん
垢版 |
2017/05/28(日) 13:54:11.57ID:V1TJzJdZ
XCodeで心穏やかにプログラムを書ける奴を尊敬する
よほど精神修養したんだろうな
0252デフォルトの名無しさん
垢版 |
2017/05/28(日) 13:55:34.04ID:X8MhB+Ic
ユーザー数が
Win >>>> 越えられない壁 >>>> Mac
だから採算が取れる見込みが無けりゃ作らないよ
0254デフォルトの名無しさん
垢版 |
2017/05/28(日) 15:17:54.35ID:U0KxOEQh
>>252
開発者は
Mac>>>>>越えられない壁>>>>>Win
だろ
0258デフォルトの名無しさん
垢版 |
2017/05/28(日) 15:44:53.94ID:BVKFrymy
現実見た結果Macにたどり着いた
まあ三流企業は永久に窓でも使ってろってこった
0262デフォルトの名無しさん
垢版 |
2017/05/28(日) 16:03:22.88ID:Q4IaIxAm
でかいビル丸ごと一棟開発の部署でほぼ全部windowsマシーンとか見たことないんだろう
0269デフォルトの名無しさん
垢版 |
2017/05/28(日) 17:28:00.00ID:DdUksNjB
スポーツでもそうらしいけど、デキない奴ほど道具にこだわるのって
なんか日本人の伝統芸みたいだねw

あとこれはたぶんIT系だけだと思うけど「〜使ってる俺すげえ」っていう
よくわからん自己陶酔に浸る奴は相変わらず多いね。
自己陶酔は自己不安の裏返しだって気づかない時点で程度が知れるけど
0270デフォルトの名無しさん
垢版 |
2017/05/28(日) 17:33:05.05ID:BVKFrymy
こだわるとか凄えってほどのものじゃないだろう
当たり前のように一通り使って見て
当たり前の感覚であぁ窓よりMacの方が使いやすいなぁって感じる
ただそれだけのことなんだよね
鉛筆よりシャーペンの方が良いなぁって感じに似てる
0271デフォルトの名無しさん
垢版 |
2017/05/28(日) 17:39:13.08ID:LDH8CI3x
「こんなに素晴らしい○○を使っている私は特別な存在なのだと感じました」

「○○は優れている」ってのが「優れている○○を使ってる俺は優れている」に転化しちゃってる奴は多いね。
IT系に限らず趣味の世界一般で多いけど。
そんでそれがdisられると、まるで自分がけなされたかのようにムキになる。
0272デフォルトの名無しさん
垢版 |
2017/05/28(日) 17:58:58.49ID:BVKFrymy
そうはいっても業務で筆を使ってる人が居たらペン使えよって内心でバカにするだろ?
そういうこと
0273デフォルトの名無しさん
垢版 |
2017/05/28(日) 18:04:29.24ID:U0KxOEQh
Winでいいって言ってる奴はRoR使った事ないだろ
0275デフォルトの名無しさん
垢版 |
2017/05/28(日) 18:08:24.27ID:U0KxOEQh
あ、ここC#スレだったわ
すまん、スレ勘違いしてた
0277デフォルトの名無しさん
垢版 |
2017/05/28(日) 18:50:35.39ID:7TA+N736
>>272
筆を使って業務に支障がないなら別に文句はない
評価は仕事ができるかかどうかでペンを使うかどうかじゃない
0280デフォルトの名無しさん
垢版 |
2017/05/28(日) 20:25:47.96ID:Q4IaIxAm
macで開発を主張してるのは各種OSSが簡単に導入できるからだろ
それがc#と何の関係があるのかはしらん

ちゃんと管理された大企業のPCに勝手にOSS入れることは難しい
0282デフォルトの名無しさん
垢版 |
2017/05/28(日) 20:35:51.83ID:LqX4nhhl
一山いくらのPGなんてそんなもんよ
コード生産ライン作業員に自由なんてない
0283デフォルトの名無しさん
垢版 |
2017/05/28(日) 20:36:36.03ID:BVKFrymy
管理がしっかりしてる企業の方がリスクリターンを解ってるから導入は簡単
OSSは不安とか杓子定規にフリーはダメな三流企業は難しい
0284デフォルトの名無しさん
垢版 |
2017/05/28(日) 21:15:15.54ID:zksDCbHE
OSSダメ言い出したらLAMPすら無理じゃん

.NETだってオープンソースになってLinuxやMacに移植されてんのに

企業が管理してるのとか実績があるのだったら良いのか?
0285デフォルトの名無しさん
垢版 |
2017/05/28(日) 21:32:38.97ID:LL3KimrN
.net compact framework(C#2.0?)で知識止まってるんだけど久々にザマリン使って泥アプリでも作りたい
動くだけならできるんだろうけどlinqとかlambdaとか学びながらやりたいんだが
本とかサイトでいいとこ教えてくれ
C++,PHP,ruby,Javascriptはまー普通に書けるレベル
0286デフォルトの名無しさん
垢版 |
2017/05/28(日) 21:39:52.49ID:caiumps+
>>270
WindowsとMac、両方並行して使ってるけどそこまで致命的な差は感じないなぁ
バージョン管理、統合開発環境、エディタ、パッケージマネージャがマルチプラットフォームで動くようになったのはでかなり楽になった
RubyはまだWindows冷遇は強いので悲しいけど。

OS自体としてもデフォルトでも使いやすいのはMacだけど、カスタマイズしていくと差が埋まってく
人によるだろうけど、カスタマイズ好きとしてはどうせMacもLinuxもWinもカスタマイズするので大差なかった
0288デフォルトの名無しさん
垢版 |
2017/05/29(月) 14:34:44.41ID:KWmGTlOy
誰もそういう事は言ってないだろ
馬鹿じゃないの?

会社のPCに社員が勝手にソフト入れんなってことだろ
0291デフォルトの名無しさん
垢版 |
2017/05/29(月) 18:35:09.12ID:2NVblJjK
この手の話題は俺社環だからマ板でやれと言われているのに何この無限ループ
0293デフォルトの名無しさん
垢版 |
2017/05/30(火) 04:00:45.22ID:5LsaYMbU
>>286
LINQはってのは使えば解るレベルの簡単さだから大丈夫
たまに毛嫌いする困ったちゃんがいるけど
0294デフォルトの名無しさん
垢版 |
2017/05/31(水) 19:30:52.46ID:EmdHwMni
varの話ししてもいいですか?
0295デフォルトの名無しさん
垢版 |
2017/05/31(水) 19:33:05.55ID:buo/Bij8
ダメです
0298デフォルトの名無しさん
垢版 |
2017/06/04(日) 09:05:27.27ID:tYPOnRtn
FormにwebBrowserコントロールを置いて、
WEBページを拡大や縮小して表示する方法がありますか?
0303デフォルトの名無しさん
垢版 |
2017/06/11(日) 14:21:33.09ID:abflG9dt
ソースを貰ってみると
(これどの辺がRESTなん…? RESTいいたかっただけやろ…)
と思うことも多々あり
0307デフォルトの名無しさん
垢版 |
2017/06/14(水) 23:05:30.95ID:5jDCrHnG
ConfigureAwaitのデフォルトをtrueにしたのって大失敗だろ
書くのめんどくせえよ
0310デフォルトの名無しさん
垢版 |
2017/06/15(木) 21:40:50.91ID:OeRxoTJT
まあどっちを既定にしても文句は出るところだと思うけど
await/co_awaitみたいにキーワードで指定できりゃ良かったんじゃは思う
0311デフォルトの名無しさん
垢版 |
2017/06/15(木) 22:08:01.60ID:9G4t6eWS
ConfigureAwaitをtrueにするのはもうデスクトップアプリぐらいだろ
dotnet coreになってasp.net mvcもコンテキストへの依存がなくなったわけだし
0313デフォルトの名無しさん
垢版 |
2017/06/15(木) 22:27:30.17ID:YiDUG5yW
デフォルトfalseだと常に排他制御が必要になるだろ
わざわざコンテキストに戻すのはマルチスレッドの煩わしさを避けるためなのに
0315デフォルトの名無しさん
垢版 |
2017/06/15(木) 22:50:32.92ID:YiDUG5yW
>>314
あるよ
一部awaitしない呼び出しがあったりすると、後続処理がスレッドプールで実行されてしまうと見かけ上同一コンテキストのように見えるコードでも
同時に複数のコードが並列で実行されてしまう可能性がある(というか確実にそうなる)
0317デフォルトの名無しさん
垢版 |
2017/06/15(木) 23:14:08.29ID:YiDUG5yW
だったらtrueでもWaitしなけりゃ問題ないじゃん
排他制御が必要になるケースももちろんだけど、そもそもawaitの前後で常にスレッドが変わること自体がプロブレマティックすぎる
そんなのに比べたらUIスレッドでWaitする馬鹿のリスクなんて全く取るに足りないレベルだ
coreはWeb用ということで想定される要件が技術的に単純だから許されるんであって、さすがにそれを全ての用途に適用するのは無理がある
0323デフォルトの名無しさん
垢版 |
2017/06/15(木) 23:29:43.37ID:9G4t6eWS
逆でしょ
コンテキストが同じでなければならないようなコードを書くほうが問題がある
UIのように物理的な制約でコンテキストを同じにしなければならないようなケース以外ではコンテキストに暗に依存すべきではない
0325デフォルトの名無しさん
垢版 |
2017/06/15(木) 23:37:13.75ID:sYWqerlW
>>323
スレッドの一貫性を要求する既存のライブラリやAPIや既存コードが世の中にどれだけあると思う?
現代の実用的なソフトウェアって、君が思ってる以上にスレッドに強く縛られてるんだよ
0330デフォルトの名無しさん
垢版 |
2017/06/16(金) 06:41:26.24ID:nG3qIF/t
依存しまくってもいいんだよ
何でもかんでも分離しとくのがコードの形としては理想だけど手間かかるからな
その手間と依存することによるデメリットを比べて考えろ
0331デフォルトの名無しさん
垢版 |
2017/06/16(金) 07:46:02.57ID:FrehRa+N
何を言ってるんだろうこの人は
要らない手間を減らすために疎結合にするんだろ
あちこち依存しまくったら何をしようとしてもめちゃくちゃめんどくさくなるぞ
0332デフォルトの名無しさん
垢版 |
2017/06/16(金) 07:53:25.18ID:zHlBmHmO
疎結合にしたところでスレッド一貫性への依存は回避できないよ?
どう足掻こうが最終的には同期コンテキストに頼ることになる
0334デフォルトの名無しさん
垢版 |
2017/06/16(金) 10:07:23.75ID:pyKmluG/
UIスレッドなくすと手間じゃなくて、グラフィックなどのパフォーマンスに影響出るからね
0335デフォルトの名無しさん
垢版 |
2017/06/16(金) 23:44:52.36ID:c8qzsUGp
最終的には同期とるけど最後なるまではコンテキストに依存しない方が良い
未だにデスクトップ開発してる子ってこんな簡単なこともわからないんだなぁ
0336デフォルトの名無しさん
垢版 |
2017/06/16(金) 23:54:05.06ID:A6bnq7Mz
いやデスクトップとか関係ないからw
昨日から何か勘違いしてる「俺スゲー」バカが湧いてるけど、こういう奴ってそもそも
非同期メソッドのメリットがどこにあるのか理解してないんじゃないのか
0337デフォルトの名無しさん
垢版 |
2017/06/17(土) 00:08:56.85ID:VR3qdmCX
>>336
流れ読めよ
アホなこと言ってるUI君を揶揄するからデスクトップって単語が出てくるんだよ
いや馬鹿には数スレ読むのも難しかったかこりゃ失敬
0338デフォルトの名無しさん
垢版 |
2017/06/17(土) 00:13:07.65ID:cX5L/y8y
悪いけど俺の目には反抗期のConfigureAwait(false)坊やが諭されてる流れにしか見えないな
0341デフォルトの名無しさん
垢版 |
2017/06/17(土) 11:05:12.45ID:BEwZTU1B
イミュータブルなオブジェクトをクローンしたい
ただし1つだけプロパティを変更しつつクローンしたい
こういう時に使えるイディオムないか?
0343デフォルトの名無しさん
垢版 |
2017/06/17(土) 12:50:58.57ID:6fW6JpEJ
case class
0346デフォルトの名無しさん
垢版 |
2017/06/17(土) 16:13:25.11ID:BEwZTU1B
オブジェクトを複製したい
ただしIDと生成タイムスタンプは変えて
とかよくある
0347デフォルトの名無しさん
垢版 |
2017/06/17(土) 16:47:51.73ID:CkD5o1Z0
個人的にはオブジェクトを複製する機会がほとんどない
設定フォーム出す前ぐらい
0348デフォルトの名無しさん
垢版 |
2017/06/17(土) 16:51:08.65ID:CkD5o1Z0
不変な物だったらコンポジションでいいと思うけど
複製コスト考えたらなおのこと
0349デフォルトの名無しさん
垢版 |
2017/06/17(土) 19:20:20.32ID:x959dLvJ
イミュータブルとか言って意識高い系を気取るなら
IDが付いてるかどうかは値ではなく型で区別できるようにすべきだし、
更新時刻のようなメタデータを混ぜるのも美しくない
コンポジションでいいよ
0350デフォルトの名無しさん
垢版 |
2017/06/17(土) 19:24:31.07ID:PeeF0/YZ
更新時刻はドメインによってはメタデータとは限らないしIDのくだりは意味不明です
0352デフォルトの名無しさん
垢版 |
2017/06/17(土) 21:30:39.68ID:gwKlEbVi
object obj = GetX(); //objectを返す処理

if(obj == null) //nullなら処理終了
return;

func(obj); //続きの処理

みたいな処理書く時のnullチェックって簡潔にならない?見た目が好きじゃないのよね
if(obj!=null)ならまだいけるんだけど、等号ってのがなんか気持ち悪い
if(!obj)みたいな書き方があればいいんだけど
0356デフォルトの名無しさん
垢版 |
2017/06/18(日) 02:25:14.82ID:hOVO0je6
>>355
これって?を見逃しそうであんまり好きじゃないんだよな。
1行で終わる関数やプロパティではいいけど複数行あるような場所じゃ使わない。
0357デフォルトの名無しさん
垢版 |
2017/06/18(日) 09:51:04.51ID:LYHl+woc
not nullableとかoptionalとか早くnull対策の拡張して欲しいね
これがあるとコードが明快かつスッキリして気持ちがいいんだ
0359デフォルトの名無しさん
垢版 |
2017/06/19(月) 20:45:39.85ID:flULi9iV
HttpWebRequestでログインした際のCookie情報を
webBrowserにわたしたいんですがどうしたら良いでしょうか?

HttpWebRequestでのログイン方法は以下のサイトを参考にしました。
C#によるWEBサイトへのログイン方法(ベーシック認証、クッキー認証)
>Aクッキー認証(ニコニコ動画へのログインサンプル)
>http://c-loft.com/blog/?p=637
0362デフォルトの名無しさん
垢版 |
2017/06/20(火) 10:06:33.61ID:JuzXtFrS
>>361
seleniumだとブラウザ立ち上がるから嫌なんですよ
0364デフォルトの名無しさん
垢版 |
2017/06/20(火) 13:49:47.98ID:RwIO/rjq
C#でそこそこ大きなアプリ作りたいんですけど何かフレームワーク的なものってありますか?
PHPでいうとCAKEPHPとかそういうのがあると嬉しいです
どなたか教えてください
0366デフォルトの名無しさん
垢版 |
2017/06/20(火) 13:56:38.70ID:pKmK4wVA
コントロールやライブラリがいっぱい用意してあるのに.NETはフレームワークとして認められないのか
0367デフォルトの名無しさん
垢版 |
2017/06/20(火) 15:29:08.65ID:JuzXtFrS
ヘッドレスだと内容がわからないんでちょっと困るんです・・・
注文が多くてすいません・・・。
0368デフォルトの名無しさん
垢版 |
2017/06/20(火) 20:11:36.18ID:yezLQglS
注文が多いのは別に構わん
それに応えるのがプログラマーなんだから
後出し情報は勘弁して欲しい
0373デフォルトの名無しさん
垢版 |
2017/06/20(火) 21:22:49.88ID:0OgRQROP
普通にASP.NET MVCでしょ
このスレはWebアレルギーなおじさんが多いけどペチパーなら違和感なく馴染めるはず
0375デフォルトの名無しさん
垢版 |
2017/06/20(火) 22:11:42.85ID:UY9c0ml0
>>367
デバッグ時は普通のブラウザ
運用時はヘッドレスブラウザ
運用時に何も見えないのが嫌ならコンソールで出力したっていい
ブラウザコントロールはオートメーションのためのコントロールじゃない
オートメーションしたいなら然るべきツールを使おう
0377デフォルトの名無しさん
垢版 |
2017/06/25(日) 17:34:46.59ID:sNamIhLK
非同期でフォームをフリーズ?させずにコントロールをいじることはできないのでしょうか?
Invokeを使ってもつまるところ一緒だと思うのですが、何か方法はありませんでしょうか。

例えるとタスクマネージャのような感じです。
0378デフォルトの名無しさん
垢版 |
2017/06/25(日) 18:09:19.52ID:DRN741Gu
何がしたいのかわからない
コントロールを作ったスレッドからしかコントロールの操作はできない
0379デフォルトの名無しさん
垢版 |
2017/06/25(日) 18:23:14.24ID:fMxhTN4O
>>377
> Invokeを使ってもつまるところ一緒だと思う
よくわかってないならまずは言われた通りInvoke使っとけよ
0380デフォルトの名無しさん
垢版 |
2017/06/29(木) 10:39:10.46ID:Hj4U7zK8
Formを閉じるとき、FormClosingイベントが2回走るんですが何故だかわかるでしょうか
0381デフォルトの名無しさん
垢版 |
2017/06/29(木) 10:54:15.53ID:Hj4U7zK8
すみません。ボケでした。解決しました
0385デフォルトの名無しさん
垢版 |
2017/07/06(木) 09:16:56.19ID:9B2MU8kU
webbrowserでダイアログボックスを開いて操作することってできるんでしょうか?
たとえば画像アップロードサイトでファイルをアップロードするために「ファイルを選択」ボタンを押すと
ファイル選択画面になりますが、ここにファイル名を自動で入力して自動で「開く」ボタンを押したいと。

外部のブラウザならウィンドウハンドルを取得してそこに投げてやればいいのはわかるのですが、
webbrowserでやろうとして失敗しました。
0387デフォルトの名無しさん
垢版 |
2017/07/07(金) 10:12:04.88ID:1lt3p8X+
デフォルトメーラーの新規メール作成画面を、任意の添付ファイル付きで起動するには、どうしたらいいでしょう
0394デフォルトの名無しさん
垢版 |
2017/07/08(土) 01:20:19.99ID:myez7kG5
Listって添え字とかCountの戻り値の型がintだけど要素数はintの最大値が最大なの?
ulongとまでいかなくてもせめてuintの最大値くらいのサイズで使いたいのだけど
0397デフォルトの名無しさん
垢版 |
2017/07/08(土) 10:24:58.17ID:e99XA9TK
そんな巨大なものを汎用コレクションで扱う意味がわからないな
そんなのIListとかを受け取る既存の特に巨大なコレクションを考慮してない普通のメソッドに渡しても現実的に機能するとは思えないんだが
0400デフォルトの名無しさん
垢版 |
2017/07/08(土) 17:51:50.41ID:YUtLAjvF
C#初心者なだけで他になれてる言語でもあるのか?
億超える変数をメモリ上における言語なんてある?
0407デフォルトの名無しさん
垢版 |
2017/07/10(月) 11:48:54.44ID:W7xAmVRj
LINQ=LINQ to SQLのイメージ付いた人多いからLINQ自体非推奨とか言い出しそうで怖い
0410デフォルトの名無しさん
垢版 |
2017/07/10(月) 17:56:50.23ID:LYSrTSKk
LINQ to SQLはしゃーない
普通のLINQとと違って単純に関数渡すわけにいかないから
0413デフォルトの名無しさん
垢版 |
2017/07/10(月) 19:30:14.32ID:aRNupX/x
まあ、データが多いなら、メモリに確保せず捨ててくのは当然か。
社内ツールぐらいしか作ったことない井の中の蛙だから大海に出たい。
0415デフォルトの名無しさん
垢版 |
2017/07/10(月) 20:02:41.00ID:/9uIjFdQ
>>413
社内で自由に出来る程度がちょうどいいよ
他会社と共同作業になると制約が増えてストレス溜まる
0416デフォルトの名無しさん
垢版 |
2017/07/10(月) 20:29:55.71ID:JNAwLfPr
いまだにDataSetにFillしてぐるぐる回してます
源流がCOBOLの業務系デスマーチ製造会社
0417デフォルトの名無しさん
垢版 |
2017/07/10(月) 21:02:21.84ID:dHw9F+cl
開発スタイルがCOBOLのまま変わってないのに道具だけ進化しちゃうと悲惨だよね
COBOLだとコピペだらけの膨大なソースのせいで帳票に項目数個足すだけで一千万とか今でも珍しくないけど、
オープン系で「うちはCOBOL時代から変わらない伝統工法だから一千万かかるんです」はさすがに客に理解されないわな
0421デフォルトの名無しさん
垢版 |
2017/07/10(月) 23:36:05.03ID:R8ssGM8f
おまえらEFはクソだって言ってなかったか?
0424デフォルトの名無しさん
垢版 |
2017/07/11(火) 09:23:49.97ID:8YiL7FbQ
>>411
できるだけIQueryableでメソッドチェーン引き回して最後にToListしようよってことだと思う
最後は必ず実体化しないとならないのだから、非推奨とかないはず
0427sage
垢版 |
2017/07/17(月) 22:08:05.23ID:mirtEFzj
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に切り替えたいです。
0428デフォルトの名無しさん
垢版 |
2017/07/17(月) 22:09:31.18ID:mirtEFzj
>>427
string strA = "name=Model1";

public Model()
   : base(strA)
{
}
↑のような書き方だと オブジェクト参照が必要ですとでるのでアドバイスお願いします。
0430デフォルトの名無しさん
垢版 |
2017/07/18(火) 00:06:41.77ID:ijlJ8UfF
>>429
うまくいきませんもう少し詳しくお願いします。


↓なら動くのですがModel1,2,3の切り替えをアドバイスが欲しいです。

const  string strA = "name=Model1";

public Model()
   : base(strA)
{
}
0432デフォルトの名無しさん
垢版 |
2017/07/19(水) 00:18:56.79ID:ExUM14FQ
構造体の1次元配列なんだけど、

(1) 4byte境界に配置されるって理解であってる?できればMSDNか何かの
ドキュメントのソース付きでお願いします

(2) これを制御する属性ってありましたっけ?
0434デフォルトの名無しさん
垢版 |
2017/07/19(水) 18:23:24.47ID:Xu5lLRpu
今気づいたけど、C#って、
int a = 0xffffffff;

って書けない?
いちいち

int a = unckecked((int)0xffffffff);
って書かないといけないのか?
0438デフォルトの名無しさん
垢版 |
2017/07/19(水) 19:10:46.93ID:Xu5lLRpu
既定でuncheckedなのに何でリテラルだとこんな余計なお世話の仕様になってるのかね
0441デフォルトの名無しさん
垢版 |
2017/07/19(水) 19:28:41.57ID:XwmZjWyO
var a = 0xffffffff;

うおおおおおおおおおおおおおおおおおおおおおおおおおおおおお
0444デフォルトの名無しさん
垢版 |
2017/07/19(水) 20:04:54.85ID:twQ1sttd
>>438
そらオーバーフローすることが分かりきってるからに決まってるだろ
C#ではオーバーフローすることが予め分かっている場合は必ずuncheckedを明示的に指定するのが正しい作法
そうしておけばコンパイルオプションでcheckedに変えてデバッグできる
0445デフォルトの名無しさん
垢版 |
2017/07/19(水) 20:04:57.84ID:XwmZjWyO
居るんだよなあどこにでもvarに嫉妬するやつって
0446デフォルトの名無しさん
垢版 |
2017/07/19(水) 20:37:22.76ID:Xu5lLRpu
>>444
そんなしょういもない意見を偉そうに言われても

オーバーフローすると分かり切ってるかどうかはまったく明らかじゃない。
0xffffffffの型をuintのリテラルだと解釈すればその通りだけど、これは4バイトのビットイメージを表していると
解釈すればオーバーフローじゃないし、そういう解釈を採用することだって可能だったはず。

そもそも16進表記の用途ってそういうものだし。
だいたい、
int a = 0xffffffff;
こう書けて困る奴がいるのか。
0448デフォルトの名無しさん
垢版 |
2017/07/19(水) 20:42:05.04ID:+Y2q8IT3
> そもそも16進表記の用途ってそういうものだし。
それはおまえが思ってるだけ
0452デフォルトの名無しさん
垢版 |
2017/07/19(水) 20:49:23.21ID:Xu5lLRpu
まあ、やっぱり規定でunckeckedなのにリテラルや定数で初期化する時だけ
チェックが入るのは一貫性がないし、余計なお世話としか思えないね
0458デフォルトの名無しさん
垢版 |
2017/07/21(金) 23:51:31.37ID:JdAThHVQ
>>446
unchecked不要は意見として分からなくもないが、
キャスト不要は無理筋でしょ。

// キャストは必須
uint x = 0xffffffff;
int y = (int)x;
// 定数の時のunchecked必須はお節介?
const uint x = 0xffffffff;
int y = unchecked((int)x);
0461デフォルトの名無しさん
垢版 |
2017/07/21(金) 23:57:49.85ID:+Ec9GEX5
分野は違うけどイチローってほんと細かいこと拘ってるよな。MSで言えばカトラーが細かいことに煩いか。
0462デフォルトの名無しさん
垢版 |
2017/07/22(土) 00:05:45.89ID:HGcWbmUZ
自由な環境で仕事できてる幸運な人はこだわりも強い
そんなことを言ってられない可哀想な人はこだわりなんて持てない
0464デフォルトの名無しさん
垢版 |
2017/07/22(土) 01:07:20.68ID:edA5aDli
>>458
個々のリテラルごとに型がきちんと確定しないと式の解釈があいまいになるのは分かるけど、
整数の定数式なんかビットイメージをそのまま代入してくれた方が便利だしそれで誰も困らんと思うけどな
0465デフォルトの名無しさん
垢版 |
2017/07/24(月) 17:38:17.44ID:zqz/aOFQ
this.xxx
みたいな使い方のthisキーワードって極力省略すべき?
それともなるべく書くべき?
省略すべきときと書くべきときの使い分け方あったら教えてほしい
0466デフォルトの名無しさん
垢版 |
2017/07/24(月) 18:24:36.68ID:NUVOTero
そもそもthisを経由しないメンバ呼び出しを「省略」だっていう認識がおかしいと思うよw
であれば、どうすべきかは自明じゃないのかな
0468デフォルトの名無しさん
垢版 |
2017/07/24(月) 19:50:37.71ID:YzZxzy1N
>>465
どっちでもいい
コーディング規約次第
規約がないとか仕事じゃないなら好きにするといい
0469デフォルトの名無しさん
垢版 |
2017/07/24(月) 19:52:15.25ID:N63h5KIm
>>465
いらない
0471デフォルトの名無しさん
垢版 |
2017/07/24(月) 20:38:13.55ID:bQt6C+LF
thisという特殊なメンバ変数を持っている
ただその変数から間接的に参照できるってだけなのかな
それなら必要に迫られない限りわざわざ使う必要はない気がする
0477デフォルトの名無しさん
垢版 |
2017/07/24(月) 21:39:57.27ID:gSQHFbLF
>>476
な訳
0478デフォルトの名無しさん
垢版 |
2017/07/25(火) 22:18:16.96ID:i4RyLWeT
書いた方がいいよ、this。どこの変数か分かりやすい。
今は被らなくても何年か修正し続けるうちに
いつか被るかもしれないし。
0484デフォルトの名無しさん
垢版 |
2017/07/25(火) 23:49:27.38ID:VPdIi3jg
>>481
解決も糞もそもそも問題なんか存在しませんってw

thisつける(つけろ)って言ってる人の大半は釣りだと思うけど、
マジで言ってる人は(悪いけど)まともじゃないから相手にしちゃダメww
0485デフォルトの名無しさん
垢版 |
2017/07/25(火) 23:51:38.91ID:VPdIi3jg
それと、仮にC#でフィールドにプリフィクスつける意味があるとしたら、
それはプロパティやそのバッキングフィールドとの区別をつけやすくするため。

それ以上の意味はないし、それも本当に意味があるかかなり怪しい
0487デフォルトの名無しさん
垢版 |
2017/07/25(火) 23:58:36.91ID:7wirVU/N
しばらく考えていたらthisをつけたらいい理由が思い浮かんだ
なんとなく納得したけど自分のコードではつけない
0488デフォルトの名無しさん
垢版 |
2017/07/26(水) 00:08:11.62ID:CEnmMLln
C#ではメンバーアクセスはプロパティで行うのが基本
大文字小文字が違うから引数やローカル変数とかぶることはまずない
0489デフォルトの名無しさん
垢版 |
2017/07/26(水) 00:22:23.76ID:QV6iOXIK
さっき思いついたのはそんな理由じゃなくてバグの温床になるからだ
途中でコード変更してメンバ変数と同じローカル変数を加えると
それまでメンバ変数に対する処理や参照だったものが全部ローカル変数がターゲットになってしまう
int a=0
int Calc()
{
a++;
return a;//これはthis.a 1
}

int a=0
int Calc()
{
int a=100;//これを追加
a++;
return a;//これはローカルa 101
}
0490デフォルトの名無しさん
垢版 |
2017/07/26(水) 00:28:55.60ID:Pjw6cyms
自分はthisつけない派だけどいつかバグは出してもおかしくない
ローカルとメンバ変数同じ名前にしなければ問題がないけど
listやtextやcountはやりそうで怖い
かといってアンダースコアもつけたくない
0492デフォルトの名無しさん
垢版 |
2017/07/26(水) 01:06:05.63ID:u+EoOV6S
>>489
そういうのを「為にする議論」という
温床てw
蓋然性が存在するのと「温床になる」って全然レベルの違う話でしょw
0494デフォルトの名無しさん
垢版 |
2017/07/26(水) 03:13:40.70ID:wiJa4ooL
de:code2017でMSのちょまどはthis付けろって言い張ってんじゃん
インテリセンス利くからやりやすいじゃんって感じだったけどね

int aみたいな一文字ローカル変数なんて使うならthis打たんのだろうがの
0495デフォルトの名無しさん
垢版 |
2017/07/26(水) 03:48:31.27ID:ffnmq/c1
thisつけない派だけど困ったことないなー
クラスがでかすぎるとかメソッドがでかすぎるとかを起因として名称が増えまくって名前が被るんじゃね?って思ってしまう
0496デフォルトの名無しさん
垢版 |
2017/07/26(水) 04:38:24.67ID:NppfEv0Z
メンバ名は大文字から書いて、ローカル変数は必ず小文字から書くので重複はないと信じたいが不安はある
0497デフォルトの名無しさん
垢版 |
2017/07/26(水) 07:44:08.72ID:3xAC3WuT
>>494
一文字はともかく、ローカル変数の名前なんか短くていいわ
俺はローカル変数は極力一単語で済ませるようにして、
それ以上長い名前を付けたくなったらスコープが長過ぎることを示す悪い匂いだと考えてる
0498デフォルトの名無しさん
垢版 |
2017/07/26(水) 08:01:32.50ID:3xAC3WuT
あと長い名前を付けたがるケースとしてありがちなのが、同じものを表す変数に対して一貫して同じ名前を使うことで品質を高めようというCOBOL的発想
必ずしも悪いとは言わないけど、大抵は適切にクラスを使えてないだけ
0499デフォルトの名無しさん
垢版 |
2017/07/26(水) 08:39:55.25ID:op+tX9S+
移譲で内部に別クラスを持ち、クラス名をプロバティーにして、それを内部で使うときにthis使うかな
0501デフォルトの名無しさん
垢版 |
2017/07/26(水) 10:38:12.08ID:NHLh2Zn7
ガイドラインやルールで決まってないんだから
ローカルルールに則っときゃいんだよ。趣味なら好きにすりゃいいし、ちょまど信仰者なら言うこときいときゃいい
0502デフォルトの名無しさん
垢版 |
2017/07/26(水) 11:05:22.72ID:Cox8uos8
だーから、スコープによる隠蔽がバグの原因になるって
蓋然性としてはありうるが現実にありがちかって言えば全然そうじゃないよw

長年プログラマやってるけど、少なくとも俺は一度も経験ないね。
だいたいそれが本当にバグの原因になるのならthis付けろじゃなくて
隠蔽なんかなくせと主張するのが正しい。
オーバライドもオーバーロードも使えなくなるけどね

インテリセンスにクラスメンバー一覧を表示させるためにthisをつける(つけろ)って言う奴もバカ。
本当にそんな機能が欲しいなら、そんな姑息的手段じゃなくてインテリセンス自体に
そういう機能とショートカットキーを追加してくれと主張すべきだ

いやそもそもいらないけどねそんな機能
0504デフォルトの名無しさん
垢版 |
2017/07/26(水) 11:26:18.98ID:Pjw6cyms
ありがちじゃないからこそ問題なんじゃないか
指摘されるまでそれが問題だなんて意識すらしてない
0506デフォルトの名無しさん
垢版 |
2017/07/26(水) 11:45:50.66ID:Cox8uos8
まああれだ、杞憂って言葉があるけど、>>504は今後一切外に出ない方がいいよ。
だって外に出たら、隕石が君の頭上に落ちてくる蓋然性は存在するからな。

そんなこと地球上で何十年に一人経験するかどうかってレベルのはずだが、>>504によれば
ありがちじゃないからこそ問題なんだよね。

指摘されるまでそんな問題が存在すると意識してなかったろうけど、
今ちゃんと指摘したよ?
0508デフォルトの名無しさん
垢版 |
2017/07/26(水) 12:04:27.95ID:Pjw6cyms
>>506
それだったらデバッグする必要ないよな
お前はテストも否定しそうだな
お前の言い方じゃ10年に一度起こるバグもほっとけばいいんだろ
0510デフォルトの名無しさん
垢版 |
2017/07/26(水) 12:14:59.82ID:86kwINRT
レスの多い方が勝ちだとでも思ってんのか
昼休み終わったらそれ以上続けるなよ
0514デフォルトの名無しさん
垢版 |
2017/07/26(水) 21:24:47.56ID:5gVt8qYH
thisつけないってヒトのレスは頭オカシイから
自分は今後はthisつけるようにする。
0516デフォルトの名無しさん
垢版 |
2017/07/26(水) 22:02:24.09ID:/gzQVqUl
会社のルールとかじゃなければ自分の好きにしたらいいのに
何のために2chで「俺はこう書くぞ」宣言なんかするんだろ
0517デフォルトの名無しさん
垢版 |
2017/07/26(水) 22:02:24.86ID:Cox8uos8
それが自覚できないから言ってるんだから言っても無駄だよw

頭の悪い奴って総じて自分が見えてないし自分に突っ込む能力がないし
自分が他人からどう見えるのか考える能力が欠如してるから見てて笑えるけど、
なんか哀れだよね。
0519デフォルトの名無しさん
垢版 |
2017/07/26(水) 22:09:22.94ID:Cox8uos8
頭悪い奴ってさあ、議論で勝てないとすぐにこうやって問題をずらすんだよね。
そんあすっぱいぶどうを取る方法を議論してどうするんだ、ってねw

そんなことで勝ったつもりになれるところがまた頭の悪い所以でもあるんだけど、
それがただの幼稚な防衛機制でしかないことに本人がまったく気が付いてないところが
見てて哀れだよねほんと
0523デフォルトの名無しさん
垢版 |
2017/07/26(水) 22:45:27.80ID:ZdFVUMtA
いやーだらだら書くだけなら簡単だよー
思いついたこと片っ端から書いていったらいいんだもん
もちろんいい長文は難しいけどね
0527デフォルトの名無しさん
垢版 |
2017/07/27(木) 01:02:19.10ID:q1rhXXen
ID:0qyy9e35 = ID:kVXZn+TQ = ID:ZdFVUMtA = ID:pBeXUKYV

分りやすいwww
0531デフォルトの名無しさん
垢版 |
2017/07/27(木) 06:42:14.60ID:DHwQ8OYH
ちょまどはMS社員と言っても営業みたいなもんでプロダクト作ってるわけじゃないからなあ
0532デフォルトの名無しさん
垢版 |
2017/07/27(木) 06:43:39.12ID:DHwQ8OYH
あと、MSの公式な見解としては「VSのデフォルトでは警告」という事実があるわけだし
0537デフォルトの名無しさん
垢版 |
2017/07/27(木) 19:12:46.44ID:+34Fnjid
コーディングスタイルなんてどうでもよかねえか
パブリックAPIが標準から逸脱していない
クラス(1ファイル)の中で一貫性がある
これだぇ守ってくれりゃとくに苦もなく読める
それよりまともな構造を追求することに労力を使おう
構造がクソだとスタイルでどう頑張っても読めないよ
0538デフォルトの名無しさん
垢版 |
2017/07/27(木) 22:06:26.64ID:P8zzUyc0
>>537
お前が読めるかどうかなんてどうでもいい
プロジェクトに参加してるあまり程度の高くない協力会社のコーダーにも読めることが必要
まあコーディングルールの話に構造がぁって言う奴はたぶんうちが使ってる協力会社よりレベルは低そうだが w
0539デフォルトの名無しさん
垢版 |
2017/07/27(木) 22:11:23.55ID:aAe8+IMH
>>537
読めるかどうかじゃなくて、いろんな書き方されると読むのにいらん苦労するから
書き方のスタイルを決めましょう、って言うのがコーディングルール
いろんなスタイルの大量のファイルやクラス読まされてみ

ちゃんと動いてるコードが読めないようならプログラマ失格だな
0541デフォルトの名無しさん
垢版 |
2017/07/27(木) 22:36:28.25ID:lpXAd1IH
C#実践開発手法という本が気になってるんですが、5000円越えと高価なので迷ってます。
この書籍、良書といえますか?
0542デフォルトの名無しさん
垢版 |
2017/07/27(木) 22:58:14.83ID:+34Fnjid
スタイル規約だけはしっかりしてるスパゲティコードを何度見たことか
構造がスッキリしてればスタイルの違いなんてなんの苦労にもならない
ユニット内で統一感が取れてれば十分
それがユニットというものだ
0543デフォルトの名無しさん
垢版 |
2017/07/28(金) 00:44:11.19ID:OXiEJljk
>>542
スパゲティの意味が違うだろ。
0545デフォルトの名無しさん
垢版 |
2017/07/28(金) 04:25:03.23ID:OXiEJljk
多少わかりにくいレベルでスパゲティというやつがいるから困る。
0547kadesu
垢版 |
2017/07/28(金) 10:39:02.10ID:aEC8q9AI
■概要
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)
0552デフォルトの名無しさん
垢版 |
2017/07/28(金) 11:57:07.10ID:H9Qo6cXw
とんでもないマルチポスト野郎なのか
それとも誰かが勝手にやってるのかw
0553デフォルトの名無しさん
垢版 |
2017/07/28(金) 16:43:43.52ID:AFEjF9o4
失礼しま〜す
どこかにあるかもしれませんが質問を。

C#を  というか、プログラミングを始めたばかりなんですが、
メイン処理のソースが、ほかのところに回せそうな処理で長くなってしまうのは
格好が悪いとおもうのですが、自力ではどうにもならないです。
なにか、分散させる方法のアドバイスがあれば、どうかご回答をお願いします。
0554デフォルトの名無しさん
垢版 |
2017/07/28(金) 16:47:10.00ID:6ZUJ6Gan
>自力ではどうにもならないです

の意味がわからん
お前の書いたソースじゃないのか?
0555デフォルトの名無しさん
垢版 |
2017/07/28(金) 16:58:23.24ID:AFEjF9o4
私が書きました。
でも、なんかダサい気がします。気がするんですがどう修正したらいいのかがわからなくて…
0556デフォルトの名無しさん
垢版 |
2017/07/28(金) 16:59:05.44ID:eCIIVBTi
動作を早くしたいのならループ中の余計な動作を減らすようにするとか
保守しやすいコードを書きたいのならデザインパターンなどを勉強するとかあるが
>>553
ソース示さずにそんなこと言っても自分のセンスの問題なんだからどうしようもないから諦めろ
0557デフォルトの名無しさん
垢版 |
2017/07/28(金) 17:02:14.71ID:AFEjF9o4
>>556
ソース貼ろうか考えたんですが、ちょっと…

わがままです。ごめんなさい
0558デフォルトの名無しさん
垢版 |
2017/07/28(金) 17:10:32.68ID:6ZUJ6Gan
C#ならリファクタリングで処理を切り出したりしやすいし
リーダブルコードとか良いコードを書く技術とか読んで
いろいろやってみりゃいい
0559デフォルトの名無しさん
垢版 |
2017/07/28(金) 17:17:37.98ID:AFEjF9o4
もっとソースみるなり勉強してきます。
ありがとうございました。
0560デフォルトの名無しさん
垢版 |
2017/07/28(金) 17:18:42.17ID:4kYE+X2u
短くしなきゃいけないという強迫概念に襲われてるやつ多いけど、別に長くてもいいよ。気にすんな
0561デフォルトの名無しさん
垢版 |
2017/07/28(金) 17:20:30.90ID:mbT3OJMo
ソースをhttps://ideone.com/みたいなとこに張ったら一発だよ
ここのお兄さんがたが知恵を絞って色々批判してくれるよタダで
そしてそれが、すこしの恥とひきかえにおまいを成長させる
0562デフォルトの名無しさん
垢版 |
2017/07/28(金) 18:19:30.49ID:AFEjF9o4
>>560>>561
どうもありがとうございます
0564デフォルトの名無しさん
垢版 |
2017/07/28(金) 20:32:00.92ID:AFEjF9o4
なにやら、「Stateパターン」というのを使えばきれいになりそうです
0566デフォルトの名無しさん
垢版 |
2017/07/28(金) 21:20:18.20ID:AFEjF9o4
へ〜。
じゃあどうするとよいのでしょうか...
0569デフォルトの名無しさん
垢版 |
2017/07/28(金) 22:42:33.73ID:AFEjF9o4
https://ideone.com/cHsNov

これでどうか。
どなたか優しくご教授になってくださるとうれしいです...
0570デフォルトの名無しさん
垢版 |
2017/07/28(金) 22:44:40.17ID:AFEjF9o4
ほんとにはじめたてです。
VisualVasic使ってますが、機能がいまいち使いこなせません。
0571デフォルトの名無しさん
垢版 |
2017/07/28(金) 22:49:28.94ID:AFEjF9o4
>>569
のやつ思った通りに動かないやつでした。
また貼りにきます
0573デフォルトの名無しさん
垢版 |
2017/07/28(金) 22:54:29.48ID:AFEjF9o4
https://ideone.com/C2DZMv
です。よろしくお願いします。
0574デフォルトの名無しさん
垢版 |
2017/07/28(金) 22:55:23.06ID:AFEjF9o4
>>572
これから内容増やしまくるので、
本体から離したいです。
0576デフォルトの名無しさん
垢版 |
2017/07/29(土) 00:21:01.93ID:1x0TX8t+
>>575
そうですね、ありがとうございます
0578デフォルトの名無しさん
垢版 |
2017/07/29(土) 00:29:09.54ID:gp3BUyJn
長い処理は長くていいと思うが保守目的なら、parial使ってソースファイル分けるのがいいかな。
0581デフォルトの名無しさん
垢版 |
2017/07/29(土) 12:30:26.46ID:1x0TX8t+
>>579
こんなもんなんですね!
では気にせず書いていきたいと思います

>>580
partialについて勉強して、良さそうだったら使ってみようかと思います

ありがとうございました
0582デフォルトの名無しさん
垢版 |
2017/07/29(土) 12:37:15.78ID:oSnm1RVH
長いかどうかというか責務が分割されてるかだよ
責務が分割されてるなら自然と短くなる
ショートコーディングを突き詰めるのはその後
0583デフォルトの名無しさん
垢版 |
2017/07/29(土) 12:41:24.13ID:1x0TX8t+
処理を1つ1つのシーンごとに完成させたいんですが、
キーイベントと描画で、一緒に書きたい部分が分けられちゃってるんです。
それを、できたらどうにかしたいと思います。
0584デフォルトの名無しさん
垢版 |
2017/07/29(土) 18:43:03.15ID:gp3BUyJn
ベースとなるシーンクラスを作る。キーイベントや描画の仮想関数も入れとく。
個々のシーンごとに、継承してクラスを作り、そこにキーイベントと描画を実装する。
ストーリー進行管理クラス作り、そこでシーンクラスの切り替えを行う。
0585デフォルトの名無しさん
垢版 |
2017/07/29(土) 19:23:12.73ID:TPlqyDtD
キーイベントをコマンドに変換してモデルに投げるクラス
モデルを描画するだけのクラス

これは分けとかないと後で泣くよ
0586デフォルトの名無しさん
垢版 |
2017/07/29(土) 20:14:15.70ID:C4g3d83/
C♯を触ってるけど、独習C♯をちょっとかじって、作りたい物ちょこちょこ適当に作ってるから綺麗なコードってのがよく分からない
このスレの人達はサンプルソース見たりとかやりやすい作法とかどうやって見つけてますか?
0588デフォルトの名無しさん
垢版 |
2017/07/29(土) 20:41:15.53ID:C4g3d83/
>>587
レビューする、されるは考えた事なかったですねー
作ってる物が物なだけにあんまり同じ方向でやるような思考が無かったのもありますが・・・
ありがとうございます
0590デフォルトの名無しさん
垢版 |
2017/07/29(土) 20:45:58.77ID:C4g3d83/
>>589
あー、そういうところから見るって手もあるんですね
こういう管理系統のモノ入れても使っていませんでしたが、そういう使い方もしたいですね
0591デフォルトの名無しさん
垢版 |
2017/07/29(土) 21:02:11.91ID:zJVnUUbX
>>589
こういうアドバイスする奴は実は自分でソース見たことない奴だと思うわ
結構癖のあるソース多いし考え方って想像以上にバラバラだから初心者が見たら余計に混乱するだけ
0592デフォルトの名無しさん
垢版 |
2017/07/29(土) 21:08:27.57ID:nvDf8a0u
本読んで勉強するレベルの奴はきれいなソースなんて考えなくていいよ
まずは動くソースかけるようになれよ
動くの書けたらごっちゃなソースになってるだろうから、そこで余裕があったら考えりゃいい
昨日の質問の奴みたいにその書いたソースに合わせてな
0594デフォルトの名無しさん
垢版 |
2017/07/29(土) 21:34:41.88ID:C4g3d83/
>>591
使いたい機能で備忘録とかサンプルみたいなのは見たりするけど、
プロジェクトレベルで無いかなーとかは思ってたので、どんな感じかは興味ありますね

>>592
動くものはそこそこ作ってるんですけど、オブジェクト思考とかまったく勉強してないので、
関数切り貼りとか汎用関数適当にぶち込んだクラス使い回しで、ほぼベタ書きみたいなもんなんですよね
たまーに少し凝って少しずつ汎用度は上げてますが

>>593
やっぱり公開するのが一番手っ取り早い上達方法だとは自分も思います
自分で改善するには、現状の自分のレベルよりも上の人からきっかけ貰わないとそもそも気付けないパターンのが多いですし

基本的にはスクレイピングしてDBにデータを集めて、それを色々と分析するようなプログラム書いてるだけなので、
ベタでも動かすのは大体問題無いんですよね
しかし、こういう作法は効率悪いよとか、こういう書き方すればいいじゃんみたいな参考コードから
自分のコードに付け足したいってイメージでした
0595デフォルトの名無しさん
垢版 |
2017/07/29(土) 22:32:29.25ID:1IyGodP3
>>594
そういうのはC#よりPythonなどのスクリプト使ったほうがいいんじゃないか?
圧倒的に手っ取り早く作れるよ
0596デフォルトの名無しさん
垢版 |
2017/07/29(土) 22:42:14.14ID:C4g3d83/
>>595
Rubyでスクレイピングしてる参考書買ってちょっと書いてた時期あるんですが、それが少し動作遅かったのでC♯で移植してからずっとC♯使ってるんですよね
後はC♯のchartクラスとかも少し触ったりしてます

Pythonは触ったこと無いですが、作業内容に合わせてコーディング時間調整できるぐらい色んな言語触れる用になるのは目標ではありますね・・・
0597デフォルトの名無しさん
垢版 |
2017/07/29(土) 22:50:27.83ID:d/bKk9xj
Pythonだとmatplotlib使えばクソ簡単に高品質なグラフ描けるよ
スクレイピングがスクリプトで遅いのはXPathをうまく使えてないんじゃないかな
スクリプトを使うなら重い処理は極力ライブラリに丸投げするのがコツだ
0600デフォルトの名無しさん
垢版 |
2017/07/30(日) 03:04:38.72ID:1m5312Xu
>>586
その独習C#とかで書かれてるようなのがいわゆる綺麗なコード。
まあ、有名ライブラリ書いてるコミッタとかでもそんな綺麗じゃない場合もあるので、ぶっちゃけ優秀な成果物作ったもん勝ちってのはある。
勝てば官軍。
行儀のいい無能より、素行不良でも有能な奴が好まれるのはどの業界でもよくある。

勿論、綺麗なコード書けるに越した事はないけど。
0603デフォルトの名無しさん
垢版 |
2017/07/30(日) 05:57:53.68ID:1fafOaKT
「きれいなコード」とはまた違うのかもしれないけど、「C#らしい生産性の高いコード」ってなかなか書けないよね
C++やC++/CLIが高機能かつ安全になりすぎたせいもあってC#の優位性が失われた気がするんだよな
VisualStudioやVSCodeの補完機能の効きが違うせいでC++よりC#が使いやすいとか、機能が少ない分C#の方が他人の書いたコードが読みやすいとか、今となってはそれぐらいしかメリットが無い気がする
0611デフォルトの名無しさん
垢版 |
2017/07/30(日) 08:08:37.81ID:lj6eZdZL
人のソース見てもたいていは小手先の表現しか参考にならない
汚いコードとの対比がないからな
人のソース見てそれ以上がわかるやつは相当デキル
0613デフォルトの名無しさん
垢版 |
2017/07/30(日) 09:41:14.51ID:reLfmDHf
綺麗なコードは端的に読みやすくて再利用性が高いってイメージで使ってました
後から機能拡張し易い書き方とかもそうですね
基本的にはオブジェクト指向な感じです
0614デフォルトの名無しさん
垢版 |
2017/07/30(日) 09:42:29.47ID:ynobldaf
>>612
で、どんなところがいいのか説明してみ
名前だけならソースなんて見れないボンクラでも書けるし w
0620デフォルトの名無しさん
垢版 |
2017/07/30(日) 21:23:35.05ID:ynobldaf
>>619
日本語が理解できないのかな?

> 名前だけならソースなんて見れないボンクラでも書けるし w
0623デフォルトの名無しさん
垢版 |
2017/07/30(日) 21:43:27.07ID:SibjNbLq
>>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)を使用できるコントロールはない。

このページの内容は間違っているの?
0626デフォルトの名無しさん
垢版 |
2017/07/30(日) 22:55:14.27ID:75orpNSa
>>623
1、2はIEのコントロールのことであってる
3はedgeもchrome系もコントロールあるから間違ってる
0627デフォルトの名無しさん
垢版 |
2017/08/01(火) 18:41:49.84ID:ZyMYFMmz
質問。
これはどういうケースを想定したものなのか教えてくれ。

> フォーカス イベントと検証イベント
> (中略)
> マウスの使用、または 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
だと思うのだが、とにかく、そうなってない。
上記ページはどういったケースについて記したものか、分かる人教えてよろしく。
或いはこのケースはどのページを参考にすべきなのだ?
0628デフォルトの名無しさん
垢版 |
2017/08/01(火) 18:49:25.41ID:yNdQgkwx
移動先のEnterが先っていう説明じゃなくて
当該コントロールに入ってから出るまでのイベント発生順序なんじゃないの
0631デフォルトの名無しさん
垢版 |
2017/08/01(火) 19:19:16.59ID:ZyMYFMmz
>>628
ああ、そういうことか。サンクス。
ただそれならFocusのGet/Lostで分離して書いていてくれれれば誤解無いのだが。

>>630
フォーカスは一つ(マウスは一つ)なのだから、
動的にadd/removeしても全く苦労しないし問題ないが。
当然visibleを使っても出来るが、同様にイベント順は見えるから同じ。(はず)
0632デフォルトの名無しさん
垢版 |
2017/08/01(火) 19:20:55.16ID:IDglmNpI
>>631
状況によって変わるものをどうやって書けと…

leaveとenterが常にセットで起こるとは限らん
相手が一つも限らない
0633デフォルトの名無しさん
垢版 |
2017/08/01(火) 19:29:13.42ID:ZyMYFMmz
>>632
どう考えてもEnterはLeaveより先なんだから、普通に以下でいいだろ。

----
マウスの使用、または Focus メソッドの呼び出しによってフォーカスを『得る』と、
次の順序で Control クラスのフォーカス イベントが発生します。
Enter
GotFocus

マウスの使用、または Focus メソッドの呼び出しによってフォーカスを『失う』と、
次の順序で Control クラスのフォーカス イベントが発生します。
LostFocus
Leave
Validating
Validated
----

もしかして、別々に書いているのは、Control内部で状態保持していて、
キーボードでフォーカスを得た際は、マウスでフォーカスを失っても、別順
Leave
Validating
Validated
LostFocus
という超絶糞仕様だったりするの?もしかして?

> 相手が一つも限らない
いやFocusは常に一つだよな?
0634デフォルトの名無しさん
垢版 |
2017/08/01(火) 20:23:22.15ID:mmKtfIMx
>>627
テキストボックスのMouseDownにボタン用のイベントを入れる
MouseDownされた座標を調べてボタンの位置でなかったら実行しない
で一応は実現できると思う。ボタンは位置を示すためだけの飾りになる
その前にコントロール重ねるのもイベントが衝突しかねないのも良くないとは思う
0635デフォルトの名無しさん
垢版 |
2017/08/01(火) 20:38:33.37ID:/TDpqH7O
前提条件を限定してエンジン側の仕様に文句言っても…
想定した前提条件に合致するように橋渡ししてやりゃいいんじゃない?
0636デフォルトの名無しさん
垢版 |
2017/08/01(火) 20:39:44.45ID:7d8zSu3L
>>633
変な考え方する人だな。

Enter発生後の状態って概念があるかどうかわからないけど仮にEner状態と呼ぶとして、
「EnterはLeaveより先」って仕様だと親子(入れ子)関係にない2つのコントロールが
同時にEner状態であることを許すことになるわけだけど、そのあたり考えて言ってるのかなそれ
0637デフォルトの名無しさん
垢版 |
2017/08/01(火) 20:54:59.71ID:ZyMYFMmz
>>634
実装はボタンを遅延消去(10ms)する方向で考えてる。
理由はそのほうがコードがスッキリするから。
コントロールは重ならない。
というかボタン出現時にテキストボックスをその分縮めるからだが。

>>636
知らんがな。
MSDN確認したらそう書いてあるからそう実装したら動かない、
じゃあ逆なんだろ、ってのは予想付くが、それで正しいのか?という疑問だ。
普通はLeave->Enterの順だと思うよ。HTMLはそうだし。
ただ.NETはそこら辺古くて、奇妙な仕様が残っていたりするから確認したかった。

ああ、だから、以下の書き方が一番いいのか。まあいいけど。

----
マウスの使用、または Focus メソッドの呼び出しによってフォーカスを変更すると、次の順序で Control クラスのフォーカス イベントが発生します。
LostFocus
Leave
Validating
Validated
Enter
GotFocus
0638デフォルトの名無しさん
垢版 |
2017/08/01(火) 21:06:26.55ID:7d8zSu3L
>>637
いや、仮にもエンジニアの端くれなら、「EnterはLeaveより先」って話を聞いたら
瞬間的に整合性がない(仕様バグ)話だなって思わないとまずいと思うよ
0639デフォルトの名無しさん
垢版 |
2017/08/01(火) 21:11:05.05ID:yKWQrIWU
自分で何ともならん時は、理不尽でもそれを受け入れるのが職業エンジニアじゃね?
0640デフォルトの名無しさん
垢版 |
2017/08/01(火) 21:12:41.25ID:ZyMYFMmz
>>638
> 仕様バグ
それは違うだろ。どっちが組みやすいかはさておき、どちらの仕様でも組めるはず。
勝手にオレオレ仕様に決めつけるほうがまずいだろ。

俺も逆なのか?とは思ったよ。最近はHTMLに慣れてしまったので。
ただ今回に関してはEnterが先の方がコードは単純に済んだ。
一概にどっちがいいというものでもあるまい。
0641デフォルトの名無しさん
垢版 |
2017/08/01(火) 21:28:30.68ID:7d8zSu3L
>>640
違わない。
自分で書いてるでしょ。
入力フォーカスを持つコントロールは常に一つだと。

Enterが何を意味しているのかMSDNに書いてあるか知らないが、
普通に考えれば自分自身または子コントロールが入力フォーマスを持たないのに
「Enter状態」になるのは変で、そうであれば上の入力フォーカスの仕様と矛盾する
0642デフォルトの名無しさん
垢版 |
2017/08/01(火) 21:33:10.29ID:yDQeZmLh
馬鹿が暴れてるw

マウスは瞬間移動可能
周りの領域を通らないでいきなりenterだけ発生させることも可能だし
逆にleaveだけもありうる
0643デフォルトの名無しさん
垢版 |
2017/08/01(火) 21:37:33.35ID:ZyMYFMmz
>>641
君がどう考えるのも自由だが、俺は同意しないよ。
定常的には「フォーカスを持つのは常に一つ」だが、過渡的には実装次第だろ。
直感的には「フォーカスを持つのは常に一つ」の方がいいからそっちに揃っていることが多いだけで。
他で有名なのはRadioButtonで、
俺の勘違いでなければ.NETは仕様を変えてる。
そういうのがあるから確認しただけ。

ああだからそういった意味だと
> 相手が一つも限らない (>>632)
は俺の読み違いだな。彼はそこを指摘したのか。すまんかった。
0644デフォルトの名無しさん
垢版 |
2017/08/01(火) 21:38:49.91ID:yDQeZmLh
Enterが先に起こるとフォーカスが同時に2つになってしまう
Enter内部でフォーカスのカウントしてたら困るだろ

Leaveが先に起こってカウント一個→0個→一個のほうがいい
0645デフォルトの名無しさん
垢版 |
2017/08/01(火) 21:53:10.60ID:yKWQrIWU
フォーカスが移った時、ユーザーが見ているのは移った先の方だから
enterの処理を先にやったほうがレスポンスが早く感じる

てか、enterが先のほうが正義という理屈も有るんだから現状をバグと決めつけるのはどうかと思うよ
仕様を決めた人の裁量の範囲
0646デフォルトの名無しさん
垢版 |
2017/08/01(火) 21:54:46.29ID:7d8zSu3L
排他的な状態変化に連動する状態変化が排他的じゃなかったら矛盾に決まってるわけだけど、
こういうロジカルは話は通じない人には全然通じないね...

たぶん数学苦手だったタイプの人だと思うけど
0647デフォルトの名無しさん
垢版 |
2017/08/01(火) 22:02:55.06ID:yKWQrIWU
ロジカルが全てならleaveとenterは完全に同時発生しないとおかしいわけで
先にleaveと言っている時点で既にロジカルから妥協しているだろ

多分数学が得意だと思いこんでいたタイプの人だね
0649デフォルトの名無しさん
垢版 |
2017/08/01(火) 22:17:32.13ID:yDQeZmLh
途中で送ってしまった
が、それはどうでもいい

実際コードを書いて確認した
予想通りというか内容的には納得の内容の結果を得た

それになんでこんな仕組みになってるかも理解した
他に並んでいるイベントをよく見るとおやっと思ったのでそこをつついたらいい答えがでた
Enterは確実に後でなくてはいけない
理由がちゃんとある
てめえらで確認せえや
0651デフォルトの名無しさん
垢版 |
2017/08/01(火) 22:21:58.45ID:yDQeZmLh
そして
EnterやLeaveは過信してはならない
というか仕組みを理解しないで使ったらだめだなこれは
0653デフォルトの名無しさん
垢版 |
2017/08/01(火) 22:30:33.16ID:7d8zSu3L
>>647
よく考えてから人を批判した方がいいよ

仮に一時的にどのコントロールもフォーカスを持たない状態が出来ても
入力フォーカスの排他性と矛盾しないが、2つのコントロールが同時に
入力フォーカスを持ったら矛盾する
0654デフォルトの名無しさん
垢版 |
2017/08/01(火) 22:36:38.37ID:yDQeZmLh
君らも思い込みで話さないでテストしたらいい
しつこく何度もやってると思ってるのと結果が違うから
0655デフォルトの名無しさん
垢版 |
2017/08/01(火) 22:45:07.88ID:yDQeZmLh
英語圏の人間じゃないから感覚がわからなかった

leave left left

leaveであってleftじゃないってこった
0656デフォルトの名無しさん
垢版 |
2017/08/01(火) 23:04:17.70ID:ZyMYFMmz
>>653
それは君のオレオレ正義仕様でしかないだろ。
世の中にはそうでないものもあるってことさ。
有名なのはPHPの三項演算子が左結合とか。
http://y-uti.hatenablog.jp/entry/2013/03/10/101020

仕様ってのはそう決められていれば仕様であって、
効率的でない/直感的でない/矛盾しているとかは別の話。
とはいえ、これらの場合は糞仕様と呼ばれることになるが。
0657デフォルトの名無しさん
垢版 |
2017/08/02(水) 00:04:23.74ID:hty1cPip
だからオレオレとかそういう話じゃなくて、全体の仕様に矛盾があるかないかのっていうロジカルな問題なのw
好みが入り込む余地なんかどこにもないってのw

いってるそばからこれ>>646だね。
まさにバカの壁
0658デフォルトの名無しさん
垢版 |
2017/08/02(水) 00:32:50.52ID:hty1cPip
ボクシングでも何でもいいけど、排他的にしかタイトルホルダーになれないとしたら、
タイトルホルダーが誰もいないのは問題ないけど、同時に二人がタイトルホルダー
になるのはまずい。

だったら、「ダイトル返上」イベントの前に「タイトル獲得」イベントが発生する仕様は
破綻してるに決まってるじゃないの
0659デフォルトの名無しさん
垢版 |
2017/08/02(水) 00:37:07.47ID:FVLt41mC
>>658
破綻してはいないんだよ。
数学が得意なつもりだが実は馬鹿な人には分からないのだろうけど。
0660デフォルトの名無しさん
垢版 |
2017/08/02(水) 00:41:26.26ID:hty1cPip
まあバカの壁の向こう側の人に何言っても無駄だからこれ以上はどうぞお好きに。
自分の同僚にこういう人いなくてよかったw
0661デフォルトの名無しさん
垢版 |
2017/08/02(水) 00:47:00.95ID:hty1cPip
つーか、自分の学校時代の成績考えりゃ自分が数学脳の持ち主かどうかなんて
だいたい見当つくとおもうんだけどねw

どう考えてもロジカル思考が得意なタイプと思えんが、その自信はどっから来るのかねw
ネトウヨと同じ、抑圧された劣等感としての自己陶酔か
0663デフォルトの名無しさん
垢版 |
2017/08/02(水) 01:29:41.48ID:FVLt41mC
>>661
むしろお前の自信の方が不思議だわ。
とはいえ罵倒しあうのも意味無いから、片をつける勇気があるのなら、具体的に、
・○○のケースでEnter->Leaveの時には『絶対に』実装できない
というのを見つけてみろ。

それが確かにどうにも実装できないのなら、Leave->Enterの順でなくてはならないことになる。
それを俺らの誰かが実装できた=解けたなら、君が馬鹿だという証明になる。
分かりやすいだろ。

俺はそういうのは無いと思っているから、
・君が何も言えなかったら俺の勝ち
・君が言った物を誰かが解けても俺らの勝ち
・君が言った物を誰も解けなかったら君の勝ち
となる。では出題よろしく。


>>654
ちなみにテストコードを書く元気があるのなら、
・フォーカスがある(Enter済)ControlをRemoveで親から剥がしてみな。
確認してないが、多分Leaveは発生しないと思う。
というかHTMLではそう。
だからガシガシ動的に書き換える場合は基本的にカウントするのは危険だったりする。(>>644)
この場合にLeaveが発生した方が楽なのかはよく分からん。
ただそれ以前にFormはHTMLとは違って
動的にControlを剥がしたりするように設計されてはいないから、
この辺をつつけば矛盾はボロボロ出るはず。
とは言っても、そういう使い方をするな、でしかないが。
0664デフォルトの名無しさん
垢版 |
2017/08/02(水) 01:30:38.42ID:9QC/HzqE
プログラムって国語だろ必要なの
仕様読み書き
言語読み書き
0665デフォルトの名無しさん
垢版 |
2017/08/02(水) 02:27:05.38ID:i1VhoxA9
>>663
何か訳のわからないこと書いてるけど、

> ・○○のケースでEnter->Leaveの時には『絶対に』実装できない
> というのを見つけてみろ。

そういうケースがあるとか、そんな話誰もしてないでしょ。
ばっかじゃないの本当。

仕様の整合性がないと言っている。
言っちゃ悪いけど、こんな簡単な話が理解できないのは、たぶんこのスレで君ともう一人ぐらいだよ。
0666デフォルトの名無しさん
垢版 |
2017/08/02(水) 02:41:15.20ID:i1VhoxA9
なぜ重箱の隅をつつくような話のように見えても論理的な整合性が重要かって、
普通のプログラマは、他人の作ったフレームワークであってもきちんと論理的に
整合性のある仕様になってるはずだと期待してそういう前提でコードを書くからだ。

論理的な整合性がない、仕様バグのあるフレームワークであっても
必ずしもそれが原因で実現できない処理が存在するとは限らない。
問題はそれが直感的でないこと。
プログラマの期待に反する仕様がバグを湯初すること。
0667デフォルトの名無しさん
垢版 |
2017/08/02(水) 02:55:20.71ID:i1VhoxA9
まあ、さすがにこのレベルの話が理解できないのが多数派とは思えないので、
誰か何か言ってやってよw

どうしてLeaveよりEnterが先に発生するような仕様は仕様バグなのか。
これがそんなに難しい話かねえw
言っちゃ悪いけど、頭悪い奴の思考回路って分からん。
0668デフォルトの名無しさん
垢版 |
2017/08/02(水) 03:01:13.24ID:FVLt41mC
>>665
なんだ論点ずらしで逃げるのか。
ネトウヨを嫌っているのだからパヨクなんだろ?
まあパヨクが馬鹿で口だけなのはいつもだが。

俺は最初から.NETの仕様を問題にしている。
お前は「オレオレ仕様」と違うから勝手に「仕様バグ」だと喚いている。(>>638)
俺たちは「それは違う。バグではない」と言っている。(>>640,645)
理由は、それでも組める=仕様として成立する範囲だから。
お前は馬鹿だからそれが分からず、俺らが組める範囲でも無理だと思っているだけ。
だったら証明してみろ、と言ったら君は逃げた。典型的なパヨクだね。

>>666
論点は、「仕様バグかどうか」であって、「いい仕様かどうか」ではない。
お前はそれすら分からない馬鹿パヨクのようだが。

とはいえ君は本当に馬鹿だから、これでも通じないだろう。終わりでいいよ。
0669デフォルトの名無しさん
垢版 |
2017/08/02(水) 05:35:10.79ID:1rb6fE8N
夜中の3時にこんな長文投稿している方が
社会的に破綻した人間だと判断される可能性が高いから安心しとけ
0676デフォルトの名無しさん
垢版 |
2017/08/02(水) 23:22:53.88ID:yCU00B7G
Enterイベントが発生した段階でフォーカスはまだ移動してない筈だし
Enterイベントが発生したからといってフォーカスを得る保障も無かったはずだけど

あとコントロール間のイベントの発生順序の保障も無かったと思ったがな
0677デフォルトの名無しさん
垢版 |
2017/08/02(水) 23:36:37.48ID:NxzTdQJw
>>676
だから試せと言ってるんだけど

思い込みはよくないそれと
上に出てたイベント発生順をよく見て理解できないところを埋めないと

おまえらに大ヒントだけどVのつくイベントを実装してから1テストしろ
そしたらleaveより先にenterが発生してはいけない理由がわかる
0678デフォルトの名無しさん
垢版 |
2017/08/02(水) 23:49:30.35ID:yCU00B7G
>>677
>思い込みはよくない

たしかに
たまたまテストした範囲でそうなったから保障されてるという
思い込みはよくないな
0680デフォルトの名無しさん
垢版 |
2017/08/03(木) 00:02:17.81ID:htG5iQYE
ライブラリのソースを呼んでも、現在の実装がそうなっているというだけで
それが仕様として保障されてるかどうかとは別問題だけどな

まあ、現在の実装で確認できればほぼ問題ないケースがほとんどではあると思うが
0681デフォルトの名無しさん
垢版 |
2017/08/03(木) 00:06:05.76ID:c/ifKON2
保障以前にそれが何を意図してるのかを理解できなければ意味がない

leaveより先にenterが発生してはいけない
0682デフォルトの名無しさん
垢版 |
2017/08/03(木) 20:33:39.14ID:4LsbjqBs
ID:fngH3Ate 毎年恒例の釣りに馬鹿が釣られてるw
0686デフォルトの名無しさん
垢版 |
2017/08/06(日) 00:47:39.95ID:SnOBl72n
URIのパラメータって
0687デフォルトの名無しさん
垢版 |
2017/08/08(火) 08:49:43.39ID:/0ePqhWL
なんでいつもトンチンカンな議論が永遠に続くのかね。

そもそもMSDNに書かれてるイベントの順序は
ある一つのコントロールのフォーカスが当たってから
(もしくはアクティブになってから)
抜けるまでのイベント順が書かれてるだけで
コントロール間のイベントの推移が
書かれてるわけじゃ無いよ。
なんでleaveから始まらなきゃあかんのよ。

それが読み取れないのがそもそも
プログラマとしての適性が云々カンヌン…

テキストボックスのenterなどでボタンをvisible(テキストボックスのリサイズ?)、
ボタンのpressとleaveなどでボタンのhiddenとかテキストボックスのリサイズとしないから
コントロール間のイベント順なんて言う実装依存や環境依存に頼ることになって、
いらんバグの元をこしらえることになる。
0695デフォルトの名無しさん
垢版 |
2017/08/08(火) 12:14:14.78ID:oWXmYmGG
フォームアプリケーション作ってるとついついフォームのクラスに全部書き込んでしまうんですが、クラス分けの基準というか、指針はありますか?
0696デフォルトの名無しさん
垢版 |
2017/08/08(火) 12:55:26.31ID:nFsV2IUX
>>695
難しく考えない。
UIがWPFになってもUWPになってもそっくりそのまま使いまわせたらうれしいよね?

逆に言うと、そうなってないなら考え方が間違ってる
0697デフォルトの名無しさん
垢版 |
2017/08/08(火) 13:24:39.29ID:cZXE4hdD
それは違うんじゃないか?
普通のwinformsのアプリをMVVMにも使いまわせるように
なっているのはある意味おかしい

M層だけ使いまわせることになってるけど
実際はモデルの仕組みをMVVMよりに設計したりしないといけない
つまりMVVM知ってないとwindowsformでアプリ作れないって変なことになる

そういう目的なら最初からWPFなりUWPなりで作れと思う
0699デフォルトの名無しさん
垢版 |
2017/08/08(火) 13:37:56.15ID:cZXE4hdD
質問者のレベルがわからないから答えられません
というのはやめといて
基本的に自分で糞コードいっぱい書くしかない

わからないときは人のソース見たりしてみたりもいい
その中でもクソだなって思ったり自分でも使いたいところがあると思う

そういった成長の後でリファクタリングに進めばいい
同じコードが何度も出てきたらメソッド化してみたり(VSにメソッド抽出機能があるので楽)
0700デフォルトの名無しさん
垢版 |
2017/08/08(火) 13:38:50.16ID:nFsV2IUX
>>697
一般的なMVVMが本当にそうなってるなら(なってないと思うけど)。それはMVVMが間違ってる
0703デフォルトの名無しさん
垢版 |
2017/08/10(木) 09:00:34.80ID:EsQl4Iyt
今時ビジネスロジックなんか全部バックエンドにあるんだからフロントが何だろうがWeb API経由で完全疎結合だから問題にならないよ
あえて全部クライアントに置くような前時代的な設計を採用する場合、
それはアプリがクライアント端末のGUIやハードウェアに密接に依存していることが多いので
差し替えなんか考慮して作るのはそもそもナンセンスだ
0705デフォルトの名無しさん
垢版 |
2017/08/16(水) 23:47:55.42ID:ey68s8sH
AutoMapperのInitializeがめんどくさいんだけど
初期化なしで使えるマッパーライブラリなんかないかい?
0706デフォルトの名無しさん
垢版 |
2017/08/16(水) 23:55:58.50ID:6BrFx9Fk
https://github.com/AutoMapper/AutoMapper/blob/master/README.md
AutoMapper知らなかったけどこのページのInitializeのことでいいの?
この程度ならリフレクションでやれば一発だろ
ジェネリックの代わりにTypeオブジェクトを引数に渡せるオーバーロードがあるのかは知らないけど、
それが無くてもMethodInfo.MakeGenericMethodで型引数を動的に指定できるよ
0707デフォルトの名無しさん
垢版 |
2017/08/19(土) 16:01:47.79ID:/HXXvel3
最近C#の勉強を始めました
プログラミングも初めてです
return ◯◯
で結果を返すという事について教えてください

画像のstring resultString="";の部分のresultStringという変数にresultString="グー";という文の値を代入するまでは分かるのですが、1番最後の行の結果を返すというreturn resultStringはどこに値を返すのでしょうか?

1番上に記述されているprivete string getComputerHand();というメソッド?にグーやチョキなどの値を返しているのでしょうか?

初歩的な質問ですいません
http://i.imgur.com/CBE1y8L.jpg
0708デフォルトの名無しさん
垢版 |
2017/08/19(土) 16:07:36.81ID:QD9DssYz
>>707
その画像の部分が結果を返すための一つのメソッド
他の部分で例えば
string str=getComputerHand(); //この場合はstrに結果の文字列が入る
みたいに書いてそのメソッドを呼び出す。
0709デフォルトの名無しさん
垢版 |
2017/08/19(土) 16:21:16.67ID:/HXXvel3
>>708
レスありがとうございます
この画像でいうとresultString=◯◯の結果の値が
getComputerHand();
というメソッドに返されていて

意味としては
getComputerHand();=グーorチョキorパー
というような解釈でよいでしょうか…?


また重ねて質問なのですが
string resultString=" " ;
の文で" "を使うのは何故でしょうか?
格納先がstring resultStringとstring型で指定されているので要らないのかと思っていました
0710デフォルトの名無しさん
垢版 |
2017/08/19(土) 16:44:58.20ID:QD9DssYz
>>709
メソッドに返すんじゃなくて「メソッドが返す値」
>getComputerHand();=グーorチョキorパー
だいたいあってる
>string resultString=" " ;
string resultString="" ; //半角スペースも何も入れない初期化
値が無い(未参照)の変数は返せないので必ず初期化が必要。これはコンパイラとかの制限
その程度だとここで聞くより自分で動かしてみたほうがダントツに早く身につく
0716デフォルトの名無しさん
垢版 |
2017/08/19(土) 22:01:48.42ID:3nnv/bQ1
webBrowser1_DocumentCompleted はブラウザが完全に表示される直前で呼び出される
と思いますが、完全にブラウザが表示した時を知るにはどうしたら良いですか?
0720デフォルトの名無しさん
垢版 |
2017/08/21(月) 21:19:22.50ID:U+o1ClZt
yes and noだね
厳密に言えばあるが、恐らく>>717が想定しているような意味での
特権的なアキュムレーターは無くして直交性の高いデザインにしよう、
っていうのがモダンな(っていっても40年ぐらい前からだと思うけどw)考え方じゃないの?

知らんけど
0724デフォルトの名無しさん
垢版 |
2017/08/22(火) 18:32:27.69ID:hdluVQxJ
.Net Coreは良くなりましたか?
0726デフォルトの名無しさん
垢版 |
2017/08/24(木) 00:18:50.06ID:z2dH8u8+
C#erはタスク管理どうやってんの?
gradleみたいなツールが欲しいんだがdotnetランタイムだけで動作する類似品ツールはないのか
0730デフォルトの名無しさん
垢版 |
2017/08/24(木) 18:34:51.61ID:RXm0c/8O
>>729
cakeの採用例はIdentityServer、omnisharp-roslyn、NUnitと有名どころでも増えてきてるし、覚えといて損はないよ
0732デフォルトの名無しさん
垢版 |
2017/09/02(土) 11:54:03.28ID:O1j4weut
注文明細の税込価格を計算して注文ヘッダごとに合計する
合計値が注文ヘッダに設定されている注文上限価格を超えている注文ヘッダを抽出する
抽出した注文ヘッダを注文日順に順位を付ける
順位が100位から200位までの注文ヘッダを抽出する
抽出した注文ヘッダに注文明細を内部結合する

EFでこういうクエリ書ける?
速度チューニングできる?
0738デフォルトの名無しさん
垢版 |
2017/09/02(土) 14:47:48.25ID:bF0cAHIp
その程度なんです。2chに仕事を丸投げしようとしたあなたがアホだったんです。
もしあなたがSIerならMSのサポートにチューニングに関する質問はするべきです。
0739デフォルトの名無しさん
垢版 |
2017/09/02(土) 14:59:00.54ID:O1j4weut
ではこのスレは終わりですね
簡単な質問にも答えられないようでは存在する必要ないですよ
0741デフォルトの名無しさん
垢版 |
2017/09/02(土) 15:20:05.79ID:O1j4weut
いえいえ
あなたほどではありませんよ
あなたの終わってる感はまさに別格です
0743デフォルトの名無しさん
垢版 |
2017/09/02(土) 16:17:03.28ID:bF0cAHIp
馬鹿にしたり煽ったら教えてくれるだろうというみっともない期待は無駄だろうな。

仕事のことで、一人でチューニングもできないスキルレベルなら素直にMSに聞きたまえ。

これが相談室でのマジメな回答だ。チューニングは簡単ではない。経験が必要だ。
なのに経験しようとせず丸投げするおまえは開発に向いてない。別格のアホ。
0744デフォルトの名無しさん
垢版 |
2017/09/02(土) 16:26:58.13ID:Fj2dIxIY
土曜に休日出勤してまで仕事やってんだ
あんまイジメないでスルーしてやれ
0747デフォルトの名無しさん
垢版 |
2017/09/02(土) 17:10:42.94ID:HjwTbkJP
なんか例によって質問者に小姑みたいにクドクド絡んでる
バカが大量に湧いてるけど、こういう馬鹿な連中ってそういう自分が自分で嫌にならんのかね。
哀れというか人間的に終わってるというか
0751デフォルトの名無しさん
垢版 |
2017/09/02(土) 18:49:07.18ID:T/CezPj/
LINQやTask絡みの質問してもまともな回答もらえないしな
このスレは.NET2.0時代の人多そう
0757デフォルトの名無しさん
垢版 |
2017/09/02(土) 19:32:27.30ID:SvMhViqK
質問に答えられないけどできるって言ってしまったお
どうするお
そうだ!相手を口撃してうやむやにするお!
俺って天才だお^_^

まあこんなところでしょうね
0758デフォルトの名無しさん
垢版 |
2017/09/02(土) 20:31:51.91ID:Vm2KDGbo
ID変わった。俺がデキルと言ったんだが、あれを見てどこにデキナイ要素がある?
敢えて言えば一番難しいのは速度チューニングだけど条件ないからどんだけ遅い結果になってもチューニングしたといえばおkだしできるだろ
0759デフォルトの名無しさん
垢版 |
2017/09/02(土) 21:04:59.93ID:KSbwYPK0
質問じゃなくて単なる仕事の丸投げだもんな。
そんなのにコード起こして答える奇特な人は滅多にいないだろ。
宿題スレでも行った方がまだ良いんじゃないか。
0760デフォルトの名無しさん
垢版 |
2017/09/02(土) 21:29:10.36ID:/nmV1Veo
>仕事の丸投げだもんな
仕事の丸投げでもいいと思う。
おもしろそうならやってみるだけだし、おもしろそうじゃなかったら放置。
ただそれだけ。
0761デフォルトの名無しさん
垢版 |
2017/09/02(土) 21:47:11.46ID:tR4oKf4K
C#始めるのです。
コンパイラはマイクロソフトが無料で配ってるなんちゃらって統合環境。

んで、検索とかしてやってみたらCUIとかは普通にできそうだったけど、
GUIがいまいち作り方わからんかった。
と言うか何と言うやつの中の何という奴を使えばいいのかすら分からんから検索のしようもない。


そこでGUIとかその辺のアプリ的な感じのやつは本に頼ろうと思うので、おすすめの本教えてください。
0762デフォルトの名無しさん
垢版 |
2017/09/02(土) 23:01:57.02ID:PfNbROPa
こうかな
たぶんもっとスマートな書き方があると思うけど
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
)
0765デフォルトの名無しさん
垢版 |
2017/09/02(土) 23:47:52.46ID:w/8WFsta
>>762
グルーピング弄ればinを回避できるよ

問題はこれをEFでどう書くの?
チューニングはどうするの?
ってとこなんだけど
SQL書いた方が生産性高いよなぁ
0766デフォルトの名無しさん
垢版 |
2017/09/03(日) 01:48:04.82ID:f9fpJevd
むしろVSいれればGUIのほうがまんまやればいいだけじゃないのか?
今時はVBAすらやったことないのが普通なんかね
0770デフォルトの名無しさん
垢版 |
2017/09/03(日) 15:24:32.41ID:jdcIxspg
そーいやWPF関連はググると大抵MVPのサイトがヒットするわ
なるほどそういうことか
0771デフォルトの名無しさん
垢版 |
2017/09/03(日) 16:04:03.56ID:0sJDT6fH
WPFさえなければもっとC#が普及してて
C#の地位が高かったかもしれないと思うと悔しい

MVPの人たちはどう思ってるんだか
0772デフォルトの名無しさん
垢版 |
2017/09/03(日) 16:33:39.93ID:lr6Mo9Zf
MVPの連中はとっくにWebへ移ったよ
C#ってWeb開発の言語としては意外と普及してるんだぞ
0774デフォルトの名無しさん
垢版 |
2017/09/03(日) 17:20:41.31ID:3gHqT14e
WCFがサーバーアプリで活躍してるのかな?
0775デフォルトの名無しさん
垢版 |
2017/09/04(月) 08:10:46.21ID:MfpzE0zt
Winアプリは最終的に一番難しいのはGUIだよ
最初は細かい事分からず適当配置して出来た気分でいるんだろうけど
あとからあとから不具合が見つかって修正する事になる
GUIは環境によって見た目や動作が変わってしまうのでデバッグで再現させる事が
困難な事も多い
0777デフォルトの名無しさん
垢版 |
2017/09/04(月) 18:19:57.89ID:LsDphsoK
自分の体験した少ない範囲が全ての世界なんだろうな
初心者がちょっと自信つけ始めたころなんだろ
0779デフォルトの名無しさん
垢版 |
2017/09/04(月) 18:41:44.52ID:CRF6xnAl
ハマるとキツイのはマルチスレッド絡みかなぁ
何せ落ちた所のプログラムが正常だったりするからな
mallocのサイズ間違ったバグは忘れないわ
0781デフォルトの名無しさん
垢版 |
2017/09/04(月) 19:10:43.88ID:2WJ6m4B/
揚げ足取るのは建設的じゃないと思うのであえて>>775の意図を忖度してみる

どうしても非ユーザーコードの比重が大きくなるから、
どうしてもバグを回避するバッドノウハウ的なものが必要になりがちって意味では確かに「難しい」かもね。

Win Formなんか2.0で追加されたコントトールバグてんこ盛りだよね。

自分全然触ってないけど、Webなんか今でもあいかわらずバッドノウハウの塊でしょ?
0785デフォルトの名無しさん
垢版 |
2017/09/04(月) 20:15:48.40ID:ws3TkDjE
>>784
答えれば済む話でしょ。いちいち幼稚園児みたいな低脳煽りはいらないから知ってたら教えてよ。
0789デフォルトの名無しさん
垢版 |
2017/09/04(月) 20:28:36.51ID:3+O8Ku+c
>>779
> 何せ落ちた所のプログラムが正常だったりするからな
これはシングルスレッドでもメモリーをぶっ壊すとかすると発生する
マルチスレッドのバグは再現性がなかったりするから厄介
何度も痛い目にあったから日頃からできる範囲でトレース入れる癖がついたわ
0791デフォルトの名無しさん
垢版 |
2017/09/04(月) 20:33:56.34ID:3+O8Ku+c
>>785
横からだけど普通に考えたら

追加されたコントロール(は)バグてんこ盛りだよね

だろ
あえて煽るほどの話には見えん
0794デフォルトの名無しさん
垢版 |
2017/09/04(月) 21:01:32.04ID:IabL/aby
datagridviewのチェックボックスの挙動がおかしいくらいしか思いつかないけど、てんこ盛りってほどバグが放置されているとは思えない
バグがあったところでwinFomsで組むのならそこを何とかするしかないしどうでもいい
コントロール周りの不具合なら>>780の通り目に付くからすぐわかるしな
0795デフォルトの名無しさん
垢版 |
2017/09/04(月) 21:12:21.96ID:7ymyOIx0
コントロールにバグというか使用上の注意なんていくらでもあるだろ
例えばカレンダーだと何も考えずに配置して表示してるとこんな風に表示がおかしくなる
ttps://i.imgur.com/8dX0KcJ.png
0797デフォルトの名無しさん
垢版 |
2017/09/04(月) 21:41:45.10ID:7ymyOIx0
「これは仕様です」ってならそれは仕様の不具合だから、使用上の注意もバグも似たようなもんだよ
0799デフォルトの名無しさん
垢版 |
2017/09/05(火) 01:16:35.06ID:nPfvfHCk
誤植を指摘されて発狂自演とか底辺PGらしくて微笑ましい
0802デフォルトの名無しさん
垢版 |
2017/09/06(水) 17:02:54.42ID:WyFA8tpv
C#を独学で勉強し始めました
プログラミング自体初めてです

超入門用の本を2冊買って最後まで読み終えたのですが、勉強を進めて行く上でオススメの本などはありますか?
0804デフォルトの名無しさん
垢版 |
2017/09/06(水) 17:23:53.50ID:RXvp/CNY
本読まなくてもプログラムのスキルは身につくけど本読むだけではいつまでたっても上達しない。料理みたいなもの
0807デフォルトの名無しさん
垢版 |
2017/09/12(火) 09:02:11.74ID:EOOe72TQ
○次受けが多いほど退場率が早くなる。高くなる

直受けの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) クラウドテック プログラマーズ
0810デフォルトの名無しさん
垢版 |
2017/09/16(土) 10:52:43.21ID:dNmf7aOR
道具とか本とか形だけ揃えて満足する人は多い。なぜかそこまでが目的な人も
0811デフォルトの名無しさん
垢版 |
2017/09/16(土) 14:15:15.65ID:3905ntF4
自分も手始めに色々(書籍)買い揃えてしまうほうだけど、スキルアップした時は既に旧版扱いで入手困難だったりするから身の丈合わなくても旬なうちにハードル高い物も買ってしまってる
0812デフォルトの名無しさん
垢版 |
2017/09/16(土) 15:28:11.94ID:QE5Dhgdp
独習C♯軽く読んで簡単な動かし方覚えてから、とりあえずDBやライブラリ等色々ネットで調べながら動くもの作ってたけど
後から修正しようと思っても一から作り直した方が早そうなプログラムを量産してます

SEやPGでも無いし、自分用にしかプログラム作らないので特に納期とかも気にしなくていいけども
生産性を上げれるなら上げたいと思ってます
皆さんは後から修正するかもって思った時はどんな事に気をつけてますか?
0814デフォルトの名無しさん
垢版 |
2017/09/16(土) 19:31:38.33ID:rWX0O503
>>812
>>813 のそれぞれをインターフェースで結ぶ

…でもやりすぎるとかえってめんどくさかったり…
そのあたり上手くやれるのが経験だったり、才能だったりするんだろうな
と思う俺も趣味プログラマ
0815デフォルトの名無しさん
垢版 |
2017/09/16(土) 19:40:35.37ID:DjFVi2hv
できるだけ汎用的に使えるように>>813だな
今回使うための用途じゃなくて、ほかにどんなことに使えるか考えつつそれも視野に入れてクラス組む
そしてできたのは自分用のライブラリとして保存
0816デフォルトの名無しさん
垢版 |
2017/09/16(土) 19:41:42.49ID:QE5Dhgdp
>>813
>>814
クラスとインターフェースですか
コレクションとか凄いなぁって見ても、自分でインターフェース作った事無いですね・・・

一応、クラスは分けて作ってますが
クラスが増えすぎて、どれで何してたのか分からなくなってくる管理状況です
抽象化も出来てないので、似たような仕組みが分散しすぎてて、なんか勿体無いところも
かといって一部使いまわそうとするとクラスの数珠繋ぎで依存性が出てくるので管理が大変に
0817デフォルトの名無しさん
垢版 |
2017/09/16(土) 19:52:54.47ID:Zk6Irz58
まあ、あんまり考えすぎてもしょうがないと思うけどね
これがベストと思った書き方も、将来スキルがあがったらもっとベターなやり方
思いついたりもするし
とりあえず考えとく事は、クラスだなんだというよりももっとシンプルに、個々のパーツ間の
依存関係を極力シンプルにして、コードの見通しをよくしてメンテしやすくすること
他のプログラムに流用できそうな部分は、実際独立したパーツとして流用できるような
作りにしておくことくらいかな
0819デフォルトの名無しさん
垢版 |
2017/09/16(土) 20:10:04.77ID:QE5Dhgdp
>>817
実際、部分的に使いたい時に前はこの書き方してたけど、今はこっちの書き方覚えたからこっちで少し最適化するかって感じで書いてたりしますね
そんな事しないで共通化出来るように抽象化したいですが・・・

>>818
staticでそれやってましたけど、なんか違うなぁって感じでファイル読み込みや書き込みはそのままで、ソートやループ処理での計算などはクラス毎に埋め込んでますね・・・
それとも自分が考えてる様なコモンクラスと別物ですか?
0820デフォルトの名無しさん
垢版 |
2017/09/17(日) 18:17:33.06ID:PsKGEjCI
>>812
> 後から修正しようと思っても一から作り直した方が早そうなプログラムを量産してます
これを止めて無理にでも流用するようにすれば、何が問題なのか体感できる。
それを次に生かせば、流用しやすい構成で組めるようになり、生産性が上がる。
0821デフォルトの名無しさん
垢版 |
2017/09/22(金) 15:17:35.43ID:lkenNsuH
オブジェクト指向でいう再利用性って、新しいものを作るときに
既存のソースファイルやDLLをコピペして使うというのとはちょっと意味合いが違うんだけどね
端的に言えば、同じ役割のクラスは同じクラスであるべき、ってことだ
あまり実感ないだろうけど、大規模な開発になってくると必ずそれが崩れてくるんだよ
0822デフォルトの名無しさん
垢版 |
2017/10/11(水) 22:06:03.34ID:CxvWYCvq
C#でPDFファイルのテキストやそのテキストに張ってあるハイバーリンクのURLを
取り出したいんだが、どんな方法で可能でしょうか?
0825デフォルトの名無しさん
垢版 |
2017/10/11(水) 22:24:38.71ID:CxvWYCvq
>>824
普通に開くってどうやって開くの?
サンプルコード教えて。
0826デフォルトの名無しさん
垢版 |
2017/10/11(水) 22:30:16.87ID:jolrOeyH
>>825
普通にバイナリファイルとして開く
コードも仕様もそこらにあるからぐぐれ
もともと印刷用だから癖はあるが簡単に読めるぞ
0829デフォルトの名無しさん
垢版 |
2017/10/12(木) 15:07:41.48ID:o8TlX9Z0
>>822
1. そのままgrep (e.g. grep -a “http://www” pdf-file)
2. pdfgrep
3. pdftotext/pdftohtmlしてgrep

C#関係ないけど用を足すには十分
ハイパーリンクのurlとlink textを紐付けて抽出したいならpdftohtml
0832デフォルトの名無しさん
垢版 |
2017/10/12(木) 16:03:05.22ID:o8TlX9Z0
>>830
F#をマスターしてF#を宣伝する

所詮マウンティング合戦だから
新しいマウンティングで対抗しよう
0834デフォルトの名無しさん
垢版 |
2017/10/12(木) 20:17:41.14ID:rmq6lCFL
>>830
WindowsならC#を推奨するのは間違っていないが?
0835デフォルトの名無しさん
垢版 |
2017/10/12(木) 20:25:21.77ID:6wxZWyrC
>>834
おまえみたいに読めない奴がうざいって意味であって、C#自体に文句を言ってるわけじゃないでしょ
0836デフォルトの名無しさん
垢版 |
2017/10/12(木) 20:29:17.66ID:rmq6lCFL
>>835
自分でC#と言ってるのに、その人のことをC#と表現するからおかしい。

そんな解釈が難しいやりとりが普通の人間はプログラミングなんてやめた方がいい。
0837デフォルトの名無しさん
垢版 |
2017/10/12(木) 20:35:24.74ID:QAc7UiBI
そもそも、たかが1言語についてそこまで固執したり拒絶するのって、病的だよ。
たかが道具に、なんか人生を預けるレベルで考えてるのがキモイ。
自覚がないのが可哀想。病院で治るのかしらんけど。
0840デフォルトの名無しさん
垢版 |
2017/10/12(木) 20:52:00.07ID:ILNtvg14
>>837
単にC#推奨してるだけで固執とか言い出す奴の方が病的じゃね?
C#使えなくて解雇でもされたのかよ w
0841デフォルトの名無しさん
垢版 |
2017/10/12(木) 21:04:55.84ID:cp/CfqWL
かなり良い言語だと思うんだけどなあ
0845デフォルトの名無しさん
垢版 |
2017/10/13(金) 00:12:46.20ID:9ootMMuk
盛り上がってると思って、またvarかと思ったらバカだった
0846デフォルトの名無しさん
垢版 |
2017/10/13(金) 00:42:33.07ID:/02if2W5
varを採用してからというもの、C#は今はもうマイナーオワコン言語だからな。
マカー同様スレチで普及したがるのも無理はない。
0848デフォルトの名無しさん
垢版 |
2017/10/13(金) 02:27:14.63ID:DqOAXvoj
人気の証拠やね
0849デフォルトの名無しさん
垢版 |
2017/10/13(金) 02:51:53.86ID:GlXmqXn2
C#って、普及してる割にgithubのリポジトリ数が少ないと思うんですが、やっぱりサラリーマン向け言語だから趣味でコード書いて公開する人が少ないんですか?
0851デフォルトの名無しさん
垢版 |
2017/10/13(金) 03:30:12.26ID:hGij+Jvi
ここ数年はGitHubランキング的なのを8-10位あたりでふらふらしてるけど
普及している割にというか「そんなもんじゃね?」という感覚だな
0853デフォルトの名無しさん
垢版 |
2017/10/13(金) 07:49:55.20ID:1BwGqO5B
別にネガキャンとかじゃなくて普通の話題として振るけども

俺の周りの(趣味で)C#やってる人間がみんなKotlinに浮気しだしたんだが
そいつら曰く、
KotlinはなんとなくC#的な雰囲気あって良い
って薦めてくる

まだ触ったことないんだけど、実際のとこどうなの?
0854デフォルトの名無しさん
垢版 |
2017/10/13(金) 08:21:22.07ID:0vilsSxc
KotlinはなんとなくじゃなくてC#を名指しでリスペクト(公然と丸パクリ)してる
C#もこれまで拡張を繰り返してきて綻びや変えたいけど互換性の問題で今更変えられない部分が沢山出ているので、
それを全面的に見直して綺麗に整理してある
難点を挙げるとすれば、今のところ全体的には素直で普通な言語にまとまってはいるけど
Kotlinがパクリ元のC#やScalaによらずリリース後に独自に入れている部分については
節操がなくあまりセンスが良くなくてScala化の兆しが見えていることかな
あの調子だと結局はScalaみたいに破綻すると思うよ
0856デフォルトの名無しさん
垢版 |
2017/10/13(金) 08:41:24.05ID:0vilsSxc
C#が優れてるのは、独自路線の大きな拡張を長期にわたって繰り返し続けているのに
大きな破綻なく複雑にもなりすぎず言語を維持できているという点だ
他の言語の悪いところを見つけるのは簡単だが、トップランナーとして新しいものを作っていくのは遥かに難しいんだよ
その意味ではKotlinは粗探しは非常に上手いが、後者のセンスはC#のように天才的なものは感じないね
0859デフォルトの名無しさん
垢版 |
2017/10/13(金) 11:05:21.86ID:iKXV2/QB
linqのクエリ構文が出た時はどうなることかと思ったが、
メソッド構文が出て良かったよ
0862デフォルトの名無しさん
垢版 |
2017/10/13(金) 12:21:05.14ID:rXsVXlwO
VSCodeは使いやすすぎてびっくりする
TypeScriptでインテリセンスが効くのはわかるが、型書いてない普通のJSでも余裕で効く
エスパーかと思うレベル
このままいくとVSもVSCodeに吸収されそうだね
0864デフォルトの名無しさん
垢版 |
2017/10/13(金) 12:41:01.56ID:hGij+Jvi
VSもVSCodeに吸収されそうの意味がさっぱりわからんが
フォントレンダリングだけはちゃっちゃと同じにして

ちゅーかもういい加減Windows全域でフォントのヒンティング切っとけや
本来にもう少しマシなレンダリングできるのに完全に癌になってるじゃろ
0865デフォルトの名無しさん
垢版 |
2017/10/13(金) 13:12:20.54ID:n8HgMJNJ
やる気があればVistaの時点でやってただろうねw
どうしてMSみたいな大企業が作ってるOSがフリーのLinuxより酷い品質なのかちょっと理解できないけど
0866デフォルトの名無しさん
垢版 |
2017/10/13(金) 13:17:51.90ID:O16XdCSv
VScodeってそんな魅力的じゃないよ
どちらも使ってるけど総合力じゃ今のVSのほうが数段上

VSCodeも最初と比べるとどんどん起動が遅くなってきてる
0871デフォルトの名無しさん
垢版 |
2017/10/13(金) 16:05:55.56ID:qYIJYs/2
VBとC#なんか変わらんしユーザーというかこの板に変なのがいるだけ
>>869
vsってエディタは聞いたことない
0873デフォルトの名無しさん
垢版 |
2017/10/13(金) 17:50:46.71ID:k6fDlhS2
マルチプラットフォームなwebプログラミング向けエディタ
って触れ込みだったのに今はVSと比較される様になったのか
0874デフォルトの名無しさん
垢版 |
2017/10/13(金) 18:32:29.21ID:KDqUmvjk
言語だけぽこぽこ新しいのがでてくるが、
そろそろ言語+標準クラスライブライというか、.NETやJavaみたいな新しい実行環境でてこねぇかな。
いまなら負の遺産を一掃してもっと素晴らしいやつができるはず
0875デフォルトの名無しさん
垢版 |
2017/10/13(金) 18:38:11.70ID:tXRzEGrt
要は.NETをJVM化すればいいのか?
Coreがもう少し充実すればええんでね?
0882デフォルトの名無しさん
垢版 |
2017/10/13(金) 22:07:27.85ID:6pOkahl4
C#もそろそろ新言語への乗り換えの時期じゃないか
いつまでも残ってるダサい互換性を切ってnot nullとか新しい機能を導入してさ
C#は実験場にすればいい
0883デフォルトの名無しさん
垢版 |
2017/10/13(金) 22:12:20.87ID:/02if2W5
プラットフォームが先細りだから無駄な足掻き。
パソコンは名ばかりでもはやオフコン。業務でしか使われない。
0884デフォルトの名無しさん
垢版 |
2017/10/13(金) 22:32:01.44ID:HAAysV2z
kotlinの読み方って
ことりん
でOK?
0885デフォルトの名無しさん
垢版 |
2017/10/13(金) 22:42:29.74ID:7WqKL+Sr
C#使い始めて何年も経つけど未だに乗り換えようと思うほど使いこなせない
思った通りのもの作れるし
0888デフォルトの名無しさん
垢版 |
2017/10/14(土) 08:13:04.21ID:Sngz5bnk
我流で必要に迫られて始めたものの、汚いいVB6ちっくなコードしか書けない…
キチンとセオリーに則って基礎からやり直したい
とは言え、(どうせ、この先自分以外の誰かがソース開くことなんかねぇだろな…)と思うと、まぁいっか、と逃げてしまう
0891デフォルトの名無しさん
垢版 |
2017/10/14(土) 11:36:43.44ID:iAy6fmRl
目的がきれいなコード書くことならそれに向けて努力すべきだけど
動くものが作りたいならそんなのは遠回り
0893デフォルトの名無しさん
垢版 |
2017/10/14(土) 11:58:17.97ID:QGlvjmmK
オラクルのJavaシルバーに合格した。
C#も勉強したいが少し不安。
似てる部分が多いだけに頭が混乱しそう
0894デフォルトの名無しさん
垢版 |
2017/10/14(土) 16:02:23.40ID:1NT+cnAj
その場で書いて動かして後のこと考えなくていいなら汚いコードでもいいけど
長期的にメンテナンスすること考えたら多少手間でも綺麗なコード書いたほうが結局近道
0896デフォルトの名無しさん
垢版 |
2017/10/14(土) 16:09:34.83ID:F+wwiVHB
>>894
C#なんてすぐバージョンが上がって推奨されてない書き方です、とか
時代についていけない老害とか馬鹿にされるんだぜ。使い捨てのコードを書く言語だよ。
0897デフォルトの名無しさん
垢版 |
2017/10/14(土) 16:11:41.65ID:0bz5HDJB
俺も動くものは作れるけど、汚いコードや一箇所仕様変更すると他の関数にまで影響が出て整備がほぼできないコード量産してるわ

整備不可なコードの山を見て、整備しやすいコードの書き方勉強しようとしてるけど、イディオム本読んだりデザインパターン少し調べてもイマイチ理解が深まらなかった
インターフェイスや継承はまったく使ってなかったけど、最近取り入れようとサンプルコード書いてます
0898デフォルトの名無しさん
垢版 |
2017/10/14(土) 16:26:44.70ID:gHhUphNv
リファクタリング(マーティンファウラー)
エリック・エヴァンスのドメイン駆動設計

C#の本じゃないけどな
0899デフォルトの名無しさん
垢版 |
2017/10/14(土) 17:13:18.55ID:RBWq+qGD
>>896
そんなことないよw

基本メソッドの中なんてブラックボックスで構わんが、
メソッドの切り分け方とか全体の設計方法に影響を与えるような変更なんか
そうしょっちゅうあるわけじゃないから。

2.0以降考えてもジェネリkック、ラムダ式、非同期メソッド、
あと強いて言えばオプション変数、これぐらいしかないでしょ
0902デフォルトの名無しさん
垢版 |
2017/10/14(土) 17:40:04.26ID:ipiotHZI
ジェネリック
ラムダ
var
System.Linq
匿名型
オーバーロード解決の強化
非同期

2.0使うとこの辺りが欲しくなる
0903デフォルトの名無しさん
垢版 |
2017/10/14(土) 17:41:10.18ID:GRARGOD6
最近はC++でさえ、がんがん新しい機能取り入れてるからな
無理やり感は否めないけど
0904デフォルトの名無しさん
垢版 |
2017/10/14(土) 17:42:42.97ID:0bz5HDJB
まぁ実際すぐ動くもの欲しくなったら仕様変更考えない作りにする感じはある
余裕ある時じゃないと設計とか考えないから全然身に付かないけど
大手は分からないけど中小で入ったところは上層はコード共通化したがってたけど、PGはライブラリ各個で作って新機能追加の度に客先別コーティングしてたし、整備性を加えるのはそこそこ手間が掛かるのかなって印象
0905デフォルトの名無しさん
垢版 |
2017/10/14(土) 17:48:33.48ID:ipiotHZI
標準ライブラリとオープンソースをラップしてプロジェクト用のライブラリを作る
作業効率最適化とリスクを考えるとどうしてもこのラッピング作業が必要になる
社内ライブラリに変わったとしてもこのラッピング作業は必要だからプロジェクトの工数は減らせない
それどころかバグの多さやドキュメントの少なさを考えると社内ライブラリは害悪にすらなりうる
0907デフォルトの名無しさん
垢版 |
2017/10/14(土) 18:33:33.69ID:+aeiapeN
>>906
TryParseが最初からout使う前提
refは呼び出し先でデータ加工して返すときに無いと面倒
あとどっちもwinapiとかアンマネージのライブラリのときによく使う印象
0908デフォルトの名無しさん
垢版 |
2017/10/14(土) 18:40:32.10ID:09BRVdeW
あと、2つ以上値を返すときは、今までrefかout使うのが便利だったが
タプルさん新型で、その需要は大分減ったかもしれんね
0909デフォルトの名無しさん
垢版 |
2017/10/14(土) 18:41:14.11ID:wCRGPfd0
俺は綺麗に書こうと努めてるが、他人のすごいスパゲッティコードを見たとき、
ある意味これはこれですごいなと思う。
俺なら発狂しそうだし、こんな長いコードよくメンテできるなと
これはこれですごいなとは思う。
0911デフォルトの名無しさん
垢版 |
2017/10/14(土) 19:08:22.69ID:GDzf5CCz
>>909
同意
多分IQはあいつらの方が高いんだろうなって思う
彼らは複雑なものを複雑なまま扱えるからシンプルに置き換えて考えようって気にならないのかもしれない
0912デフォルトの名無しさん
垢版 |
2017/10/14(土) 19:35:40.73ID:2nqvspLu
メソッドの戻り値によく処理成否のエラーコードと処理結果のオブジェクトや例外情報をプロパティにした自作クラス使っているんだけど、C#7以降はValueTuple使ったほうが楽なのかね
0915デフォルトの名無しさん
垢版 |
2017/10/15(日) 10:21:44.73ID:g/8BaPWP
>>909
そういう人って、書いてから何年もごぶさたなコードだって苦もなく修正できるのかな?
だとすれば無条件に感心するけど
自分も作ってすぐのほかほかスパゲティなら勝手わかってるけど、ごぶさたで冷めた
スパゲティはさすがに細部がどうだったか覚えてなくて、麺をほぐすのに苦労するw
0916デフォルトの名無しさん
垢版 |
2017/10/15(日) 10:34:18.66ID:jiVarmiT
>>915
文系の記憶力を甘く見ない方がいい
あいつら暗記だけで受験や大学卒業まで乗り切ってきたんだぜ
数年前のスパゲティでもここどうなってんのって聞けばちゃんと答えを返してくる
0920デフォルトの名無しさん
垢版 |
2017/10/15(日) 13:55:30.87ID:XWjA+gHr
staticタスクをwhileでずっと回してデータリストのデータを監視しててエラーがあったら注意喚起のフォームを開いたりフォームのラベルを変更したりしたいんだけど
staticだからタスクからインヴォーク使えないし、メインフォームに作ったフォーム開いたりするメソッドをデリゲートしようとしても静的フィールド〜でできなくて詰まった・・・

設計見直したほうがいいレベル?
0922デフォルトの名無しさん
垢版 |
2017/10/15(日) 14:21:36.95ID:uH5IYLUj
>>920
意味不明だから言いたいこと整理して
1ステートメントは短く簡潔に
複数行に分けてもいい
「〜である。」「〜だと思う。」「〜したい。」「〜してくれ。」をハッキリして
0923デフォルトの名無しさん
垢版 |
2017/10/15(日) 14:41:20.38ID:yD0afN8z
静的イベント定義してタスクはそれを発生させる
受け取り側各位はイベントを受けて適当にハンドルする
でいいんじゃね
0925デフォルトの名無しさん
垢版 |
2017/10/15(日) 14:46:56.01ID:XWjA+gHr
□メインフォーム
データリストを保持してる
一定間隔でデータリストをデータベースから取ってきて更新する

□バックグラウンドタスク
メインフォームのコンストラクタで起動する
メインフォームを閉じるまでwhileで動き続ける
メインフォームのデータリストに異常値を見つけたら注意喚起フォームを開く

□注意喚起フォーム
データが異常値だから直せ〜のメッセージが表示してある
オーナーはメインフォーム

バックグラウンドタスクのメソッド上で注意喚起フォームを普通に開こうとしたらクロススレッド〜で開けない
タスク上にインヴォークを記述するのはタスクがスタティックだから使えない
フォームを開く処理をメインフォームに書いてタスクにデリゲート処理を記述するのもタスクがスタティックだから静的なフィールド〜でできない
メインフォームはスタティックじゃないけど作りの問題でタスク側でnewするわけにはいかない

どうやってタスクからイベントを投げてメインフォームでハンドルすればいいか教えてください

>>922
これで理解できる?
0928デフォルトの名無しさん
垢版 |
2017/10/15(日) 15:10:29.08ID:XWjA+gHr
static修飾子知らないってマジモンの素人やん
そら説明しても理解できませんわ

>>923
ありがとう
ちょっと調べてみる!
0929デフォルトの名無しさん
垢版 |
2017/10/15(日) 15:42:51.61ID:6FiFCoKL
バックグラウンドタスクをシングルトンパターンにして、
メインフォームから起動すればいいんちゃうか
0930デフォルトの名無しさん
垢版 |
2017/10/15(日) 15:48:03.42ID:hZRxEBGG
>>925

>バックグラウンドタスクのメソッド上で注意喚起フォームを普通に開こうとしたらクロススレッド〜で開けない
UIスレッドからタスクを実行してるならawaitでUI処理できるよね?
タスク一回終わらしてUI処理してからまたタスク起動する形にすれば簡単だと思う
それかイベントにするか

>メインフォームのコンストラクタで起動する
これって普通?コンストラクタで起動するのはちょっと気持ち悪い
0931デフォルトの名無しさん
垢版 |
2017/10/15(日) 15:54:54.78ID:uH5IYLUj
Formが抱えてるデータを走査してるんだから
Formインスタンスは持ってるんだろ
ならInvokeするだけじゃねえかアホかこいつ
0933デフォルトの名無しさん
垢版 |
2017/10/15(日) 16:05:38.00ID:uH5IYLUj
インヴォーク(FormインスタンスのInvokeメソッドのことでいいんだよな?)を記述できないスタティックなタスク
という記述から一般的な意味でのstaticメソッドではないスタティックなタスクと名付けられたもの固有の事情があることは明らか
なぜなら非UIスレッドで実行中のstaticメソッドからFormインスタンスのInvokeメソッドを呼び出せないということはないからだ
そもそもInvokeは非UIスレッドからUIスレッドに処理を移譲するための機構だ
まずはそこ(スタティックなタスクと呼んでいる何かについて)を説明しろ
0934デフォルトの名無しさん
垢版 |
2017/10/15(日) 16:11:46.40ID:64liGYG7
綺麗なコードって何なんだろうと思う
俺のかいたコードじゃないことは確か

クラス設計もきちんと学んだことがなく
いつの間にか親子関係がおかしくなってそれぞれをコンポジションしたり
よくよく見たらstaticでいいよなって思うものが生えてくる
状態なのか具象なのかが混とんとしてくる

参考にしようと小さなソフトのgithubみたら100行に満たない小さなクラスが100も200もあったりする
どうやってこれの役割覚えて管理してるのかと感心する
0935デフォルトの名無しさん
垢版 |
2017/10/15(日) 16:31:12.04ID:Tx63GDtf
>>934
製作者がクラス図書いてなきゃ
そこで終了な案件

ソースからクラス図を生成するツールがうまく動いてくれればラッキー
動かなかったら地道に書いて見るしかない
0936デフォルトの名無しさん
垢版 |
2017/10/15(日) 16:31:43.29ID:XWjA+gHr
>>930
コンストラクタで起動するのが気持ちわるいのは超同意
でもコンストラクタで立ち上げて常駐する形じゃないとダメー!!!らしいのでしゃーなしでやってる
タスクの処理をUIスレッドでawaitして返り値で処理するのを繰り返す形が正解なのは理解してるんだけど

>>932
ぶっちゃけボタンかタイマーで起動してawait繰り返せば済むしコードも読みやすいし実装も楽だし拡張性も上がるんだけど
「おじいちゃんはバックグラウンドという言葉が大好き」なのでしょうがない
0937デフォルトの名無しさん
垢版 |
2017/10/15(日) 16:34:15.07ID:SUmdrC/e
>>934
小さいクラスはたくさんあっても困らない
見れば何やってるかすぐにわかるから
それに小さいクラスは1つの役割に集中していることが多い(それが良い設計)
なのでクラス名を見れば何をやってるクラスなのか大体わかる

何千行もある巨大なクラスは見てもよくわからない
大抵の場合、様々な役割が1つのクラスに詰め込まれているので、名前も曖昧になる
こういうクラスは1つでもあるとプロジェクトが大混乱する
0939デフォルトの名無しさん
垢版 |
2017/10/15(日) 16:41:28.87ID:SUmdrC/e
>>936
そもそも繰り返すのは正解じゃない
入力系イベントで同期的に検証すればいいだけの話
今回の場合は入力ではなくデータ取得なので取得したあとにデータを検証ればいい
検証なんてほとんど時間がかからないんだから非同期にする必要はない
データに変化がないのに何度も繰り返しデータが正しいか検証したってしょうがない
0941デフォルトの名無しさん
垢版 |
2017/10/15(日) 16:46:24.51ID:64liGYG7
俺が見たのは何とかジェネレーターというの沢山あるものだった
AジェネレーターがBジェネレーターをつくりそのクラスからCジェネレーターが出来て…と
とてもとても理解不能だった
なぜなんとかジェネレーターが必要なのかどうかがわからない
0942デフォルトの名無しさん
垢版 |
2017/10/15(日) 16:48:21.34ID:eZM6bYju
コンパクトなクラスが読めないのは能力云々より
設計か命名の問題だと思う
0943デフォルトの名無しさん
垢版 |
2017/10/15(日) 16:49:26.63ID:Tx63GDtf
>>940
そういう問題じゃなくて意味があるまとまりにしてくれないと困る
んでおそらく形成されているであろうツリー構造がソースから把握できない
0945デフォルトの名無しさん
垢版 |
2017/10/15(日) 16:58:24.70ID:64liGYG7
コンストラクタ+メソッド1個みたいのもたくさんあった
単機能を実装したらこういうことになるんだろうとは思うけど
クラスが現実世界のものを表してるならこんな感じにはならない
0946デフォルトの名無しさん
垢版 |
2017/10/15(日) 16:59:23.02ID:HL16aayQ
>>943
クラスは意味のあるまとまりだよ
クラスのグルーピングは名前空間でやってるでしょ
名前空間使ってないなら命名規約でわかるようになってるんじゃないかな
どっちも無いならちょっと不親切だね
ちなみにどのリポジトリ?Githubだったよね?
0947デフォルトの名無しさん
垢版 |
2017/10/15(日) 17:01:23.72ID:Tx63GDtf
>>945
作るの勝手だけど
そういう奴に限って設計書のクラスの
記述漏れてんだよなぁ

プチクラス作れば作るほど
設計書書くの大変なのに
0949デフォルトの名無しさん
垢版 |
2017/10/15(日) 17:03:58.81ID:HL16aayQ
>>941
それはジェネレーターではなくファクトリーでは?
DIフレームワークを使わない硬派なプロジェクトだと大量のファクトリーが作られる
0955デフォルトの名無しさん
垢版 |
2017/10/15(日) 22:31:21.56ID:9R+c2v2L
C#はコードを使い捨てにする言語だからな。
殴り書きの汚いソースでも動くように最強のIDEがサポートしてくれる。
0965デフォルトの名無しさん
垢版 |
2017/10/15(日) 23:52:49.16ID:9R+c2v2L
C++保守用に未だVSS使ってるわ。新規で作ることないから移行する気がない。
個人ではC#のコードは使い捨てだから変更履歴なんかいらないよな。バックアップだけで十分。
0967デフォルトの名無しさん
垢版 |
2017/10/16(月) 00:10:00.94ID:TyZJj4Kq
VCSに対してCVSとかSVNとかのイメージを引きずってるなら、
Gitは食わず嫌いしないで一度試してみるべきだな
本当に手軽に使え、全く負担にならない
0969デフォルトの名無しさん
垢版 |
2017/10/16(月) 00:38:16.40ID:7ho3Goo/
gitは今はVSにもデフォルトで入ってるんじゃないか?ネットワークないローカル環境でも使える
githubはしらね
0970デフォルトの名無しさん
垢版 |
2017/10/16(月) 00:47:42.36ID:eZI1RZBb
githubは非公開はお金がかかる

そういうサービス使わないで自分でgit使って自前のgitリポジトリ利用はタダ
好きなように運用したらいい
0971デフォルトの名無しさん
垢版 |
2017/10/16(月) 00:49:28.23ID:TyZJj4Kq
gitはローカルで使いながら必要に応じてリモートと同期取るもんだけど、
無料でプライベートリポジトリが持てるホスティングサービスとしてはbitbucketが有名
github的な機能が不要で本当にgitリポジトリのホスティングだけでいいならAWS CodeCommitとかも無料で使える
0972デフォルトの名無しさん
垢版 |
2017/10/16(月) 01:22:35.89ID:TG+ykm1v
個人でVSTS使おうと思うけど無料なん?
プライベートリポジトリ。
0977デフォルトの名無しさん
垢版 |
2017/10/16(月) 08:21:49.44ID:dwD3mD07
>>975
世の中はGitで完全に統一されてるよ
どんなホスティングサービスだろうがツールだろうが扱うのはGitリポジトリ
Gitでバージョン管理されているディレクトリをどこに置くか、GUIクライアントに何を使うか、の違いに過ぎない
移行も空のリポジトリ作ってプッシュするだけだ
0979デフォルトの名無しさん
垢版 |
2017/10/16(月) 08:49:18.18ID:dwD3mD07
>>978
だったら全世界がお前を騙してることになるぞ
今時Gitなんか開発者にとってはHTTPと同レベルの常識
Gitできない時点でまともにプログラム書けるのか疑われるレベルだぞ
0987デフォルトの名無しさん
垢版 |
2017/10/16(月) 10:58:32.74ID:FZpcfz8T
VSに統合されてるし
変わったことしようとしなければ難しくないと思うけどな
0988デフォルトの名無しさん
垢版 |
2017/10/16(月) 11:26:00.31ID:Bpg1BMlQ
なんでGit使うの?
MSの無料のなんちゃらファウンデーションの方がよくない?
0990デフォルトの名無しさん
垢版 |
2017/10/16(月) 11:37:48.11ID:Bpg1BMlQ
>>989
うん、多分わかってないわ
0996デフォルトの名無しさん
垢版 |
2017/10/16(月) 20:15:08.82ID:snIoncYK
gitlabは確か無料だぞ
OSSだから自分で鯖立ても出来たはず
0999デフォルトの名無しさん
垢版 |
2017/10/16(月) 22:18:18.74ID:7CHwAcHs
>>991
向こうで何があったか知らないがgitスレはIP表示にしてるからこっちで暴れてるのではないか。

git関連は巣に戻れ。
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 177日 8時間 9分 49秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。

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