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
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] それに変数名長すぎ
276 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 14:55:53.42 ID:5EDA9IkjM.net] しかもbool型に見えない
277 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 17:01:44.57 ID:RvuVG0qm0.net] なんかもうMVCに従って書き直すの不可能な気がしてきた・・・ 初めから作り直すほうが早いかも・・・。
278 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 17:16:54.39 ID:15xgRckc0.net] >>269 MVCは基本的にWebだかんね…
279 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 17:19:31.54 ID:VhwAlNWxd.net] 設計思想根本から変えるのに小手先の修正で済むわけないよw
280 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 17:32:27.30 ID:XEHHkDisM.net] 初心者が勉強のためにゲームプログラムを作るのにMVCなんてナンセンスです。 先ず、何でもいいから動くものを作る。プログラムスタイルはそれからいろんなな本で学べばいい。
281 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 17:33:18.63 ID:oxtjRRByM.net] まず設計からやり直さないと無理だと思うよ
282 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 18:06:22.88 ID:RvuVG0qm0.net] 頭の中がどぁーっとなってきました。 とりあえずゲーム本体は完成したんですが、一部改変しようとしたらかなりの機能がすべてゲーム画面フォームにくっついてるので読みづらいことこの上ないなと。 データ部分を別構造にしたかったんですが、ほぼ句見直しに近い改変であたまがわやになってます。
283 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 18:11:39.59 ID:RvuVG0qm0.net] すんごい読みづらいコードなんだけどこのまま進めていいのかな・・・。 とりあえず力業で進めることは可能なんですけど気持ち悪い。
284 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 18:12:38.37 ID:5EDA9IkjM.net] >>274 で、でたーオブジェクト指向不出来form.cs全部書込奴w
285 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 18:16:14.33 ID:XIsYMxrj0.net] 動くコード書ける奴の方が神だからな。 設計どうのこうのなんて、動くコード書ける様になってから理解すれば良い。
286 名前:スなら作った後で反省的を挙げながらここはこう言う構造の方が良かったんじゃね? なんてやるのが一番設計の知識ぐ身につく。 [] [ここ壊れてます]
287 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 18:23:40.04 ID:XEHHkDisM.net] 自分のプログラムが汚いわかりにくいと思ったのなら、あなたはセンスがあるんだよ。 汚いプログラム書いて平気なプロもいるからね。 後はいろんなサンプルプログラムを検索して読んだらいい。あっ、これがいいとか気付きがあると思う。
288 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 18:26:39.51 ID:XEHHkDisM.net] プログラマの能力を試すには書かせるより読ませるのがいいからね。 人のプログラム読めない奴は進歩ないから。
289 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 18:31:48.49 ID:RvuVG0qm0.net] あれ、根本的なことが分かってないことが分かりました。 B DataHolder C ゲーム D スコア記録 CからBのインスタンスを生成 DataHolder dataHolder1=new DataHolder(); すればCのpublic変数aにアクセスするときはdataHolder.a=hoge;とかでいいけど、 DからBのdataHolder1の変数aにアクセスってできるんですか? CからDにdataHolder1の参照を渡すってこと??
290 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 18:33:40.32 ID:RvuVG0qm0.net] >>276 全部ではないけどほぼご指摘あってます・・・。 本に書いてある小さなプログラムはほとんどform.csに放り込んでたので、そんなものかと思ってた。
291 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 18:34:30.46 ID:RvuVG0qm0.net] >>277 ありがとうございます。 今ようやっと設計の大事さを学習しました。 レベル0から0.01ぐらいには成長できた気がします。
292 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 18:35:15.53 ID:RvuVG0qm0.net] >>280 そもそもこれが分かってなかったから一つのフォーム画面にいろいろ機能を盛り込みすぎたんだと。
293 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 18:37:29.64 ID:RvuVG0qm0.net] >>280 間違いました。 あれ、根本的なことが分かってないことが分かりました。 B DataHolder C ゲーム D スコア記録 CからBのインスタンスを生成 DataHolder dataHolder1=new DataHolder(); すればCのpublic変数aにアクセスするときはthis.a=dataHolder.a;とかでいいけど、 DからBのdataHolder1の変数aにアクセスってできるんですか? CからDにdataHolder1の参照を渡すってこと??
294 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 20:01:02.99 ID:9rdAnFG4a.net] まあなんだよ 今の君に必要なのは鉛筆と紙だ なんたらチャートのお作法なんぞ知らんでいいから、まずは機能を書き出して丸で囲め それからどの機能が何処から必要になるかを線引っ張って繋げ めちゃくちゃ線がごちゃごちゃするだろう? それをなるべく少ない線で済むように書き直すんだ何回でも
295 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 23:33:51.06 ID:RvuVG0qm0.net] >>285 自分で書いててこんがらがってきますね。 でもまずやってみます。
296 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 23:36:15.36 ID:RvuVG0qm0.net] Aフォームのメンバ変数、メソッドを BCフォームからも使用できるようするにはどうすればいいのでしょう。 Bだけで使用するならB内でAのインスタンス生成→ShowでAフォームを表示させればいいと思うのですが、 Cフォームでも使用するとなると、Cフォームで新たにAのインスタンスを生成するわけにもいかないですよね。
297 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 23:44:08.44 ID:7v9y2RSd0.net] >>287 ググるなりして調べた?そろそろ初心者スレでやって インスタンスを渡せばいいだけなのに
298 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 11:04:57.10 ID:ySggkKZM0.net] >>288 すいません。 ググってもよくわからなかったので質問したのですが安易に人に頼りすぎてましたね。 昨夜からわからないところを実際にコードで打ち込んでみて実験重ねて理解できました。 インスタンスの参照渡すって言っても フィールド渡し プロパティ渡し メソッド渡し と色々方法あるんですね。インスタンスの参照を渡す方法が分かってなかったから一つのクラスに一杯盛り込むことになってたんだと理解できました。
299 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 11:06:37.40 ID:ySggkKZM0.net] こういうのってCやってれば常識なんですね。 どこからC#でどこまでCの質問か分からずこちらで何でも聞いていました。 次から初心者板に移動してみます。 でも、みなさんのおかげでだいぶいろいろなことを学べました。 ありがとうございます。
300 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 13:59:35.41 ID:23x2pXKw0.net] 〇〇する機能みたいにして、重要だと思う機能ほど大きく書いて相関関係を、ドラマの登場人物の関係図みたいに描いたらなんとなくクラス図の基本が出来上がる。
301 名前:デフォルトの名無しさん mailto:sage [2018/05/13(日) 14:41:31.02 ID:ySggkKZM0.net] >>291 ありがとうございます。 クラス図についても勉強してみます。
302 名前:デフォルトの名無しさん [2018/05/22(火) 22:37:35.74 ID:gaTn3ZGLJ] Genericクラスのメソッドで 型が重複する場合の仕様について質問です class Dic<T> : System.Collections.Generic.Dictionary<int,T> { public bool Contains(int key) { return base.ContainsKey(key); } public bool Contains(T val) { return base.ContainsValue(val); } } ちょっと必要にせまられて、こんな雰囲気のクラスを作りました 基本的に、重複する型では利用しない予定ですが 気になってテストコードを作ってデバッグしたところ何の警告も出なく実行できて 「base.ContainsKey(key);」の結果が返ってきました これは言語仕様でしょうか? それともVisualStudioや.Net Framework仕様でしょうか? どなたか詳しい方、おしえてください ※ 環境は Visual Studio 2017 Community Framework 4.6.1