2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50    

C#, C♯, C#相談室 Part97

1 :デフォルトの名無しさん :2022/12/21(水) 10:18:38.02 ID:DxBIri9+0.net
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512

■Visual Studio 2017 Community(無償の統合開発環境)等はこちら
http://www.visualstudio.com/downloads/

■コードを貼る場合はこちら
http://ideone.com/

■前スレ
C#, C♯, C#相談室 Part94
https://mevius.5ch.net/test/read.cgi/tech/1553075856/

■次スレは>>970が建てる事。
建てられない場合は他を指定する事。

C#, C♯, C#相談室 Part96
https://mevius.5ch.net/test/read.cgi/tech/1639965805/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured

55 :デフォルトの名無しさん (ドコグロ MMa3-4fYz):2023/01/07(土) 11:12:47.51 ID:ErVvBSvoM.net
>>53
何それ凄い便利じゃん

>>54
できればプロパティを1つ1つ書きたくないんだよね

56 :デフォルトの名無しさん :2023/01/07(土) 11:42:41.36 ID:iltXkPxC0.net
継承後のクラス定義って、継承前より厳しくできたっけ?

57 :デフォルトの名無しさん :2023/01/07(土) 13:01:01.65 ID:FC273Y3JM.net
>>55
いやいやw
これでもう終わりでreadonlyだよ

58 :デフォルトの名無しさん :2023/01/07(土) 13:01:54.79 ID:FC273Y3JM.net
これ以上短い書き方なんてできるか?

59 :デフォルトの名無しさん :2023/01/07(土) 13:51:35.25 ID:unZBLw7Xd.net
質問者は既存のミュータブルなクラスのプロパティを読み取り専用にしようとしている
>>54だと同じプロパティを全部定義し直さなきゃいけないし、元のクラスからコピーする手間も必要だ
>>49の方法であればプロパティを定義し直す必要もコピーする必要もない

60 :デフォルトの名無しさん (オイコラミネオ MM5d-Or7w):2023/01/07(土) 14:55:27.90 ID:FC273Y3JM.net
既存のプロパティに当たるものをconstにするのは全部定義しなおしてるの同じなんだけど…

どういうやり方で既存のプロパティを定義してるのかもわからないし意味不明だなと

61 :デフォルトの名無しさん (オイコラミネオ MM5d-Or7w):2023/01/07(土) 14:56:55.34 ID:FC273Y3JM.net
うまく行くならプロパティのsetをinitアクセサに変えるだけなんだけど

62 :デフォルトの名無しさん :2023/01/07(土) 15:35:50.01 ID:FC273Y3JM.net
特定のコンテキストで書き換え不可
状況次第で書き換えの可否を変える
とかならめんどいけどそういう話じゃないんだろ

63 :デフォルトの名無しさん :2023/01/07(土) 16:17:29.42 ID:rg/VZrjHa.net
>>60
いやまともなC++のコードならgetterはconstで定義されてるはずだから、変数の型をconstにするだけでreadonlyになるよ

64 :デフォルトの名無しさん :2023/01/07(土) 17:38:18.83 ID:mDCtTa800.net
君たち的に.NET MAUIでandroid,iphone,WindowsでC#のネタ帳的なの作ったら協力してくれる?
小ネタ集みたいなのを各々がSQLで保存してそれをカテゴリ分けで見れるようにするやつ
例えばRestAPI関係だったりの基本的な書き方を表示したりできる
ネットで調べれば一発だが1つにまとまってるのは利点かと、、、

65 :デフォルトの名無しさん :2023/01/07(土) 17:48:11.52 ID:odL5Q3k30.net
wiki立ち上げればええやん

66 :デフォルトの名無しさん :2023/01/07(土) 18:07:01.95 ID:FC273Y3JM.net
多分世界中のc#プログラマの99.9%は.NET MAUIに興味ないと思う

67 :デフォルトの名無しさん :2023/01/07(土) 18:08:54.54 ID:St5PAkDm0.net
winui3でよくね?

