1 名前:デフォルトの名無しさん (ワッチョイ 1e06-m8Mb) mailto:sageteoff [2017/04/22(土) 08:52:00.93 ID:iVvswOrb0.net] ■Visual Studio 2017 Community(無償の統合開発環境)等はこちら www.visualstudio.com/downloads/ ■コードを貼る場合はこちら ideone.com/ ■前スレ C#, C♯, C#相談室 Part92 echo.2ch.net/test/read.cgi/tech/1485589613/ ■次スレは>>970 が建てる事。 建てられない場合は他を指定する事。 VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
175 名前:デフォルトの名無しさん mailto:sage [2018/05/04(金) 20:20:22.68 ID:hRV05sGM0.net] >>168 ありがとうございます。 解像度は自動取得なのでディスプレイのoサイズでした。
176 名前:デフォルトの名無しさん mailto:sage [2018/05/04(金) 20:22:53.75 ID:hRV05sGM0.net] >>169 すいません。 プログラミング初めて勉強なので、なるべくへんなコーディングしないように可読性高くと考えてまして、 普通はどう描くんだろうなというところが気になって仕方ない。 public変数作りすぎると、後でどこかで変に触るとわけわからんことになるのかなと極力使わないように心がけてます。
177 名前:デフォルトの名無しさん mailto:sage [2018/05/04(金) 20:37:07.58 ID:HEa1U9rI0.net] 何かフリーソフトを作ってみたくて勉強しているところなのですが、GUI?を学ぶ上で良い本があれば教えていただきたいです
178 名前:デフォルトの名無しさん mailto:sage [2018/05/04(金) 20:55:12.49 ID:L0LZvRGB0.net] >>171 フォームは入力の受付と出力の描画だけをする 内部で使うデータはモデル側で持つ
179 名前:デフォルトの名無しさん mailto:sage [2018/05/04(金) 21:33:04.91 ID:hRV05sGM0.net] >>173 それでいってみます。 ありがとうございます。
180 名前:デフォルトの名無しさん mailto:sage [2018/05/04(金) 21:34:38.54 ID:hRV05sGM0.net] 連投すいません。 ユーザー側でフォームのサイズを変えたとしても 常にフォーム右端にボタンを固定する方法ってないでしょうか?
181 名前:デフォルトの名無しさん mailto:sage [2018/05/04(金) 21:39:42.44 ID:EvkA5vHv0.net] >>175 ボタンのAnchorのプロパティをTop, Rightに変更
182 名前:デフォルトの名無しさん mailto:sage [2018/05/04(金) 22:00:01.60 ID:hRV05sGM0.net] >>176 Anchorって設定があったんですね。 できました! ありがとうございます。
183 名前:デフォルトの名無しさん mailto:sage [2018/05/04(金) 22:18:10.81 ID:hRV05sGM0.net] Form1で作成したmethod1をForm2で使用したい場合どのようにすればいいのでしょう? Form1.method1(); だとエラーなのですが、form自体がクラスだからインスタンス生成が必要ということでしょうか? 本当に初歩的な質問ばかりですいません。
184 名前:デフォルトの名無しさん mailto:sage [2018/05/04(金) 23:14:52.98 ID:hRV05sGM0.net] 駄目だ煮詰まってきた。 Visualstudioで新規ソリューションを作成して、既存のソリューションからフォームを追加したのですが、 フォームデザインでは新規フォームが表示されているだけ、.Designer.csを除くときちんとコードが記載されているのですが、 [デザイン]:の画面では反映されておらず、この画面でコントロールを追加などするとエラーがでてビルドできなくなります。 フォームの追加の仕方が間違ってるのかなぁ。
185 名前:デフォルトの名無しさん mailto:sage [2018/05/04(金) 23:16:00.99 ID:o0wzY09D0.net] 煮詰まる=完成する
186 名前:デフォルトの名無しさん mailto:sage [2018/05/05(土) 01:05:27.05 ID:i9GeFih30.net] >>179 エラーの内容は?
187 名前:デフォルトの名無しさん mailto:sage [2018/05/05(土) 08:03:54.33 ID:CBIAOUw10.net] >>181 エラー CS0121 次のメソッドまたはプロパティ間で呼び出しが不適切です: 'InitalMonitorSetteing.InitializeComponent()' と 'InitalMonitorSetteing.InitializeComponent()' エラー CS0111 型 'InitalMonitorSetteing' は、'InitializeComponent' と呼ばれるメンバーを同じパラメーターの型で既に定義しています。 です。
188 名前:デフォルトの名無しさん mailto:sage [2018/05/05(土) 08:08:30.21 ID:CBIAOUw10.net] ソリューションエクスプローラーで 追加→既存の項目 でフォーム一切合切を取り込むと フォームの[デザイン]タブのところで新規のフォームが表示され、これをいじると上記エラーが出ます。 フォームの[デザイン]タブをいじらなければ正常に実行されます。 .Designer.csを見るときちんとコードが書かれているので [デザイン]と.Designer.csが一致していない状態になっているようです。
189 名前:デフォルトの名無しさん mailto:sage [2018/05/05(土) 08:36:55.68 ID:CBIAOUw10.net] 地道に フォームのデザインすべてコピー貼り付け コードすべてコピー貼り付け ってやって追加しました。 なんかネットで見ると、 ソリューションエクスプローラーで 追加→既存の項目 でフォーム一切合切を取り込む ってやると後々まで得体のしれないエラーに悩まされるので、上の方法を推奨している方がいました。 Visual Studioかフォーム自体の持つバグなんですかね…。
190 名前:デフォルトの名無しさん mailto:sage [2018/05/05(土) 08:47:39.95 ID:5nbJxYdYa.net] 〜VS2015しか使ってないが俺はエラー起きたことないよ。原因分からないけど、何かやらかしてるんでしょ
191 名前:デフォルトの名無しさん mailto:sage [2018/05/05(土) 09:57:21.01 ID:+PUGPCx60.net] 無闇にコピペした結果を環境のバグとか プログラム向いてないよお前
192 名前:デフォルトの名無しさん mailto:sage [2018/05/05(土) 10:00:36.87 ID:CBIAOUw10.net] 失礼しました。 私がよく理解していないために、しなければいけない作業をしていないのかもしれませんね。
193 名前:デフォルトの名無しさん mailto:sage [2018/05/05(土) 10:35:22.91 ID:TTUQSH5zM.net] むしろしちゃいけない作業をしてるような気がする...
194 名前:デフォルトの名無しさん mailto:sage [2018/05/05(土) 11:08:14.41 ID:T9f+iK/r0.net] >>178 そもそもこの質問の時点でFormsのコード部分が何をやってるのか理解できてない可能性がある
195 名前:デフォルトの名無しさん mailto:sage [2018/05/05(土) 11:25:44.32 ID:qEM4shRT0.net] いきなり難しいことをやろうとするとダメやね
196 名前:デフォルトの名無しさん mailto:sage [2018/05/05(土) 11:27:18.98 ID:LtMyhhwZM.net] 基礎も身につけずに一端のフリして解決しようとして、半端で折れるバカってのはよく聞く話 とりあえず何か入門書籍に頼って動くものを作れ 話はそれからだ
197 名前:デフォルトの名無しさん mailto:sage [2018/05/05(土) 20:20:18.85 ID:xedbZMvy0.net] >>184 情報共有する場所なんだからこういったいいかげんなこと書くのやめてほしいな まずソースをそのまま取り込みたいのならプロジェクトに追加で何も不具合は起こらない それでデザイナが反映されないのならDesigner.csを直接書き換え(認識できなくなるような書き換え)やっているはず あとユーザーコントロールを内部で追加している場合は一度ビルドするとデザイナで反映される プロジェクトでなくソリューションにソース追加しても当然何も起こらない 最初からふらっとにいけばいいのに
198 名前:デフォルトの名無しさん mailto:sage [2018/05/05(土) 20:30:34.54 ID:Tc8hf/iLa.net] WinFormのデザイナは中途半端に内部実行するからしょっちゅうトラブるんだよな コンストラクタでなんかやってる奴は特に要注意
199 名前:デフォルトの名無しさん mailto:sage [2018/05/05(土) 22:08:57.94 ID:1Zee5iE50.net] デザイナかどうか判断するコードを書くのは飽きた
200 名前:デフォルトの名無しさん mailto:sage [2018/05/05(土) 22:38:59.04 ID:T9f+iK/r0.net] そんなあなたに!WPF!
201 名前:デフォルトの名無しさん mailto:sage [2018/05/05(土) 22:40:45.58 ID:CBIAOUw10.net] フォームをコントロール含めて継承すると継承先でコントロールの編集ができなかったり云々 という書き込みを見たので、 そこで提案されていた新規フォーム作成して そこにコピペとしてみて結果オーライだったのでそれで良しとしたのですが、 私の方でなにか既存のフォームを取り込むのにまずいことをしてたのかもしれません。 記憶にないけどDesigner.csを直接書き換えしたかなぁ・・・。 フォームで作成するかWPFを使うかを悩んでた時にフォームは放置されたバグが多いと警告されていたので、 単純にバグなのかと思いましたが根拠なくソフトのバグと書き込むのはまずかったですね。 失礼しました。
202 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 07:44:34.64 ID:8BI4PAGy0.net] FormかWPFか悩んでるならWPFを推す。 最初は難しいがXAMLはUWPでも使っていて今後につながると思う。
203 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 15:08:05.14 ID:gzoDeGmX0.net] 今後ピクセル単位でのUI作成は完全に無くなるからなぁ
204 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 16:52:40.62 ID:6XezKW2ea.net] 多段継承してるカスタムコントロールはぶっ壊れやすい Winアプリ作らにゃならんならWPFのが
205 名前:}シってのはまあそうだ でも将来性あるとは思わんな [] [ここ壊れてます]
206 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 17:34:01.02 ID:ZPoK8KSTM.net] WPFそのものの将来性はともかくとして、その技術のエッセンスが次代に引き継がれると思うんです。 今後もWinアプリを開発することになるんで、なるべく将来性と言うか潰しのきく技術に投資したいと思ってWPFにしたんだけど。
207 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 17:36:34.98 ID:w10wIaHya.net] >>199 それはないよw 継承の段数は関係なくて、単にコントロールのカスタマイズは意外と難しいってだけの話 俺も経験があるけど簡単にシステム側のバグを疑いたくなる現象にぶち当たるけど、 ほとんどの場合はプログラマの理解不足によるユーザーコード側のバグが原因
208 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 17:37:23.44 ID:6XezKW2ea.net] 潰しがきくってんならなおさら独自仕様なんぞあかんやろ WPF出てから何年経ってるよ 他に採用してるとこないのはそういうことだ
209 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 17:39:54.31 ID:YMV7ENjt0.net] >>202 XAML
210 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 17:41:16.14 ID:6XezKW2ea.net] >>201 いや正確にはシステムがぶっ壊してるんじゃなく レイアウト決定だの初期化順番だので罠にはまる確率がガンと上がるって話 コントロール1種を少々カスタマイズしたくらいじゃあんまハマらんさ
211 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 17:43:51.97 ID:EPydt9+c0.net] GDIが使えない時点でゴミ WPFでCADを提供してみろ
212 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 18:14:23.28 ID:8BI4PAGy0.net] >>202 対案示してくれると検討もできるんですけど。
213 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 18:17:03.64 ID:6XezKW2ea.net] >>206 オプショナル独自仕様なんぞわざわざ覚えんでもC#だけ抑えときゃいいじゃん
214 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 18:17:55.59 ID:JGiuZYwWa.net] formとwpfどっちかじゃなくて、状況に応じてどっちか使えばいい 言語だってそうだ。c#に拘らず、必要に応じてほかの言語も使えば楽になるぞ 縛りプレイとか馬鹿臭くてやってられん
215 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 18:18:35.39 ID:gpR98zCG0.net] 何でこのスレ来てるの?
216 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 18:21:30.52 ID:gzoDeGmX0.net] xamlが単なるコードトランレート言語だったなんて知らなかったんだよ。
217 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 18:31:06.82 ID:8BI4PAGy0.net] >>207 まさかの浅い答えでしたね。 今時、なんか開発する時は言語だけじゃなくAPIとかプラットホームとのセットじゃないの?
218 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 18:36:24.83 ID:Yj4OtQcz0.net] 最近form触る機会あったけど、WPFになれた後だとバインディングが面倒でならない formはformでわざわざ部品探したり作る必要ないから良いんだけどね
219 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 18:49:36.56 ID:c85H7Qr90.net] Bindingが遅すぎて使い物にならない
220 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 19:05:20.38 ID:8BI4PAGy0.net] なんか変なイチャモン付けてる人いるけど。 CAD作れるかとか、Formならできるの? Windows、.net、C#でGUIアプリ作るならFormかWPFしかないじゃん。 Formは終わった技術で行き止まり、WPFは普及しなくて過渡的な技術になるかも知れないがその先につながりそうでって言ってんです。 もっと論理的に反論して欲しいです。
221 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 19:06:34.14 ID:lPSPWHr00.net] 昔から居ついてるから一々突っからなくて宜しい
222 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 19:13:48.84 ID:8BI4PAGy0.net] >>215 昔から居てもアホな書き込みすると初学者は惑わされるのよ。 自分が理解出来ない技術はみんなダメって言ってないか? ちゃんと論理的に反論してよ。 出来ないなら駄まってろ。
223 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 19:15:40.37 ID:JGiuZYwWa.net] formでCAD作ってる奴ぐぐると日本人でも複数いるよ
224 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 19:17:40.07 ID:OZSh5wZJ0.net] >>214 お前
225 名前:さんみたいな銀の弾丸求める奴ぁ先がないぞ XAMLは文字列だらけで設計の筋がいいとは到底言えない もし次があるなら全然違うもん出してくるんじゃないの [] [ここ壊れてます]
226 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 19:21:54.60 ID:8BI4PAGy0.net] >>217 FormでできるならWPFでもできるだろう。 Formの優位性は何?
227 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 19:24:56.35 ID:8BI4PAGy0.net] >>218 XAMLは面倒よ、たしかに。 でもね、オレは使ってないがGUIのリソースエディタがあるんじゃないか? なくても直ぐにできるよ。
228 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 19:27:17.19 ID:8BI4PAGy0.net] >>218 UWPもXAMLだよ。 MSは当面これでいくんじゃないの。 あんたよりMS信じる。
229 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 19:34:40.78 ID:OZSh5wZJ0.net] XAMLの筋が悪い一例としてIDEサポートがHTMLにすら劣る点が上げられる 今でも時々vsごと落ちる まあ次が出る前にWinアプリ自体がオワコンになる可能性も低くないけどな あんたの人生だから好きにしたらいいよ
230 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 19:44:28.98 ID:8BI4PAGy0.net] >>222 XAMLでの開発3年弱だがVS落ちた経験ないよ。 Winアプリがオワコンになるんだったら、早いとこ他の言語・環境に移行したら? オレはWinアプリだけじゃなくタブレットとかスマホにも適用できると思ってるから、この道行くよ。
231 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 19:47:05.22 ID:YMV7ENjt0.net] >>222 俺も落ちたことないんだけど、どんな環境で何したん?
232 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 19:59:30.59 ID:P5UQ0avb0.net] WPFはもちろん最良ではないけど すくなくとも現行のUWPと共通のXAML使ってるぶんFormsよりは十倍マシ
233 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 20:10:59.67 ID:OZSh5wZJ0.net] メモリ8Gで5段くらいネストした奴編集してたらストンと落ちたぞ vs2015だ >>225 「現行では」比較論でまあせやな 将来性は怪しいが
234 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 20:17:33.07 ID:YMV7ENjt0.net] >>226 ハードウェアアクセラレーションの問題ではなくて?
235 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 20:19:15.57 ID:8BI4PAGy0.net] >>226 すごいな。なかなか落とせるもんじゃない。 そんなにWinの将来に悲観的なら、本当にどこかに行ってください。 間違った書き込みを堂々と恫喝的にされると初学者の道を誤らせるよ。 それって罪なことです。 このスレタイでは。
236 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 20:22:22.92 ID:YMV7ENjt0.net] >>228 落ちるときは落ちるさ こんな風にその問題を追及しないのがアレ https://stackoverflow.com/questions/31021049/visual-studio-2015-crashes/33182194#33182194
237 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 20:28:51.95 ID:8BI4PAGy0.net] >>229 他の環境はそんなに安定してるのか? VSが特別に酷いとは思わないけど。 MSデスってなんでここにいるの?
238 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 20:30:40.96 ID:YMV7ENjt0.net] >>230 俺がいつMSをデスった?いつ他の環境と比較した? ID:OZSh5wZJ0と間違えなさんな
239 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 20:37:41.43 ID:8BI4PAGy0.net] >>231 Winアプリはオワコンって言ったろ。 それより、CAD作ってみろ、って恫喝的に書いたろ。 あのフォローをしてくれ。論理的に。
240 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 20:39:01.49 ID:8BI4PAGy0.net] >>213 ごめん。 人違いだった。
241 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 20:40:12.87 ID:8BI4PAGy0.net] >>233 たびたび訂正ですがアンカ間違えた。 すまん。
242 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 20:46:08.35 ID:OZSh5wZJ0.net] わかりやすく発狂してんなー 初学者どうたら言うんならもっと普及してるもん押すべきじゃあないの? 言っとくけどC#自体は他でも使われてるからなUnityとか >>229 毎度再現するんでもないからなー Formでは一回も落ちたことないからXAML関係が比較的不安定なのはそうじゃないの
243 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 20:58:22.97 ID:8BI4PAGy0.net] >>235 見っともないぞ。 昔からいる古狸かも知れないが、もっとちゃんとしろ。 初学者惑わす書き込みを堂々とするのはやめて、自分の考え披露するのは構わないけど。
244 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 21:16:41.42 ID:YMV7ENjt0.net] >>232 だから俺は違うってばwww
245 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 21:31:09.89 ID:JjviwauC0.net] アンカさえまともに書けないやつがコード書けるのか?
246 名前:デフォルトの名無しさん mailto:sage [2018/05/06(日) 21:39:39.84 ID:8BI4PAGy0.net] >>237 ごめん。 ちょっと酔っ払って熱くなった。 もうここらで寝ます。 >>238 ご心配いただきありがとうございます。
247 名前:デフォルトの名無しさん mailto:sage [2018/05/07(月) 11:50:51.85 ID:zM6nOBFcM.net] わたし錯乱某
248 名前:デフォルトの名無しさん mailto:sage [2018/05/08(火) 02:53:46.31 ID:EHD0XpOQ0.net] わい、コンソールアプリしか作ってない
249 名前:デフォルトの名無しさん mailto:sage [2018/05/08(火) 03:04:56.28 ID:wFWfdcvC0.net] >>241 .NET Core Global Toolsおもしろいよね
250 名前:デフォルトの名無しさん mailto:sage [2018/05/11(金) 22:56:53.52 ID:oqUyZvi20.net] フォームアプリケーションで A.初期設定画面 表示する円の大きさ、数、表示座標の範囲などの初期値を設定 B.ゲーム画面 初期設定画面からAの初期値を取得し、メンバ変数に代入して 円を表示する 円を消去する 円の当たり判定をする などの3つぐらいのメソッドで使用しています。 Bのコードが長くなって200行ぐらいになると、 メンバ変数をどこで使ってるのか全部見なければいけないのは 可読性が悪いのかなと思うようになってきました。 3つのメソッドそれぞれのグループ変数として それぞれ3つのメソッド内でAの初期値を見に行くコーディングをしたほうが良いのでしょうか? メンバ変数の方が冗長性はないけど可読性が低くて、 メソッドないのグループ変数にしたほうが冗長性が高いが可読性も高い気がします。 独学でコーディングしているので、お仕事でプログラミングされている方のご意見を伺いたいです。
251 名前:デフォルトの名無しさん mailto:sage [2018/05/11(金) 23:05:04.79 ID:KxM4SNOx0.net] >>243 Aが入出力と, モデルのデータ保持という3役を担っているのが良くない。 出力が本業なので可能ならばそれに特化するが, 差し当たってはデータ保持を分離して別クラス(モデル)に切り出す
252 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 08:19:23.20 ID:RvuVG0qm0.net] Aは public int GetTimeLimit { bool resultOfGetTimeLimit = int.TryParse(this.timeLimit.Text, out int timeLimit); if (resultOfGetTimeLimit) return timeLimit; else return 0; } が10個ぐらいあるだけで、Aの可読性はいいのですが。 Bのクラスから→Aのインスタンス生成→フォーム表示しているので、 Bが 1. Aからの初期値取得 2. 取得した初期値でゲーム画面表示 3. ゲーム中の処理 4. スコアデータとAの初期値テキストファイルへの書き出し という4つの異なった処理(特に2,3のコードが長い)をしているのと、 Aのコードの量も400行近くになっているのが可読性低下の原因かと思います。
253 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 08:19:38.98 ID:RvuVG0qm0.net] Bの別のクラスを作って分離させたいんだけどBからAのインスタンス生成しているので、 BAの画面処理に基づいた1234はすべてBに入れることになってるんですよね。 これって画面遷移が良くないってことなのかなぁ? 一般的に1234の処理を一つのフォームクラスに押し込んでクラスメンバ変数10個程度、 400行のコードって可読性の観点から許容されるものなんでしょうか? チームでプログラミングされているプロの方の意見をお伺いできればと思います。 (長文本当に申し訳ありません)
254 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 08:45:11.14 ID:KCIDKf2Q0.net] 人の話聞いてないねw じゃあもう好きにしたらいいと思うよ
255 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 09:11:24.66 ID:RvuVG0qm0.net] >>247 私の説明か理解が悪いのでしょうか? Aは100行未満のコード245のコードの連続なので簡単に読めます。 Bが読みづらいのが問題なので、Aの機能を分離しても解決
256 名前:ノはならないような。 BがAが取得したデータ保持とゲーム内でのデータ処理の二つを担っているのがまずいとのご指摘であれば、 それはそうかと思いますが、データ保持と処理が画面と密接に関係しているので分離し難いというか・・・。 コード全部見せないで質問すること自体に無理があるのかもしれませんね。 すいません。 [] [ここ壊れてます]
257 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 09:18:34.84 ID:RvuVG0qm0.net] たぶん端的にこう質問すればよかったのかと思います。 フォームを生成しているクラスのコードが400行、メンバ変数が10個、メソッドが8個、で、 メンバ変数はそれぞれのメソッドで3個ぐらい引用しています。 こういうコードってチームで作業してるプロから見て許容できる範囲でしょうか? 処理が多少冗長になってもメンバ変数を少なくして、メソッド内でグローバル変数として定義するべきでしょうか?
258 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 09:19:07.30 ID:vhGL8v7ea.net] >>248 Aを入出力専門のAViewとデータ保持専門のDataHolderに分離 Bをゲーム画面描画専門のBViewと実際の内部処理を行うGameModel, 各種書き出しを行うWriterに分離 Windowのインスタンスの内部で色々な処理を行うのがそもそも間違ってる 描画と変更の通知以外何もさせるな
259 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:01:27.82 ID:RvuVG0qm0.net] >>250 ありがとうございます。 理解できました。 フォーム生成するクラスはフォームの描画、変更に特化 A 初期値入力フォームを生成するクラス B データを保持するクラス C ゲーム画面表示クラス D ゲームのルールに基づいてBを更新するクラス 分かりやすい。 これがオブジェクト指向ってやつか・・・。
260 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 10:07:34.76 ID:RvuVG0qm0.net] 自分は成り行きでBの機能の一部をCに放り込んでしまったから、 Bを処理するDも必要に迫られてCに入れざるを得なくなってたんですね。 入門書にあったサンプルプログラムはコード数が少なかったから、 BをCに入れてるものが結構あったので無意識にこんなもんだと思ってました。 こういうのって本では学びづらいですね。 勉強になりました。 ありがとうございます。
261 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 11:04:14.67 ID:PbE4ojLD0.net] >>251 それはOOPではなくMVCな。一応。
262 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 11:05:17.79 ID:vhGL8v7ea.net] まぁGUIアプリケーションでのOOPの具体的なアーキテクチャだから
263 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 11:23:13.92 ID:RvuVG0qm0.net] MVCは初耳で今ググって勉強しました。 やはり自分のコードは人と共有できるレベルではなかったですね。 MVCの設計で修正してみます。 手続き型言語しかやってないので、 手続きで処理していって 「なんども同じ手続き出てくるな。」 と思ったらクラスにして分離する思考になってたんですけど、 それじゃだめですね。 こういうのが学べるいい本があったらいいなぁ。
264 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 11:32:37.31 ID:RvuVG0qm0.net] dataHolderクラスってABCDどれからもアクセスすることになるんですが、 パブリックにして、どこからでも読み書きできるようにしていいんでしょうか? バグの温床になるからダメ?
265 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 11:36:18.82 ID:RvuVG0qm0.net] マイクロソフトのホームページだとPublicにしてますね。 これだとどこからでもすべてのデータにアクセスできるから便利だし可読性もいいけど、 どこかでうかつにdataHolderの変数に変な値を入れると、 どこがバグになっているのか全コード読まなければいけないですね。 うーん・・・。 世の中そんなもんなのか?
266 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 11:43:38.40 ID:vhGL8v7ea.net] >>256 お好きに 結局は書きやすさと安全性のトレードオフ ガッチガチに書くならgetterだけのImmutableオブジェクトを表すインターフェイスとそれを実装する具体クラスに分離してViewにはインターフェイスだけ教えるとか(あまりやらない) 作る人数とか規模によってどの程度強制するか変わってくるから程よくやるのが重要, 一貫性は重要だが徹底しすぎるとしんどい
267 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 11:57:15.21 ID:RvuVG0qm0.net] >>258 immutableなんてものがあるんですね。 ごく一部の変数以外はimmutableで事足りるから、immutable設定にします。 publicでdataHolderクラス作ってメンバ変数はすべてimmutableにすれば、 可読性、コーディングの利便性、安全性 全部満たせますね。 なんて便利なんだ…。( ゚д゚)
268 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 12:02:17.65 ID:vhGL8v7ea.net] >>259 残念ながらC#では上手くImmutableに出来ない(出来るかもしれないが最近やってないので詳しい人教えて) TypeScriptとかなら既存の型にReadonlyを再帰的に付けた型が簡単に作れるんだけどなぁ
269 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 12:04:38.53 ID:F4kLnVK3p.net] MVCって、VとCの境界が曖昧になりがちだよな。 ってか、VとCを分ける様な事するからUIが使い辛い物になるんだよな。
270 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 12:06:20.36 ID:vhGL8v7ea.net] >>261 せやな MVVMとかあるしな
271 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 12:12:09.32 ID:F4kLnVK3p.net] そそ、MVCやMVPってのは、オンラインサービスみたいにデータ管理と画面操作が隔離してる様なコンピュータサービスでなら適してるけど、スマホとかパソコンの中で完結した操作性重視のアプリの設計には適して無いんだよな。
272 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 12:25:35.08 ID:CthSiE230.net] 厳密に言えば readonly と immutable は別 interface で表現出来るのは readonly
273 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 12:57:15.57 ID:RvuVG0qm0.net] 残念・・・ bool resultOfGetTimeLimit = int.TryParse(this.timeLimit.Text, out constant.timeLimit); みたいに定数をフォームから取得できればありがたいんだけどなぁ。 そういう需要ってあんまりないんだろうか。
274 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 14:45:46.09 ID:UZR1Ryt2a.net] >>265 何いってるのかわかりません
275 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 14:55:22.20 ID:5EDA9IkjM.net] それに変数名長すぎ