68 :デフォルトの名無しさん :2023/01/07(土) 18:14:01.42 ID:FC273Y3JM.net
と言うよりいい加減いくつフレームワーク立ち上げれば済むんだよ

モバイル関連は全部html+jsにしてデバイスを仮想サーバにしてそいつにREST api投げてjsonでセンサ値とか取るようにすればいい
そしたらもう再生産しなくていい

69 :デフォルトの名無しさん :2023/01/07(土) 18:17:46.74 ID:unZBLw7Xd.net
>>64
コンテンツが利用者頼みのサービスは最初自分で頑張るか金出すかしてコンテンツを揃えない限り必ず失敗する
というわけでまずは自分で頑張れ

70 :デフォルトの名無しさん :2023/01/07(土) 18:24:07.38 ID:mDCtTa800.net
>>69
なるほど

71 :デフォルトの名無しさん :2023/01/07(土) 18:25:21.79 ID:FC273Y3JM.net
一度覚えた技術を何十年も使いまわせるような仕組みにしろよ
都度都度新しいAPIセット出して馬鹿なのかMSは?

72 :デフォルトの名無しさん :2023/01/07(土) 18:30:58.40 ID:UPEdDe6/0.net
ワッチョイ 9301
こいつマウイ君だろ、自分のスレでやれ。NG

73 :デフォルトの名無しさん :2023/01/07(土) 18:44:15.99 ID:St5PAkDm0.net
ここにまでマウイ出張ってきたか
ちゃんとワッチョイを恐れろよ

74 :デフォルトの名無しさん :2023/01/07(土) 20:02:44.89 ID:Xl5j6yUn0.net
マウいじゃん

75 :デフォルトの名無しさん :2023/01/07(土) 21:02:06.62 ID:FC273Y3JM.net
そんなにマウいかな?

76 :デフォルトの名無しさん :2023/01/07(土) 21:14:41.15 ID:mnUUIrvLa.net
チョベリグ

77 :デフォルトの名無しさん :2023/01/07(土) 22:07:32.34 ID:8LnSupdD0.net
>>64
> 例えばRestAPI関係だったりの基本的な書き方を表示したりできる
今からこの手のサービスやってもCopilotに勝てないだろ

78 :デフォルトの名無しさん :2023/01/07(土) 23:32:10.91 ID:mDCtTa800.net
>>77
copilotって別にこれしたいって言えば全部記入してくれるわけじゃなくね?
俺としてはあぁRestAPIの使い方ど忘れした~
なんだったっけ???ってGoogleで調べる時間をアプリで素早く検索できるって感じのものを作りたいかな
2,3回やったことあるやつでもどうだったっけ?って忘れることままある
まぁGoogleとかでいいんだけど1つのアプリにまとまってるってのはなかなか便利なんじゃないかなと…

79 :デフォルトの名無しさん :2023/01/07(土) 23:32:40.09 ID:mDCtTa800.net
自分で追加もできるしな

80 :デフォルトの名無しさん :2023/01/08(日) 16:11:14.19 ID:qCDijd6S0.net
Aクラスを継承したBクラスがあります
BクラスのリストにAクラスをAddしたいんですが、どうすればいいのでしょうか?

81 :デフォルトの名無しさん :2023/01/08(日) 16:20:03.96 ID:PrLa9yfk0.net
>>80
それは無理
Bは絶対にAだけどAはBとは限らないでしょ?
つまりAクラスのリストにするしかない
まあUnsafe.As使えば無理矢理入れられるけど

82 :デフォルトの名無しさん :2023/01/08(日) 16:24:40.95 ID:GEbVHkXI0.net
>>80みたいな質問する奴って意味も分からず継承使ってたりしてそうで怖いわw

83 :デフォルトの名無しさん :2023/01/08(日) 16:25:49.80 ID:+2bxRzY60.net
A a=new B(); とかで、実体がB型かもしれないならBにキャストすればいい。
A a=new A(); でA型そのものだったらそもそもこの話は成立しない。

list.Add((B)a);

84 :デフォルトの名無しさん :2023/01/08(日) 16:40:39.00 ID:Z6otLx+Dd.net
>>78
massCodeとかgistとかでいいんじゃない

85 :デフォルトの名無しさん :2023/01/08(日) 16:50:26.87 ID:+xzWagUM0.net
>>80
継承じゃなくてBクラスにAクラスのプロパティのリストを入れる場合はたしかいけたぞ

86 :デフォルトの名無しさん :2023/01/10(火) 13:29:49.07 ID:yPlBxuJ3M.net
>>71
ほんとこれ

87 :デフォルトの名無しさん :2023/01/10(火) 15:05:52.75 ID:ZisiPnco0.net
スマホアプリ作ってると毎年アプデで便利な機能がdeprecatedされてくのがストレス
それに比べたらMSの方が優しい

88 :デフォルトの名無しさん :2023/01/10(火) 17:23:44.95 ID:qAIynO1bM.net
>>86
それじゃ入門書売れないだろ
バカ?

89 :デフォルトの名無しさん :2023/01/10(火) 18:28:40.94 ID:IC+XgAqf0.net
android何かも最近コード書いてないけど、非推奨や消えたりする機能が結構あるよね
古いコードをメンテナンスするときに良く引っかかる気がするわ

90 :デフォルトの名無しさん :2023/01/10(火) 19:16:36.48 ID:0yW4rCRf0.net
C言語の重力付き4目並べです、ここのコードを簡略化したいです。

int SetXpos(int player) // コマの置き場所を入力または探して盤を更新,コマの置き場所(0-6)を返す
{
int xpos = 0; // コマの置き場所
if ((choice == 2 && player == 2) || (choice == 3 && player == 1)) // コンピュータとの対戦の場合に,コンピュータの手を計算
{
xpos = ComputeXpos(player);
printf("%sの番です\n", player == 1 ? "●" : "〇");
printf("コンピュータは%dに置きます\n", xpos);
}
else // 人間の手を選択
{
while (1)
{
printf("%sの番です\n", player == 1 ? "●" : "〇");
printf("どこに置きますか? 0-6の数字を半角で入力してください: ");
scanf_s("%d", &xpos);
if ((0 <= xpos && xpos < XMAX) && (num[xpos] < YMAX)) // 置ける場所かどうか判定
break;
printf("%dには置けません!\n", xpos);
}
}
board[xpos][num[xpos]++] = player;// コマをxpos列に置き,xpos列のコマ数を1増やす
return xpos;
}

91 :デフォルトの名無しさん :2023/01/10(火) 19:28:44.72 ID:uTLnAVho0.net
頑張ってください

92 :デフォルトの名無しさん :2023/01/10(火) 19:32:45.96 ID:IC+XgAqf0.net
そもそもC#のスレだからすれ違いだがw

printf("%sの番です\n", player == 1 ? "●" : "〇");
をifの前にするとか(それぞれにあるから冗長)
プレイヤーの処理もPlayerXpos()とかに出すとかすれば良いのでは?

93 :デフォルトの名無しさん :2023/01/13(金) 06:38:18.48 ID:CqT5d+dn0.net
ありがとうございます

94 :デフォルトの名無しさん :2023/01/15(日) 19:05:41.63 ID:CnKOeOE30.net
Shift-JISの文字列をutr-8に簡単に変換する方法ってありますか?
やはり一度Stream(バイナリ)に変換する必要があるのでしょうか

95 :デフォルトの名無しさん (ワッチョイ 867b-UaDV):2023/01/15(日) 19:23:52.26 ID:gGAdUt3l0.net
>>94
streamじゃなくてbyte[]じゃないの
Encoding.GetString(Encoding.GetBytes(string))ってことだよね
何のためにそんなことするか知らんけど

96 :デフォルトの名無しさん (ワッチョイ ca01-FIs7):2023/01/15(日) 19:25:34.21 ID:CnKOeOE30.net
>>95
つまりstringの状態でencodingは可能なのですか?

97 :デフォルトの名無しさん (ワッチョイ ca01-FIs7):2023/01/15(日) 19:28:04.22 ID:CnKOeOE30.net
C#でRestAPIを投げてブラウザ側から貰ってくる文字列はShift-JISらしい
それでC#はutr-8で表記されるため変換(Encoding)が必要になるのです

98 :デフォルトの名無しさん (ワッチョイ caad-vAbj):2023/01/15(日) 19:51:16.92 ID:wUGuc0E00.net
stringはunicodeだぞ?

99 :デフォルトの名無しさん :2023/01/15(日) 22:26:45.28 ID:pBiKKGenM.net
unicodeは符号化方式など規格とそのコード群の名前

100 :デフォルトの名無しさん :2023/01/15(日) 22:56:10.93 ID:AxXMsEIz0.net
そのREST APIをどうやって呼び出してるのか知らんけど
真っ当なサーバならContent-Typeにcharset設定してて
一般的なライブラリなら文字列として読み取るときにcharset参照して適切に文字列型に変換してくれる
から特にプログラマが考えることはない
これらの前提が崩れてるなら文字列として読み取るんじゃなくてバイト配列として読み取って
System.Text.Encodingクラスを使ってバイト配列をstringに変換する必要がある
この場合変換先の符号化形式を考える必要はなくてShift_JISをstringに変換することだけ考えればいい

もしライブラリの都合でstringとして受け取ることしかできなくて
かつその時点で文字化けが出るようなら
それはもうどうしようもないので使うライブラリを変える必要がある

101 :デフォルトの名無しさん :2023/01/15(日) 23:38:57.01 ID:r5uLxMWea.net
sjis/CP932 とか、何十年前の話w

sjisのサイトも、5ch だけだろw

102 :デフォルトの名無しさん :2023/01/16(月) 00:18:41.42 ID:sUZCnaKRM.net
古の生き残りのサイトもsjis

chromeが文字コード判定ミスしてても今は手動で文字コードは変えられない

103 :デフォルトの名無しさん :2023/01/16(月) 01:06:54.26 ID:Iz2auSAp0.net
>>100
なるほど
助かります!

104 :デフォルトの名無しさん :2023/01/17(火) 01:05:55.75 ID:BTJjkb3Ra.net
手動で文字コードを変更できる、Chrome の拡張機能は無いの?

105 :デフォルトの名無しさん (スップ Sdea-dnaz):2023/01/17(火) 18:23:06.75 ID:EvOewZJzd.net
ブックマークレットのレベルで出来そう
知らんけど

106 :デフォルトの名無しさん :2023/01/17(火) 19:13:35.87 ID:reGY8TLTa.net
charsetのタグいれればええんかね

107 :デフォルトの名無しさん :2023/01/17(火) 19:17:51.92 ID:3iw8L5pXa.net
x-sjisとかの指定もあったからな

108 :デフォルトの名無しさん :2023/01/18(水) 12:59:30.83 ID:KNmhbmwea.net
>>104
たくさんあるが

109 :デフォルトの名無しさん (ワッチョイ cd35-5Koo):2023/01/18(水) 20:59:57.78 ID:5annSIeD0.net
たくさんあるのかよ
一個でいいやろ

110 :デフォルトの名無しさん (ワッチョイ 211d-+AQV):2023/01/18(水) 21:51:34.28 ID:oIAAyMph0.net
win32APiのChangeDisplaySettingsExをC#から呼び出して、
モニタのポジションを変更してるんだけど、
変更直後にScreenのBoundsから値をとっても値が変化しない・・・
アプリ再起動するとちゃんと変わってる。
ディスプレイの設定ってレジストリに保存してるから、もしかして
アプリ再起動しないとScreenクラスのBounds反映されない?
アプリ再起動せずになんとかする方法ないですかね?

111 :デフォルトの名無しさん (ワッチョイ 06bb-fEm4):2023/01/18(水) 22:07:32.78 ID:jVn9UUXQ0.net
自分でバンズ計算すりゃいいじゃない
知らんけど

112 :デフォルトの名無しさん (ワッチョイ 954f-wtyD):2023/01/18(水) 22:14:35.47 ID:/+rmiMsB0.net
Screenオブジェクトフィールドに保存してたりする?
毎回Screen.AllScreensとか.PrimaryScreenとかから取得すればどう?
ところでSystemEvents.DisplaySettingsChangedイベントは発生してる?

113 :デフォルトの名無しさん (ドコグロ MM4e-ha7Y):2023/01/19(木) 07:38:17.94 ID:K9HYHkiWM.net
2つのクラスを1つのクラスに合体させて使いたいんだけど、どうやるのがスマートですか?
多重継承ができたら良かったんですが…

114 :デフォルトの名無しさん (ササクッテロラ Sp6d-/qpm):2023/01/19(木) 09:03:14.21 ID:Hct/UdRpp.net
合体?
またなんで、改悪臭しかしないわ

115 :デフォルトの名無しさん (ワッチョイ 4149-kID6):2023/01/19(木) 09:25:09.63 ID:LXNiK0p/0.net
そういうのは大体気の迷いだから、落ち着いて全体から考え直せば

116 :デフォルトの名無しさん (ササクッテロラ Sp6d-/qpm):2023/01/19(木) 09:44:42.78 ID:Hct/UdRpp.net
むしろ機能単位で分解するのが健全な方向なのに
違う機能を似たものだから合体とかわりと誤った方向に行く人かな?

117 :デフォルトの名無しさん (ワッチョイ caad-vAbj):2023/01/19(木) 09:56:12.01 ID:zVWBDbvx0.net
ライオンクラスと山羊クラスと蛇クラスを一つにしたいんです

118 :デフォルトの名無しさん (ワッチョイ 0507-EebW):2023/01/19(木) 10:01:07.14 ID:yp2D21uT0.net
>>117
つトレイト

119 :デフォルトの名無しさん (ブーイモ MM2e-laSj):2023/01/19(木) 10:51:30.57 ID:Iv2veF3WM.net
>>113
コンパイル時に型チェックしたいなら既存の型をインターフェースで定義し直して呼び出し側も修正
でもこういう変更が必要な状況はほとんどないのでコンポジションで移譲するケースなんじゃないかな

>>117
トレイトでもインターフェースでも同じだよ

120 :デフォルトの名無しさん (ワッチョイ 0507-EebW):2023/01/19(木) 11:01:05.91 ID:yp2D21uT0.net
>>114
BindableBaseと他のクラスを両方継承したい場面はいくつかあるな
ソースコードジェネレータは中々いい

121 :デフォルトの名無しさん (ワッチョイ 0507-EebW):2023/01/19(木) 11:01:57.47 ID:yp2D21uT0.net
>>119
トレイトはフィールドを持てるから同じではないけど言いたいことはわかる

122 :デフォルトの名無しさん (ワッチョイ 06bb-JXbu):2023/01/19(木) 11:31:03.31 ID:kysdIh6r0.net
質問内容はクラスをまとめたいってことなので、ずれちゃう話にはなるけどさあ
(フレームワーク等を使う場面を除いて)初心者中級者のうちにクラスを継承をしようと思ったら設計段階でおかしいので、正解はどうするべきなのかを聞いた方がいいんじゃないのかな

123 :デフォルトの名無しさん (ササクッテロラ Sp6d-/qpm):2023/01/19(木) 12:04:02.54 ID:WELAMOcMp.net
クラスインスタンスを取り込めばいいのに
なんで継承にこだわる?

124 :デフォルトの名無しさん (ドコグロ MM21-ha7Y):2023/01/19(木) 12:21:58.33 ID:tEHmCOQcM.net
やりたいことは
いくつかのプロパティを持つデータを格納するだけのクラスAがある
クラスAにバインド用のプロパティをいくつか追加したクラスBを作って、それのリストをDataViewにバインドしたい

AとBのすべてのプロパティを書いたクラスCを作ればできるけど、なんとかして少ないコードで実現したいです

125 :デフォルトの名無しさん (アウアウウー Sa91-EebW):2023/01/19(木) 12:45:40.56 ID:H7hm+dDpa.net
Aをバインドできるよう書き直せばいいんじゃね

126 :デフォルトの名無しさん (オッペケ Sr6d-2lig):2023/01/19(木) 12:52:06.93 ID:8nS1/G/Mr.net
>クラスAにバインド用のプロパティをいくつか追加したクラスB
>AとBのすべてのプロパティを書いたクラスC
なんかおかしくない?

127 :デフォルトの名無しさん :2023/01/19(木) 16:09:46.95 ID:h7ydINbB0.net
Aを継承してバインド用のプロパティを追加したBを作って
List<B>を持つCを作ってそのList<B>をバインドすればいいんじゃないの

128 :デフォルトの名無しさん (ドコグロ MM21-ha7Y):2023/01/19(木) 17:30:22.46 ID:tEHmCOQcM.net
>>127
それで出来るんですが、バインド用のプロパティが沢山あったときに毎回書くのが面倒で、どうにかして効率化できないか考えてます

129 :デフォルトの名無しさん (オイコラミネオ MMe5-7DGa):2023/01/19(木) 18:00:00.70 ID:pNQOSNx5M.net
ここですら見かけない超クソ黒魔法もあるけど全くお勧めしない

普通にコンポジションで書くのが正解じゃないかな
アンマネージドなものをラップするのと変わらない
手書きでも自作コードジェネレータでもどうぞ

130 :デフォルトの名無しさん (オイコラミネオ MMe5-7DGa):2023/01/19(木) 18:06:50.46 ID:pNQOSNx5M.net
黒魔術な…

131 :デフォルトの名無しさん :2023/01/19(木) 19:44:59.20 ID:cZ+iShes0.net
やりたい事は理解できる
構造体を合体させるにあたりフィールドで保持すれば良いというのはその通りなんだがアクセス手段が冗長になるのは嫌っていうワガママな気分によくなる
C++のように素直に構造体継承や多重継承認めてくれって思う事は頻繁にある

132 :デフォルトの名無しさん :2023/01/19(木) 21:19:14.97 ID:z427r+xYp.net
プロパティにしてバケツリレーw

133 :デフォルトの名無しさん :2023/01/19(木) 22:05:29.65 ID:wlAvkW/br.net
>>128
バインド用のプロパティってクラスAのもつフィールドを参照するの?

134 :デフォルトの名無しさん :2023/01/20(金) 01:42:18.00 ID:Jpp0Ng/yM.net
>>133
しない前提です。

データソースクラスにバインド用のプロパティも含めれば実現できるけど、クラス設計として微妙なんだよな

135 :デフォルトの名無しさん :2023/01/20(金) 12:05:04.93 ID:rWqtsOF60.net
>>134
>>125が正解な気がするが、
そもそもバインド用のプロパティってどういうものを想定してるんだ?
よくあるINotifyPropertyChanged自動実装したいとかそんな話か?

136 :デフォルトの名無しさん :2023/01/20(金) 20:51:09.38 ID:jJGC4T1tr.net
つまるところ、M(クラスA)とVM(クラスB)を煩雑にならないように扱いたいって話かね
この辺は詳しくないけどいろいろプラクティスがあるんじゃない?

137 :デフォルトの名無しさん :2023/01/21(土) 11:56:14.92 ID:cGrVppR7M.net
C#だとあまり楽な方法はない

138 :デフォルトの名無しさん :2023/01/21(土) 12:36:53.78 ID:rZUyyxKK0.net
そんなアホなことしたがるやつがそもそもいないからな
することが多ければすぐに楽な構文が作られるのがC#

139 :デフォルトの名無しさん :2023/01/21(土) 16:52:35.79 ID:H5hcEaoi0.net
C#は基本的に
・static寄せ集めユーティリティのクラス
・必要な画面フォームのクラス
・メインプログラムのクラス
この3つ以外要らないのだよ
意識高い系が説くMやらVに振り回されてはいけないのだよ
変な抽象化は問題をややこしくするだけだと学ぼう

140 :デフォルトの名無しさん :2023/01/21(土) 18:17:20.63 ID:rZUyyxKK0.net
スタティックおじさんきたな

141 :デフォルトの名無しさん :2023/01/21(土) 22:54:03.42 ID:XQUa+q2yM.net
>>135
そうですね
INotifyPropertyChangedとかINotifyDataErrorInfoを実装しておきたい感じです

142 :デフォルトの名無しさん :2023/01/22(日) 10:06:15.27 ID:rqWd8pMR0.net
探せば大抵のものはあるのに、自分で作る意味とは?
アートとか、そういう方面しか残ってないような感じがするのですが(´・ω・`)

143 :デフォルトの名無しさん :2023/01/22(日) 11:19:49.43 ID:cs1e2wyOa.net
帳面で効率が悪けりゃソフト使えばいいし効率の良いソフトがみつからなけりゃ作るより他にないだろ

144 :デフォルトの名無しさん :2023/01/22(日) 11:27:13.17 ID:cs1e2wyOa.net
>>141
ただのViewModelじゃねーか
フレームワーク使え

145 :デフォルトの名無しさん :2023/01/22(日) 12:53:40.50 ID:8KSe/b5e0.net
最近MVVMのほうが楽じゃね?って思ってきた
楽しいし

146 :デフォルトの名無しさん :2023/01/22(日) 12:54:24.84 ID:8KSe/b5e0.net
これもすべてソースジェネレーターのおかげかもしれん
さすがC#

147 :デフォルトの名無しさん (スッププ Sd1f-OsG9):2023/01/22(日) 17:03:04.26 ID:jvNfJ0Pqd.net
>>139
うちがWindowsの業務クライアントアプリ系を委託してるソフトハウスがまさにこんな感じだわ
イベントハンドラからSQL投げてる
ただしstaticユーティリティクラスではなく共通の神フォームクラスがあって、全てのフォームがそれを継承する形
まあレベル低すぎて開発もクソ遅いから、負債自体はそれほど量が多くないのは救いかな

148 :デフォルトの名無しさん (ワッチョイ e379-TshA):2023/01/22(日) 18:32:18.54 ID:xRK/d49A0.net
>共通の神フォームクラスがあって、全てのフォームがそれを継承する形
こういうのよくないな
神クラスのメンテナが異動だかで居なくなだけで誰も保守できない砂上の楼閣アンチパターンに嵌るね

149 :デフォルトの名無しさん :2023/01/22(日) 21:31:04.53 ID:ADzURpxfM.net
>>139
実質Cプログラムだな

150 :デフォルトの名無しさん (ワッチョイ bfbd-Jpma):2023/01/23(月) 02:49:47.88 ID:0XgI/UQT0.net
>>149
前に作ったC#のプログラムがまさにそんな感じで、
その後MVVMしてみた。
そして最近作ったCのプログラムが構造体でオブジェクト指向プログラミングしてる。

151 :デフォルトの名無しさん (ワッチョイ 5310-Jpma):2023/01/23(月) 08:17:46.60 ID:3Vu8SA8M0.net
>>148
その言い方だと基底クラスと派生クラスに分かれているもの全部が当てはまるように聞こえてしまうが

152 :デフォルトの名無しさん (ワッチョイ 8307-ycfm):2023/01/23(月) 08:19:09.55 ID:YKh4Yexo0.net
>>151
神クラスを知らんのか

153 :デフォルトの名無しさん (ワッチョイ 5310-Jpma):2023/01/23(月) 08:29:28.69 ID:3Vu8SA8M0.net
規模じゃなくてメンテナの有無を問題にしていたからだよ

154 :デフォルトの名無しさん (ワッチョイ 8307-ycfm):2023/01/23(月) 08:46:40.58 ID:YKh4Yexo0.net
規模が小さければメンテナが交代しても負担は少ない

155 :デフォルトの名無しさん :2023/01/23(月) 09:08:08.58 ID:qV3QzySmp.net
ライブラリなんて当時のセット使うに決まってるじゃん

236 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
名前: E-mail (省略可) :

read.cgi ver.24052200