ふらっと C#,C♯,C#(初心者用) Part137at TECH
ふらっと C#,C♯,C#(初心者用) Part137 - 暇つぶし2ch521:デフォルトの名無しさん
18/05/12 10:37:30.03 yKmgHprg0.net
>>508
そういう無意味な比較意味ないじゃん
xlsで設定できるアプリに使い勝手で勝てるの?

522:デフォルトの名無しさん
18/05/12 10:38:25.47 15xgRckc0.net
>>510
それが無意味に思えるなんて幸せなやつだな

523:デフォルトの名無しさん
18/05/12 10:39:01.19 yKmgHprg0.net
>>511
だってjsonもxmlもいらねーもんよ

524:デフォルトの名無しさん
18/05/12 10:39:07.44 PQYWGVmCd.net
>>510
xlsとかwwwバージョン管理システム使ったことすらなさそうだな

525:デフォルトの名無しさん
18/05/12 10:39:44.13 vhGL8v7ea.net
残念だけどXMLはクソオブクソだけどXLSとかCSVはそれをはるかに上回るクソなの

526:デフォルトの名無しさん
18/05/12 10:39:58.36 yKmgHprg0.net
>>513
csvでもいいよ

527:デフォルトの名無しさん
18/05/12 10:40:08.84 15xgRckc0.net
>>512
C#やめた方がいいよ

528:デフォルトの名無しさん
18/05/12 10:40:21.22 yKmgHprg0.net
>>514
理由は?

529:デフォルトの名無しさん
18/05/12 10:40:23.88 NuxM0Gnx0.net
せめてxlsxにしてくれ

530:デフォルトの名無しさん
18/05/12 10:41:06.38 PQYWGVmCd.net
>>515
反論する気すら起きんわ

531:デフォルトの名無しさん
18/05/12 10:41:21.27 yKmgHprg0.net
db(Sqlite)もあるぞ

532:デフォルトの名無しさん
18/05/12 10:41:32.86 wBO8DWf8M.net
>>497の実験は「XHTMLのデータはJSONで記述するには適さない」ということを示しているだけだな
そりゃXHTMLのスキーマはXMLで表現しやすいように設計されてるんだから、
JSONだと属性とコンテンツの区別がなかったりして記述しづらいのは当たり前だ
JSONにはJSONに適したスキーマ設計がある

533:デフォルトの名無しさん
18/05/12 10:41:52.87 15xgRckc0.net
やっぱGitすら使えなさそうだな

534:デフォルトの名無しさん
18/05/12 10:43:33.27 yKmgHprg0.net
>>522
gitでcsvの差分見れないの?

535:デフォルトの名無しさん
18/05/12 10:44:43.29 15xgRckc0.net
>>523
Gitでsqliteの差分見るのかい?

536:デフォルトの名無しさん
18/05/12 10:45:36.20 vhGL8v7ea.net
>>517
XLS: バイナリ, 標準化されてない(されてるかも知らんが概ねExcelないと読めん)
CSV: not well standarized
XLSX: zip圧縮されたXMLじゃん

537:デフォルトの名無しさん
18/05/12 10:45:58.87 yKmgHprg0.net
>>524
dbの比較は簡単
バージョン管理の機能にはないけど

538:デフォルトの名無しさん
18/05/12 10:46:25.99 iloBjJ0sM.net
>>508
VSCodeのセッティングはネストが浅くて比較的読みやすいし、VSCodeによるコード生成がうまく機能してるからね

539:デフォルトの名無しさん
18/05/12 10:47:06.15 15xgRckc0.net
>>526
もはや何を言っているのかわからん

540:デフォルトの名無しさん
18/05/12 10:47:34.43 yKmgHprg0.net
>>525
ビジネスでExcel入ってない環境とかあるの?

541:デフォルトの名無しさん
18/05/12 10:47:44.90 kT5GzpcRa.net
エクセルからマスターや設定をインポートするようになってるシステムは壊しそうで怖いわ
うっかりレイアウトがズレてて正しくデータが取れなくなるとかよくある
バージョン管理の問題にも関連するけど、再現性が乏しいんだよエクセルは

542:デフォルトの名無しさん
18/05/12 10:47:54.11 WIOr5zBad.net
>>526
おれsqliteのバイナリをテキストエディタで書き換える能力ないのよ

543:デフォルトの名無しさん
18/05/12 10:48:23.30 yKmgHprg0.net
>>528
DB同士のデータの比較したことねーの?

544:デフォルトの名無しさん
18/05/12 10:48:28.96 My8LWy2ka.net
>>521
そこの会社の内部の抗争があるんだと思う
いまどきxhtmlを使ってる派閥がいて
そいつらが不利になったので意味不明なテストでxhtmlすげーをやって
何も考えないやつがそれに賛同したと
エジソンが高圧送電は危険だと言って動物を殺す実験をしたようなもの

545:デフォルトの名無しさん
18/05/12 10:48:32.15 15xgRckc0.net
>>529
いくらでもあるよ

546:デフォルトの名無しさん
18/05/12 10:48:32.71 vhGL8v7ea.net
>>529
開発は仮想のLinux上とか普通にあるから

547:デフォルトの名無しさん
18/05/12 10:49:49.02 15xgRckc0.net
>>532
json vs xmlの比較とは全く異なる次元のものを持ち込んで比較しようとするクズ

548:デフォルトの名無しさん
18/05/12 10:50:39.51 yKmgHprg0.net
>>535
openoffice入れろよ

549:デフォルトの名無しさん
18/05/12 10:51:17.57 15xgRckc0.net
>>537
こいつdotnet newすら打ったことなさそうだな

550:デフォルトの名無しさん
18/05/12 10:51:39.21 yKmgHprg0.net
>>536
そっちは完全に編集するツールがないじゃん
あってもゴミみたいなのしか

551:デフォルトの名無しさん
18/05/12 10:51:42.38 vhGL8v7ea.net
>>537
開発用システムでXLS読むために入れるとか本末転倒

552:デフォルトの名無しさん
18/05/12 10:52:47.54 yKmgHprg0.net
>>540
お客さんに何で編集したいですか?
って聞いてみろよ
Excelでできるって言ったら大喜びするぜ

553:デフォルトの名無しさん
18/05/12 10:53:32.62 15xgRckc0.net
>>539
専用ツールがないと編集できないものなんてイラネ

554:デフォルトの名無しさん
18/05/12 10:53:45.26 iloBjJ0sM.net
>>510
Excelの場合はそもそもツリーデータ構造を表現するためのスタンダードなフォーマットが無いので比較する以前の段階
まずはツリー形式のデータ構造を表現するためのフォーマットのデファクトスタンダードを業界全体で決めてくれ
比較はその後に回していいんじゃないかな

555:デフォルトの名無しさん
18/05/12 10:54:09.51 15xgRckc0.net
>>541
Linux使ったことないやろ

556:デフォルトの名無しさん
18/05/12 10:55:07.24 NuxM0Gnx0.net
vscodeのsettings.jsonとか見せたら発狂しそう

557:デフォルトの名無しさん
18/05/12 10:55:50.61 vhGL8v7ea.net
>>541
客は会社のシステム部門なんで別にExcel喜ばれないですむしろ殴られそうです

558:デフォルトの名無しさん
18/05/12 11:00:04.65 vhGL8v7ea.net
あとXLSXはともかくXLSをC#から弄ったことないんだけどExcelなしで読めるの?
COM使って読むとか言わないよね?

559:デフォルトの名無しさん
18/05/12 11:08:10.26 iloBjJ0sM.net
>>521
やっとちゃんと読んでレスしてる人が来た
確かにもともとXMLをベースに考案されたデータ構造なのでXMLに有利と言えるかもしれない
しかしそれを認めると議論の発端である「jsonはxmlより優れている」という命題を「対象次第ではxmlのほうが有利である」という命題で最初から否定することになってしまう
本当に「jsonはxmlより優れている」なら対象がXHTMLだろうとなんであろうともjsonのスコアが高くなっていなければおかしい

560:デフォルトの名無しさん
18/05/12 11:23:55.86 P5sx5scC0.net
なんでもかんでもExcelでやりたいVBAer()さんはVBAスレにおかえりください
事務員さんの常識はプログラマには通用しません

561:デフォルトの名無しさん
18/05/12 11:30:46.95 15xgRckc0.net
>>547
ExcelCreator使って、Excelのインストールされてない環境で読み書きしてた
昔々ね

562:デフォルトの名無しさん
18/05/12 11:33:52.89 5EDA9IkjM.net
>>467
横から失礼。マイクロソフトの人もそう言ってるよ

563:デフォルトの名無しさん
18/05/12 11:34:13.72 FqtFYlf30.net
>>547
OLEDB使えばExcelインストール無しでも読めるで

564:デフォルトの名無しさん
18/05/12 11:34:57.85 5EDA9IkjM.net
>>471
一言でいえば古い。

565:デフォルトの名無しさん
18/05/12 11:36:20.02 FqtFYlf30.net
この手の議論はUI入力とデータ保持を同一のものとして考えちゃうから平行線だわな

566:デフォルトの名無しさん
18/05/12 11:40:59.55 My8LWy2ka.net
>>548
キミが変なこと言ってるだけ
業務での作業性、操作性においてスマホよりPCがすぐれてるという人に対して
PCではタッチ入力できないとかそんな難癖つけてるだけ

567:デフォルトの名無しさん
18/05/12 12:09:17.30 iloBjJ0sM.net
>>555
残念だけど君には話が通じないね

568:デフォルトの名無しさん
18/05/12 12:44:54.52 ek+Myn8j0.net
>>480
EndsWithに第二引数とかあったのか
いけるわ!ありがとう

569:デフォルトの名無しさん
18/05/12 12:51:51.95 XqIGE8bt0.net
デザインパターンのブログ(ヤフーブログ)・・・・なかなか良い。
URLリンク(blogs.yahoo.co.jp)

570:デフォルトの名無しさん
18/05/12 13:25:14.58 UZR1Ryt2a.net
>>554
それ以前の話でしょw
設定データをユーザーが編集したいなんてかなり特殊な前提でありかつ質問者も
そんな要件を一言も上げてないのにアホかと、
.NET標準のシリアライザではなくあえて外様を使う理由はと聞いて、返って来た明確な答えは
結局「そっちの方が目新しいから」だけ。
中学生じみてるよと言ってるそばからこれだ。
プログラマ板みたいな話になっちゃうけど、本当今じゃプログラマって知能指数が低い奴が
やる仕事になってることを実感するよ

571:デフォルトの名無しさん
18/05/12 13:26:52.97 My8LWy2ka.net
json,.netを使うのは早くて使いやすいからだと思う
使いやすいと書くとまた難癖つけられそうだけどw

572:デフォルトの名無しさん
18/05/12 14:59:39.27 d5Fp40ymM.net
>>560
どういう観点で見たときの使いやすいなのか説明が無いよね?

573:デフォルトの名無しさん
18/05/12 15:01:04.84 15xgRckc0.net
>>559
Microsoftの基本的なライブラリもJSON.netに依存してる
URLリンク(www.nuget.org)

574:デフォルトの名無しさん
18/05/12 15:05:00.44 AEXJFe1f0.net
自分が json を使うとしたら、
・周りが使ってるから
・xml と比較して見た目が好み
って程度の理由だなあ。
どっちが優れてるかの比較なんてそれ自体がズレてるような。

575:デフォルトの名無しさん
18/05/12 15:35:45.32 KCIDKf2Q0.net
暇そうだな
同じヒマでも俺は運動してたけど

576:デフォルトの名無しさん
18/05/12 15:49:43.76 F4kLnVK3p.net
シリアライ�


577:Y出来れば何でもいいよ。



578:デフォルトの名無しさん
18/05/12 16:47:10.12 ek+Myn8j0.net
結局Windowsのフォームアプリの設定ファイルは何が適してるんだよ
jsonでもxmlでも大差ないよ好きな方どうぞって結論でいいの?

579:デフォルトの名無しさん
18/05/12 16:54:33.55 gqffA4Jja.net
>>566
そもそも今時フォームアプリなんか採用する時点で全力で時代に背を向けてるんだからどうでもいいよ

580:デフォルトの名無しさん
18/05/12 17:04:25.00 I6pHI0GBa.net
>>566
Setting使え
終わり

581:デフォルトの名無しさん
18/05/12 17:37:38.32 AiYRYzWlM.net
Settings使え+1

582:デフォルトの名無しさん
18/05/12 17:53:54.95 5EDA9IkjM.net
>>566
configファイルにjson形式で書き込む

583:デフォルトの名無しさん
18/05/12 17:58:28.95 UZR1Ryt2a.net
>>568-569
質問者は「ポータブルアプリの設定ファイル」と言ってる。
ポータブルアプリがUSBメモリに入れて持ち歩くような物のことを言ってるなら、
Settingsは明らかに不適切
あと、個人的にあんまりアプリケーション設定使ったことないんで勘違いしてるかもしれんが、
これって結構制限も多いしいろいろ面倒だよね

584:444
18/05/12 21:13:35.08 4i84e4IV0.net
質問者ですが、こんなに荒れてしまうとは、、、申し訳ない。
おっしゃるように通常のWindowsフォームアプリならSettingsがデザイナで設定できるし楽なんですが、
ファイルの格納先がローカル(Roamingだったかな?)になるのでUSBメモリなどに持ち運んで使うポータブルアプリとしては採用できないというところでの質問でした。
特に設定ファイルの可読性を求めないようであれば、
形式としては古いが追加ライブラリ不要のXMLか、
スタンダードな形式だが別途追加ライブラリ必要なJSONか、
好きな方を選べって感じですかね。。

585:デフォルトの名無しさん
18/05/12 21:31:41.93 9vavBtpKM.net
ユーザー定義リソースにしてexeに直接書き込むって方法もあるよ

586:デフォルトの名無しさん
18/05/12 21:32:18.31 FqtFYlf30.net
>>572
USBで運ぶポータブルアプリ程度ならApplicationSettings保存でもいいんじゃないの?

587:デフォルトの名無しさん
18/05/12 21:33:56.53 yKmgHprg0.net
exeの直下でいいよな

588:デフォルトの名無しさん
18/05/12 21:48:32.28 euW2BAe4a.net
アプリケーションスコープにするとアプリから書き込みできないよ

589:デフォルトの名無しさん
18/05/12 22:03:47.45 fKL1gupm0.net
>>575
でもアクセスの速度違うときあるからね。

590:デフォルトの名無しさん
18/05/13 14:47:14.23 ySggkKZM0.net
すいません。
初心者なのでこちらに移動してきました。
MVC的な設計で
初期設定値を入力するフォーム

初期設定値を格納するクラス
というのを作りたいのですが、
A.
クラス側に各変数のプロパティを作成
フォームからプロパティを介してクラスの変数に値を代入
B.
クラス側にフォームの初期値を取りに行くメソッドを作成
クラスからメソッドを実行してフォームに値を取りに行く
のどちらが良いのでしょう?
自分ではAの方がよさそうな気がするのですが、一般的な設計としてこうするというのがあったら教えてください。

591:デフォルトの名無しさん
18/05/13 16:02:40.98 GQV4/ETF0.net
ケツの穴から手をつっこんで奥歯をがたがたみたいなBよりA

592:デフォルトの名無しさん
18/05/13 16:26:25.12 N5R39axQ0.net
>>578
どっちでも動きゃいいだろ
さっさと完成させろよ

593:デフォルトの名無しさん
18/05/13 16:39:15.74 i7PAGBqeM.net
>>578
// form
void btnSaveInitialSettings_Click(object sender, EventArgs e) {
try { this.SaveInitialSettings(); }
catch(...) { ... }
}
void SaveInitialSettings() {
var initialSettings = this.GetInitialSettings();
var reaction =
this.initialSettingsController.SaveInitialSettings(initialSettings);
reaction?.Invoke(this);
}
// controller
Action<IInitialSettingsView> SaveInitialSettings(InitialSettings initialSettings) {
this.initialSettingsService


594:.SaveInitialSettings(initialSettings); return view => view.Refresh(); }



595:デフォルトの名無しさん
18/05/13 18:54:27.05 kDeIpxe/p.net
初心者は出来上がってから検討すりゃいいんだよ。
つうか、プロ目指してるなら、先ずは完成させる癖を付けないとな。
万年アマチュアでいいのなら些末な問題で盛り上がればいいさ。

596:デフォルトの名無しさん
18/05/13 20:18:25.58 QhZTiQlx0.net
まず終わらせろ、Facebookのにいちゃんも言ってたべな。

597:デフォルトの名無しさん
18/05/13 20:30:10.29 i7PAGBqeM.net
Facebookにいちゃんが誰かわからんがそいつが言うまず終わらせろ、とお前が考えるまず終わらせろは別物だと思うぞ
ユニットテストとリファクタリング込みでまず終わらせろ、って言ってるならマトモだけど、将来のことなにも考えずまず終わらせろって言うならただの害悪

598:デフォルトの名無しさん
18/05/13 20:32:15.38 23x2pXKw0.net
>>584
リファクタリングなんか完成した後にバージョンアップする機会があったらやればいいんだよ。

599:デフォルトの名無しさん
18/05/13 20:35:20.07 kDeIpxe/p.net
将来が有るかどうかなんて、売れてから考えろw
タイムイズマネーだ。無駄なリソース費やしてる暇が会ったら次の案件片付けろ。

600:デフォルトの名無しさん
18/05/13 20:36:03.21 N5R39axQ0.net
>>585
そうだよね
エッチな絵が一枚も表示されないのにリピーターがいることを想定してる
なんてピンボケもいいとこだよね
割とマジで

601:デフォルトの名無しさん
18/05/13 20:37:25.10 +qfB7sI70.net
仕様通りの動きだけど汚いコードと
仕様通りの動きじゃないけど綺麗なコード
を同じ時間で仕上げたとして、どっちが優れているかと言えば前者だよな

602:デフォルトの名無しさん
18/05/13 20:58:57.32 9JUaags60.net
>>588
そりゃ仕様満たしていないなら比較以前の問題だわな
仕様満たして完成までの期間で比較とかならともかく

603:デフォルトの名無しさん
18/05/13 21:04:34.41 kDeIpxe/p.net
まあ、熟練者になれば、素早く仕様通りのコードを綺麗に仕上げて来るからな。
初心者は先ず動くコード、次に仕様通り、最後に綺麗なコードでいいよ。
時間掛かるのはこの際問題にしないw

604:デフォルトの名無しさん
18/05/13 21:04:59.21 N5R39axQ0.net
リピーターが多い汚いコードと
リピーターが少ない綺麗なコード
後者はゴミだよね

605:デフォルトの名無しさん
18/05/13 21:14:50.20 i7PAGBqeM.net
世の中の多くのバカが勘違いしてるんだけど
綺麗なコード==間違えやすい製造に時間がかかるコード
じゃないんだよね
綺麗なコードはバグが少ないし製造も早い
汚くても動くコードを早く書け!なんて言ってるやつは根本的に何かがズレてる
そんな方針でコーディングしたら汚くて動かないコードを時間をかけて作る羽目になる

606:デフォルトの名無しさん
18/05/13 21:19:44.86 kDeIpxe/p.net
洗練された華麗なコードとインデント揃っただけの綺麗なコードを混同してるばか発見

607:デフォルトの名無しさん
18/05/13 21:22:07.78 asXlnx2Ka.net
>>578
UI(Form)がモデル(何か仕事をするクラス)の参照を持つのは問題ないが、
逆は良くない。理由は、
(1) 役割分担があいまいになる
厨房の人間が1分おきにウェイターに注文を確認するのは適切な役割分担と言えるか?
(2) つぶしがきかない
Formの参照を握ってFormのメンバーを操作するクラスは、UIをWPFやUWPに
変更しても使いまわしできるか?

608:デフォルトの名無しさん
18/05/13 21:59:31.92 ySggkKZM0.net
>>581
一読で理解できる知識がないのですが、勉強してみます。
ありがとうございます。

609:デフォルトの名無しさん
18/05/13 22:02:31.19 ySggkKZM0.net
>>594
UIがデータ格納用クラスのインスタンスを生成
UIがプロパティを介してデータ格納用クラスの変数に代入
UIがコントローラにデータ格納用クラスのインスタンスを渡す
みたいな感じでよろしいでしょうか?

610:デフォルトの名無しさん
18/05/13 22:27:53.20 asXlnx2Ka.net
>>596
>UIがデータ格納用クラスのインスタンスを生成
誰がモデルのインスタンスを生成するかはケースバイケースだしどうでもよろしい
>UIがプロパティを介してデータ格納用クラスの変数に代入
重箱の隅をつつくようだが、オブジェクトのプロパティやメソッドを操作する時に
「データ格納用クラスの変数に代入 」なんていう内部の実装を意識する必要はない。
必要はない、というか意識しなくても使えるように作るのがカプセル化。
>UIがコントローラにデータ格納用クラスのインスタンスを渡す
俺がMVCを理解してないだけの可能性もあるが、少なくともWindows Formでは
VとCを分けたりしないのが普通と思う。コントローラなんてイラネ

611:デフォルトの名無しさん
18/05/13 23:13:35.13 TUC5Idjma.net
話蒸し返して悪いんだが、xmlシリアライザーって今使ってるとやばいの?業務アプリの設定ファイルほぼこれで今までやってたんだが。。
とりあえず今やってる案件JSONで見直してみるか
一人で開発やってるとついついこういうのに遅れがちになるなぁ

612:デフォルトの名無しさん
18/05/13 23:15:02.41 F2hiJGIV0.net
>>598
どんな用途で?

613:デフォルトの名無しさん
18/05/13 23:22:29.79 KKJavIw30.net
csvとJSONなら圧倒的に後者のがメリットあるけど、
xmlとJSONなら規模がでかくない限りどっちでも良いや

614:デフォルトの名無しさん
18/05/13 23:33:10.62 R40HLbPBa.net
>>598
業務ドカタ系でJSONなんかほとんど無いから安心しろ
客サイドは情シスですらJSON何それとか平気で言いやがるしOSSのライブラリが必要なのもネック

615:デフォルトの名無しさん
18/05/13 23:37:31.23 OUJCfbgi0.net
>>600
Excelで編集できるできないって違いもあるのに
どこが「圧倒的」なの?
根拠もない主張を強く推すなよ
願望だろ?お前の

616:デフォルトの名無しさん
18/05/13 23:38:24.99 PSHb3apy0.net
PCのiTunesって曲の情報管理全部XMLだよな
どうにかならんのか
URLリンク(i.imgur.com)

617:デフォルトの名無しさん
18/05/13 23:40:15.36 u4TQvgwd0.net
Ant, Maven とか、Java系は、XML。
Android 画面の設定ファイルとか
Windows でも、XAML で画面設定する
プロジェクトの設定ファイルも
JSON を設定ファイルに使うのは、JavaScript を使ったもの。
例えば、Node.js を含んだ、VS Code
他には、プログラミング言語自体が設定ファイルになるもの。
Ruby, Groovy, Haxe

618:デフォルトの名無しさん
18/05/13 23:48:46.83 i7PAGBqeM.net
>>598
え?全然やばくないよ
むしろ安定した手堅い選択肢と言っていい
JSONを設定に使う製品はむしろ少数派

619:デフォルトの名無しさん
18/05/13 23:57:11.22 F2hiJGIV0.net
>>604
>JSON を設定ファイルに使うのは、JavaScript を使ったもの
最近のC#もそうですが

620:デフォルトの名無しさん
18/05/13 23:57:32.58 OUJCfbgi0.net
>>598
ヤバイってどういう状況?
殺されるの?

621:デフォルトの名無しさん
18/05/14 00:04:35.25 3eK20qHjM.net
>>606
project構成は不評で結局xmlに戻ったね
ASP.NETのappsettingsはボイラープレートがjsonになってるけどxmlやiniもサポートされてる

622:デフォルトの名無しさん
18/05/14 00:05:32.49 wCRTCiuQ0.net
素のJSONはコメントが使えないので設定ファイルには使い辛い。

623:デフォルトの名無しさん
18/05/14 00:17:32.79 gDWY5JTja.net
川俣さんのことを馬鹿にする人が2chには多いけど、この記事の趣旨は正しいと思う
URLリンク(www.atmarkit.co.jp)
特定の技術への信仰と「俺スゲー」っていう間抜けな自己陶酔が結びついてる奴ってよくいるし、
このスレにも時々そんなのが出るけど、そういう奴のいうことは真に受けない方がいいですw

624:デフォルトの名無しさん
18/05/14 00:18:47.47 Wjyh58JD0.net
>>608
まあ普通はjson使うがな

625:デフォルトの名無しさん
18/05/14 07:03:43.68 oC/RgBRx0.net
つか業務で使うなら余程のことがない限り枯れた技術の方が安定する

626:デフォルトの名無しさん
18/05/14 07:06:02.02 Wjyh58JD0.net
>>612
COBOLとか?

627:デフォルトの名無しさん
18/05/14 07:55:56.39 zbYXMED5M.net
COBOLは実際優れてるんだよなあ
低品質なPGでもほぼ完璧に見積工数通りに仕上がるし、バグもほとんど出ない
金持ちな客からきっちり工数見合いで金取れるならSIerにとってこれほど好都合な言語はない

628:デフォルトの名無しさん
18/05/14 08:01:56.16 wRU00x5/r.net
バグでないのはアカンやろw

629:デフォルトの名無しさん
18/05/14 08:12:24.86 I+nT90nna.net
それはバグが摘出できていないだけでは

630:デフォルトの名無しさん
18/05/14 08:30:53.44 6WkSgDmyr.net
工数が低減できるかどうかよりも見積が精確にできることの方が管理者にとっては重要ってわけだね

631:デフォルトの名無しさん
18/05/14 09:03:36.07 coszmN5L0.net
バグが出ないに総ツッコミでワロタ

632:デフォルトの名無しさん
18/05/14 09:45:10.45 tQHKR4rj0.net
大体この時間にABENDしますって
異常停止をルーチンワーク化して運用している所があったな

633:デフォルトの名無しさん
18/05/14 10:05:11.99 TQ68xzma0.net
現場運用だと稀によくある
開発側がそれを織り込んじゃダメだけど

634:デフォルトの名無しさん
18/05/14 19:19:28.87 M+KhV3wka.net
>>598だけど
蒸し返した話にレスくれてありがとう
自分の用途にはxmlでも問題なさそうでとりあえず安心した

635:デフォルトの名無しさん
18/05/14 20:12:46.13 CBd8Qc4H0.net
SVGやMathMLのような外部の名前区間が出てくるとか、Xamlのようにかっちりしたものを書きたい場合はXMLが有利
文字列や数値しか出てこないような簡単な構造ならJSONの方が便利なことも多い。
Trueなのかtrueなのかとか考えなくても良くて、エディタがサポートしてくれるし、エスケープの仕様とかがシンプルで、ファイルも小さい。逆に言うとその程度なのでわざわざ切り替えるほどでもないとは思う

636:デフォルトの名無しさん
18/05/14 20:37:51.15 5czuzhWO0.net
>>597
VCわけないんですか。
うーん・・・。
いろいろな設計方法があるということですね。
インスタンスの生成順として
A→B
A→C
とAからCにBのインスタンスを渡す方法は分かるのですが、
C→A
A→B
とインスタンスを生成した時、CにBのインスタンスを返すことって可能なのでしょうか?

637:デフォルトの名無しさん
18/05/14 20:54:23.97 g5WxNsfna.net
デリゲート

638:デフォルトの名無しさん
18/05/14 20:59:59.56 IVWzojCa0.net
【マンモグラフィー】おっぱい挟んで癌検査…必要?
スレリンク(bio板)
【ペットフード】告発したら3人組に棍棒で襲われた
スレリンク(hosp板)
【アマルガム】水銀を歯に? 厚労省『暴動が怖い』
スレリンク(doctor板)

639:デフォルトの名無しさん
18/05/14 21:00:16.16 qPzo5Sk00.net
>>623
「返す」ことにこだわりがあるのなら結構難しい
そこにこだわらず、単にCからbを扱えれば良いのならa.bでアクセス可能だろう

640:デフォルトの名無しさん
18/05/14 21:35:43.16 1pddwh+ma.net
>>623
何でわざわざ話を複雑にするの?
class C
{
  A a;
  B b;
  public C()
  {
    a = new A(this);
    b = new B(a);
  }
}
例えばこれじゃダメなの?

641:デフォルトの名無しさん
18/05/14 21:38:33.33 Ju2ea7rBa.net
DIコンテナとか諸々のイディオムを知らない初心者だからまぁしゃあない
MVCでもMVVMでもいいからチュートリアル的なものをひとつやっとくとだいぶ違うとは思う

642:デフォルトの名無しさん
18/05/14 21:40:59.32 orCVIDzn0.net
>>626
まず「返す」の意味が分からないんだよな
>>623
何のためにその実装が必要なのか、まずはそっちから
普通は複数の派生インスタンス扱いたいのならどこかでまとめて管理する方が楽
横に伸ばしていくんじゃなく中心から引っ張っていく形

643:デフォルトの名無しさん
18/05/14 23:18:38.41 coszmN5L0.net
馬鹿なこと考えないでジャンケンゲームでも作ってろって

644:デフォルトの名無しさん
18/05/14 23:19:52.93 6thsxJoDM.net
>>623
今時のマルチレイヤな設計ってのは、「汚い場所」をどこかに決めて、そこが依存関係の解決を一手に引き受けるようにするんだよ
で、他の部分は「汚い場所」に直接依存しないようにするの
>>627の例でいうと、Cを「汚い場所」とするならAがCを直接参照するのは良くなくて、
AからCのメソッドをコールバックしたいんだったらインターフェイスを介して呼ぶようにしたりする
汚い場所をどこにするかだけど、フォームアプリならフォームだったり、Webアプリならコントローラだったり
処理の起点となり、かつ、どのみち単体テストが困難な場所を選ぶのが一般的だ

645:デフォルトの名無しさん
18/05/14 23:24:11.06 LQsoSslkM.net
なんだか要領を得ないからわからないけど
Bを操作するメソッドをAに用意してCがA経由でBを操作するのはだめなのか?

646:デフォルトの名無しさん
18/05/14 23:36:29.55 0rMMZwm+0.net
MVC をわかってないような奴に、何も教えられない
まず、無料のRails チュートリアルで、MVC webアプリの設計から学べ

647:デフォルトの名無しさん
18/05/15 00:01:41.20 NfuIoln0a.net
Railsってモデルがフォームの構造に依存するからなあ
あんなのAccessのフォームなんかと同レベルだよ
変な癖がつくから初心者には適さない

648:デフォルトの名無しさん
18/05/15 00:21:50.03 joJAW/ym0.net
>>633
スレチ

649:デフォルトの名無しさん
18/05/15 06:26:55.76 bIQIvbQJ0.net
MVVMを理解するには何からはじめたらいいの?

650:デフォルトの名無しさん
18/05/15 07:15:54.13 OnclRViVM.net
>>636
何から始めても理解できない
分離するどころかやればやるほど結合が強くなる現実に打ちのめされるだけ

651:デフォルトの名無しさん
18/05/15 07:32:22.06 bIQIvbQJ0.net
やってみたけど難し過ぎて手に負えなかったってことだね。

652:デフォルトの名無しさん
18/05/15 07:36:31.19 IL2LN/1vM.net
>>636
Vue.jsあたりかな
XAMLはテンプレートやコマンドバインディングが複雑すぎて本質を掴みづらい
WebのMVVM系フレームワークのほうがずっと見通しが良くてMVVMの本質を素直に実装してる

653:デフォルトの名無しさん
18/05/15 07:43:57.19 dqMabmxz0.net
まずはUNDOなりマクロを実装するのに何が必要か
考えると、「C」の動きが見えて来るかと思うけどね
GOFの最初の章にも説明はあるよ

654:デフォルトの名無しさん
18/05/15 07:48:40.53 WESx87C+0.net
>>627
アクセシビリティに一貫性がありませんってエラーが…
internalでインスタンス生成するとOKなんですが、フォームクラスはpublicで宣言してるんですけど。

655:デフォルトの名無しさん
18/05/15 07:52:16.57 WESx87C+0.net
>>629
ご指摘を受けてメインのフォーム上でインスタンス管理しようとしているのですが、
アクセシビリティの一貫性というエラーが出てきています。
public partial class ExaminationForm : Form
{
public InitialSettingForm initialSettingForm;
public InitialValues initialValues;
で最後の行にアクセシビリティ一貫性のエラーが・・・。
3行目のpublicをinternalにするとエラー消えるのですがなんでだろう。

656:デフォルトの名無しさん
18/05/15 07:56:03.82 jP3S3vDhM.net
そのビューの入出力項目と隠し項目とユースケースを抽出するだけだよ
ログイン画面だったら
入出力項目として
・ユーザーid
・パスワード
隠し項目は無し
ユースケースは
・ログインする
なので
class LoginViewModel {
public string UserId { get; set; }
public string Password { get; set; }
public void Login() {
// login impl
}
}
こうなる
あとはViewがVMを監視するために変更通知イベントなどを実装しましょう
それだけ

657:デフォルトの名無しさん
18/05/15 07:59:07.77 5QugQ9oMM.net
>>636へのレスな↑

658:デフォルトの名無しさん
18/05/15 07:59:13.31 4jNLOtgZa.net
>>642
InitialValuesクラスがinternalなんだろ
publicに変えれば意図通りになる
言っちゃ悪いけど正しい設計とか気にするレベルじゃないと思うよ
まずは汚くてもいいから一本何か形にできるようになってから考えればいい

659:デフォルトの名無しさん
18/05/15 08:38:53.30 WESx87C+0.net
>>645
ああああああああ!
そこなのかあああ!
classってデフォルトでinternalになるんですね。
というかinternalって省略されるから気づきませんでした。
ここで半日費やしてたのでものすごく助かりました。
ありがとうございます。m(__)m

660:デフォルトの名無しさん
18/05/15 08:42:40.68 WESx87C+0.net
>>645
一本ゲーム作ったんですが、form1(初期値)、form2(ゲーム)にほとんどぶっこんだオブジェクト指向ほぼ無視プログラムになってしまったので、
ゲーム内のデータ管理とform2だけでも分離しようとして悪戦苦闘しています。
はるか昔にBasicやったぐらいなので、インスタンスの参照渡しとかその辺がうまく実装できなくて・・・。
勉強用に買った本にもインスタンスの参照渡しなんて全く書いてないし・・・。(´・ω・`)

661:デフォルトの名無しさん
18/05/15 08:47:43.78 WESx87C+0.net
あれでも
//インスタンス生成
InitialValues initialValues = new InitialValues(); 
//インスタンスの参照渡し
initialSettingForm.InitialValuesPointer = initialValues;
としているのに
フィールド”InitialValues"は割り当てらせません。常に規定値nullを返します。
となります。
実際にnull値が入ってるようで、initialSettingFormにインスタンスの参照は渡せていない模様・・・。
newしてるのになんで割り当てられませんと出るのでしょう??

662:デフォルトの名無しさん
18/05/15 08:55:56.96 WESx87C+0.net
//インスタンス生成
×InitialValues initialValues = new InitialValues(); 

this.initialValues = new InitialValues(); 
でした。すいません。

663:デフォルトの名無しさん
18/05/15 09:03:30.06 WESx87C+0.net
>>648
すいません。ゴチャゴチャしてた変数名整理したらエラー消えました。。。
お騒がせしてもうしわけありません。

664:デフォルトの名無しさん
18/05/15 09:34:05.49 IdD83PdN0.net
>>647
C++ 以外のすべての言語で、インスタンスの参照渡しだろ

665:デフォルトの名無しさん
18/05/15 10:42:46.03 WESx87C+0.net
>>651
初代MSX-Basicでゲーム作ってた頃以来のプログラミングなので(;^_^A

666:デフォルトの名無しさん
18/05/15 10:47:12.03 WESx87C+0.net
アホな質問ですが、
Class InitialValue
に初期値を全部詰め込み、必要であればコントローラから参照しているのですが、
インスタンスの参照をinitialValueとすると
initialValue.StartPointX+hoge
などインスタンスの参照がくどくて読みづらい。
いっそiVとかしたいのですが、自分にしかわからない省略は良くないと聞いたもので・・・。
initialValue.StartPointX
initValue.StartPointX
iV.StartPointX
どれが読みやすいコードでしょうか?

667:デフォルトの名無しさん
18/05/15 12:29:44.99 2i/hB9LUM.net
>>653
どれもダメ
initialValueをそのまま使わずに設定値を使うクラスにコピーして

668:デフォルトの名無しさん
18/05/15 13:05:19.58 WESx87C+0.net
>>654
えええ!
データはデータクラスで一元管理じゃないんですか?
そうしないとフォームなどからデータクラスを変更した時に、
コントロールクラス側で


669:その通知を受け取って もう一度データクラスからコントロールクラスにコピーする仕組みが必要になってきますよね。



670:デフォルトの名無しさん
18/05/15 14:10:34.54 l7Fk1Hkl0.net
自分がアホだと分かってる割には自分の判断を信じてるのな
アホ草

671:デフォルトの名無しさん
18/05/15 14:32:03.09 bP9crr2Q0.net
勉強のためにプロが書いた大きなプログラムを見たんだが
変数が全部4桁英数字でランダムに発生させてるような文字列だった
僕ら初心者には「これ何の変数だっけ?」と分かりにくいだけなんだけど
大きなプログラムだと万が一、変数がダブったりするのを避けるためにそうするんですかね?
変数一覧表かなにか作るんですか?

672:デフォルトの名無しさん
18/05/15 14:38:53.82 WESx87C+0.net
>>656
いや、最初はコピーする仕様だったんですが、
データクラスで一元管理をするアドバイスを受けて変えたところです。
コピーするんなら元の仕様のままでよかったのかということに。

673:デフォルトの名無しさん
18/05/15 14:54:54.48 oubZzl5I0.net
>>657
変な変数名は難読化されてるだけ

674:デフォルトの名無しさん
18/05/15 15:26:01.82 UPWhPqGh0.net
>>657
当然だよ。変数使うには課長級の決済が必要。変数管理台帳ファイルに全部記録されている。

675:デフォルトの名無しさん
18/05/15 17:20:29.21 nA4SMkbe0.net
>>659
そうか、公開用にリファクターしたのかな
いちいち一覧表見ないと何処につながってるか見えないなんて不便だもんね

676:デフォルトの名無しさん
18/05/15 18:44:33.69 Fj6Vms3Xa.net
>>658
変数名が妥当かどうか聞いてるんじゃなかったの?w
そのInitialValueとやらのクラスを使う実装方法が妥当かどうかは実現すべき仕様を誰も知らないので
誰にも分からないと思うよw
ローカル変数の命名に関しては、型名InitialValueをそのまま変数名にしても
何をやってるのか理解できるような文脈なら変数名をivにしても同じことでしょう。
だったら短い方がいい。
ただしローカル変数でも説明的な名前の方が適切な場合もあるので馬鹿の一つ覚えはダメ。
情況に応じて柔軟に

677:デフォルトの名無しさん
18/05/15 19:35:30.36 9ix52upSr.net
>>660
初心者が真に受けるからやめれ

678:デフォルトの名無しさん
18/05/16 10:08:34.12 5p+fPd0U0.net
int[] intData = new int[10];
int intThread = -3; // 閾値
int intCount = 0;
for (int i = 0; i < intData.Length; i++)
{
if (intThread >= 0)
{
if (intData[i] > intThread)
{
// 処理
intCount++;
}
}
else if (intThread < 0)
{
if (intData[i] < intThread)
{
// 処理
intCount++;
}
}
}
閾値がプラスとマイナスで条件式を変えたいんだけど、
中の処理が一回で済む書き方ってあります?

679:デフォルトの名無しさん
18/05/16 10:48:11.15 6eYS9/+hd.net
=を含まない条件式。
そして閾値というキーワード。
まとめない方がいいよ。

680:デフォルトの名無しさん
18/05/16 11:18:13.11 XvxRw+U50.net
>>664
せめてCountメソッドにしとけと思うぐらい。

681:デフォルトの名無しさん
18/05/16 11:47:06.88 B7aMvtuba.net
>>664
単に同じ処理を2回書く無駄をなくしたいだけなら&&と||を使って
条件式をまとめるだけ
if((threshold >= 0 && x > threshold) || (threshold < 0 && x < threshold))
{
  ....
}
値が不変のはずのthresholdの符号をループで毎回評価する無駄が許せないなら
Func<int, bool> predicate = x => x > threshold;
if (threshold < 0) predicate = x => x < thredhold;
....
if (predicate(x))
{
  ....
}

682:デフォルトの名無しさん
18/05/16 12:22:33.98 CHLBL3ILa.net
async/awaitって呼び出しのネストが深くなると、大元の


683:呼び出しで波線が立ってすごくもどかしいんですが、気にしなくていいでしょうか?それとも呼び出しのやり方を見直したほうがいいのでしょうか



684:デフォルトの名無しさん
18/05/16 12:29:36.06 +dukoeHCd.net
>>668
ネスト関係なくね?

685:デフォルトの名無しさん
18/05/16 13:23:25.14 v6bC0eDAM.net
>>664
カウントをCountメソッドにして引数に突っ込むラムダ式を閾値によって切り替える

686:662,666
18/05/16 14:23:23.94 mC1mbnpn0.net
ごめん。Count以外の処理もあるんだね。おらの回答は無視してくれ。

687:デフォルトの名無しさん
18/05/16 14:55:11.81 c5ZU3C2K0.net
dataGridViewのデータソースをBindingListにしています。
この時にデータの絞込を実装する方法はあるのでしょうか。

688:デフォルトの名無しさん
18/05/16 19:51:48.39 oU1pyBE30.net
>>668
波線が立つのは単にasyncなメソッドをawai付けずに投げっぱなし呼び出しの警告出ているだけじゃないのか
>>669の言う通りネスト関係ない

689:デフォルトの名無しさん
18/05/17 00:16:57.84 OeNqnCBl0.net
すいません。ちょっと教えてください。
//Form1にて
Form2 f = new Form2();
f.show();
this.visible=false;
としてForm2を開いて、Form1を非表示にします。
//Form2にて
Form1 f = new Form1();
f.visible=true;
this.visible=false;
としてForm1に戻った場合、先程form1で入力した内容が消えてしまいます。
form1の内容を消さずにform2からform1に戻る方法を教えてください。

690:デフォルトの名無しさん
18/05/17 00:28:09.71 yjgdFlmp0.net
>>674
Form1 f = 「new」 Form1();
新しいForm1を作ったんだから前のはVisible=false;のままで表示されていない
例えばこうする
//Form1にて
Form2 f = new Form2(this);//Form2のコンストラクタの引数にForm1の参照を渡す
f.show();
this.visible=false;
//Form2にて
private Form1 form1;
//コンストラクタ
public Form2(Form1 f)
{
InitializeComponent();
form1=f;
}
//戻る処理
form1.Visible=true;
this.Visible=false;

691:デフォルトの名無しさん
18/05/17 00:35:36.78 hTaKG8n8a.net
>>674
目の前の問題を解決するよりまずインスタンスとは何かちゃんと理解した方がいいねw

692:デフォルトの名無しさん
18/05/17 00:41:03.31 OeNqnCBl0.net
ありがとうございました。
大変助かりました。

693:デフォルトの名無しさん
18/05/17 00:45:08.18 hTaKG8n8a.net
もっと簡単にこれでもできるよw
var f2 = new Form2();
f2.Shown += (s, ev) => Hide();
f2.ShowDialog(this);
Show();

694:デフォルトの名無しさん
18/05/19 16:26:49.89 GnA4tN+Fi
アプリ全体の設定について、設定変更画面を作ろうとして、まずは設定そのものを1つのクラスにまとめることを考えた
そんで各設定項目を public get, private set にしようと思ったら
設定画面クラスからは各設定項目プロパティの値を書き換えられなくって困ったんだが
これってどうしたらいいのかな
コンストラクタに引数渡して各設定項目を設定することも考えたけど、
設定項目が20こほどあるからそれはやりたくない

プロジェクト分けて設定画面を別アセンブリにしてpublic get, internal setにしないといけないんかな

695:デフォルトの名無しさん
18/05/17 21:40:59.40 Kw1Q24F60.net
class Program
{
TargetOpe targetOpe = new TargetOpe();
static void Main(string[] args)
{
Target [] target= targetOpe.InitializeTarget();
Console.WriteLine(target[1].x);
}
}
Target [] target= targetOpe.InitializeTarget();の行のtargeOpeで
静的でないフィールド、メソッド、またはプロパティ 'Program.targetOpe' で、オブジェクト参照が必要です
のエラーがでます。
newしてるのになんででしょう?

696:デフォルトの名無しさん
18/05/17 21:46:08.12 xJtGZ4kt0.net
>>680
静的メソッドだから

697:デフォルトの名無しさん
18/05/17 23:37:38.13 03oIkg7y0.net
C#初心者です。
ある変数のその時々の値によって呼ぶメソッドを変えたいため初歩的にifやswitchで分岐させていたのですが、毎回分岐させるのもどうかと思い変数が変わるタイミングでデリゲートに代入して呼び出す方法を試してみました。
しかしながらパフォーマンステストを行ったところ、10程度の条件分岐であればifでメソッド呼び出し >>> デリゲートで呼び出しという結果でした。
速度を重視しつつ動的に呼び出すメソッドを変えるという場合はデリゲートではなく毎回条件分岐を行ったほうが良いということなのでしょうか?

698:デフォルトの名無しさん
18/05/17 23:45:29.87 xJtGZ4kt0.net
>>682
どんな用途で?

699:デフォルトの名無しさん
18/05/17 23:47:12.44 fnhXcK68M.net
>>682
どうでもいい
そんなミクロなレベルの速度が問題になることはない
IO一つで跡形も無く吹き飛ぶ

700:デフォルトの名無しさん
18/05/17 23:49:51.73 8WFSeAEB0.net
くだらねーパフォーマンスとくだらねー暗号化の話題が大好きだよな

701:デフォルトの名無しさん
18/05/18 01:57:49.78 3OrmdyFD0.net
パフォーマンスは重要だよ
だけど、そんなのを語る以前に、コンピュータの仕組みについての素養を極端に欠く人が多すぎるんだよ
最近のC#入門書はよく出来ていて、大抵の本が最低限の仕組みが知識が身につくようページを割いて解説してるわけだけど・・・・分かっていない人ほど読み飛ばすんだな
その結果、コンピュータの仕組みからしたらとてもありえないことを言い出す高卒様が出来上がるんだ

702:デフォルトの名無しさん
18/05/18 02:22:20.29 tl8rJsN/0.net
>その結果、コンピュータの仕組みからしたらとてもありえないことを言い出す高卒様が出来上がるんだ
ありえないことなんてないだろ。頭硬すぎじゃねーの。「コンピュータはこうあるべきだ」とかに縛られてると新しい発想のソフトが生まれない。

703:デフォルトの名無しさん
18/05/18 02:48:57.75 3OrmdyFD0.net
新しいものができたってのならいいけど、言うこと為すこと高卒様じゃあ・・・・

704:デフォルトの名無しさん
18/05/18 03:11:25.94 eSpLSQVO0.net
>>682
条件次第なのでなんとも言えない
インライン展開とかCPUのキャッシュとかまで関わってくる可能性がある
気にしなければいけないほどパフォーマンスを気遣うなら、JITの結果を比較したほうがいいけど、多くはそこまでするほどではない

705:デフォルトの名無しさん
18/05/18 04:39:51.09 rO+HsCUo0.net
デリゲート使ってる時点で初心者じゃないだろw

706:デフォルトの名無しさん
18/05/18 07:16:45.92 tpc+hoQ/0.net
>>690
いや、初心者がググった知識で背伸びしてるんだろ

707:デフォルトの名無しさん
18/05/18 07:25:31.73 40IvU0mB0.net
デリゲートとラムダ式ってちゃうの?

708:デフォルトの名無しさん
18/05/18 07:56:30.88 mGKF1mXv0.net
>>681
ありがとうございます。
私アホでした。

709:デフォルトの名無しさん
18/05/18 08:01:25.12 mGKF1mXv0.net
public class TargetOperation
{
Target[] target = new Target[Constants.MaximumNumberOfTarget];
public Target[] InitializeTarget()
{
for (int i = 0; i < Constants.MaximumNumberOfTarget; i++)
{
target[i] = new Target();
target[i].x = 100;
}
}
return target;
}

710:デフォルトの名無しさん
18/05/18 08:05:21.79 mGKF1mXv0.net
最後の行で
クラス、構造体、またはインターフェイス メンバーの宣言でトークン 'return' が無効です。
です。
またアホなことをしてそうな気がしますが、昨夜からわからず・・・。

711:デフォルトの名無しさん
18/05/18 08:09:16.96 WjwLG2oV0.net
>>694
}
}
return target;
}
じゃなくて
}
return target;
}
}
じゃね

712:デフォルトの名無しさん
18/05/18 08:15:13.01 SuBLVM61M.net
>>682
サンプルコードと結果貼れよ

713:デフォルトの名無しさん
18/05/18 08:34:05.30 Yy5wJYpea.net
デリゲート使うくらいならストラテジパターン使うけど

714:デフォルトの名無しさん
18/05/18 09:57:58.57 crDPuGzZM.net
>>688
こんにちは猿の学校卒様

715:デフォルトの名無しさん
18/05/18 22:42:24.82 6iumh9Vb0.net
DataGridViewのセルのValueを取得すると、既定の型がObject型なんですが、既定の型をstringに変更する方法はありますか?
今はConvert.ToStringで変換してるんですが、記述数が多くなりすぎて参ってます。

716:デフォルトの名無しさん
18/05/18 22:48:37.44 /dMxgLqhM.net
As string

717:デフォルトの名無しさん
18/05/19 01:23:31.00 5ZvwKnWja.net
C#初心者でフォームアプリを作っているんですが
例えばあるクラスAが非同期で外部機器を延々ポーリングしていて、トリガーが発生したらクラスBの処理を行いたいといった場合
・クラスAにクラスBのインスタンスを渡して、クラスBのメソッドを呼び出す
・クラスAに宣言したデリゲート(evemt?)にクラスBのメソッドをコールバック関数として登録し、クラスAはデリゲートを実行する
どちらが一般的なコーディングなんでしょうか
後者だと複数実行したい処理があるとかなり冗長な気がするんですが、他にセオリーあれば教えて頂きたいです
よろしくお願いします

718:デフォルトの名無しさん
18/05/19 01:32:36.76 VIvIbG0Fa.net
女?

719:デフォルトの名無しさん
18/05/19 01:53:30.54 ZECHChrda.net
>>702
前者
デリゲートは現段階で呼び出し先が定まってなくて後でアドホックに処理を差し込みたいときに使うも
最初から呼ぶ相手が決まってるならそんなまどろっこしいことをしないで直接メソッドを呼べばよい

720:デフォルトの名無しさん
18/05/19 02:13:21.77 FwiHY2dca.net
>>702
騙されちゃダメwww
そういうのはイベントで実装する。
何故か?
前者で作っちゃったら、その外部デバイスをポーリングしてるクラス(普通はそのデバイスの名前を付けると思うけど)、
前者で作っちゃったら他に流用できないよ

721:デフォルトの名無しさん
18/05/19 02:22:01.39 6pEEqPiCM.net
>>705
YAGNI
もしそれが必要になったらそのとき変更すればいい
そして、ほとんどの場合において結局必要にならない
職業プログラマじゃないとアプリのコードを目にする機会って少ないから、
.NET Framework自体のクラスのような不特定多数向けの設計を真似してしまいがち
一般に、アプリケーションプログラミングにおいては無駄な拡張性は極力組み込まずに必要最小限のコードでコンパクトに実装するのが正解
そのほうが結果的に変更時のコストも小さくなるよ

722:デフォルトの名無しさん
18/05/19 02:27:56.45 FwiHY2dca.net
>>706
YAGNIなんか関係ない
アホか
必要もない仕様変更を想定して寛容に複雑にするのは愚かだが、
抽象度の高い(つまり汎用性も高い)方のクラスにより具体的(つまりそのプログラムでしか利用できない)クラスの
参照を持たせて依存させるなんてもっと愚かだ

723:デフォルトの名無しさん
18/05/19 02:32:39.74 6pEEqPiCM.net
>>707
自己矛盾してるね
依存させるのが何故愚かだと思う?
理由は、「必要もない(質問者のレスにない)仕様変更を想定しているから」に他ならないだろ

724:デフォルトの名無しさん
18/05/19 02:38:49.87 FwiHY2dca.net
>>708
たぶん言っても無駄な人だと思うけど、普通はViewをModelに依存させるように作るのであって
ModelをViewに依存させない(Modelの参照をViewが持ってはダメ)なのと同じ。
こんな基本が分からない奴が回答する側に回ってはダメだと思うw

725:デフォルトの名無しさん
18/05/19 02:40:16.65 FwiHY2dca.net
>>709
いかん酔っぱらって逆を書いちまったw
× (Modelの参照をViewが持ってはダメ)
〇 (Viewの参照をModelが持ってはダメ)

726:デフォルトの名無しさん
18/05/19 02:40:41.00 6pEEqPiCM.net
あと、仮に>>705の想定が正しいとするなら、抽象化すべきはクラスBではなくAの方でしょ
例えばAのデバイス依存部分だけをIDeviceインターフェイスとして切り出して委譲するとかね
Aにイベントを持たせるんだと、別のデバイスを監視するクラスCができたら
AのイベントとCのイベントをそれぞれ個別にイベントハンドリングしなきゃいけなくなる
ちゃんと頭使おうね

727:デフォルトの名無しさん
18/05/19 02:47:51.94 6pEEqPiCM.net
>>710
揚げ足取るようで悪いけど、Viewの参照をModelが持つこと自体は何の問題もないよ
というか、そう�


728:オないとMからVへの変化通知が実現できない イベントを使うにしても結局参照は持ってるよ MVPといって、IViewのようなインターフェイスを通してMからVを呼ぶパターンもあるね なるべく疎にしたいのは型同士の依存関係の話で、参照するのがダメなわけじゃない



729:デフォルトの名無しさん
18/05/19 02:58:10.85 FwiHY2dca.net
>>711
そういうのをYAGNIっていうんだよw
本当に何もわかってないねお宅w

730:デフォルトの名無しさん
18/05/19 03:03:16.45 FwiHY2dca.net
まあ質問者の>>702に言うけど、実際書いてみれば
イベントで実装した方がずっとコンパクトかつ可読的に書けることが分かると思うよ。
Bが仮にAでしか利用しないクラスだとしても、普通はAはイベントを発行するだけ、
Bはそのイベントを受信して何か処理をする、ってやった方がずっと分かりやすい

731:デフォルトの名無しさん
18/05/19 03:21:21.26 ZECHChrda.net
メソッド一つだけならイベントでもいいけど、少なくとも>>702はメソッドが複数あるときもあると言ってるんだからイベントは不適切でしょ
インターフェイスで纏めたほうが扱いやすい
あえてそこにインターフェイスを噛ませる必要があるかどうかはYAGNIの問題だが、それとはまた別の観点の判断だ

732:デフォルトの名無しさん
18/05/19 06:03:27.91 uNgfR/HH0.net
プログラムで使用するテキストデータを、excelで管理しています
closecXMLを使ってアクセスしていて、これ自体は無事に実装できました
テストが一通り終わって、テキストデータも確定したので、データの散逸や
改ざんを防ぐために実行ファイルに埋め込みたいのですが、リソースとして
取り扱うことってできないでしょうか
具体的には、
workbook = new XLWorkbook(filename);
として開いているところがあるのですが、このfilenameにリソースファイルの
名前を当てることができないのか調べています
string filename = "Properties.Resources.textdata.xlsx";
としてアクセスできれば簡単だと思っていたのですが、そうはいきませんでした

733:デフォルトの名無しさん
18/05/19 06:14:14.58 gOuRua2dM.net
ユーザー定義リソースは何でも書けるよ。

734:デフォルトの名無しさん
18/05/19 06:37:08.02 uNgfR/HH0.net
具体的にどういう手順を踏めばよいのでしょう?
excelデータは1,000行以上あるので、取り込みではなく手入力が必要だと
ちょっと切ないです
でももう修正しないもの(修正するとしても部分的)ですから、機械的に
データを移行できるのであればそれでも問題ありません

735:デフォルトの名無しさん
18/05/19 07:47:44.04 gOuRua2dM.net
静的に呼びだすなら5つのAPI
FindResource()
LoadResource()
SizeofResource()
LockResource()
FreeResource()
動的に更新するなら更に3つ
BeginUpdateResource()
EndUpdateResource()
UpdateResource()

736:デフォルトの名無しさん
18/05/19 07:53:26.18 z3BmCHYgM.net
>>706
こういう奴が頻繁に現れるのを見るとYAGNIの罪は大きいなって思う

737:デフォルトの名無しさん
18/05/19 07:55:26.69 7BFPa/Jf0.net
別に複数でもそんな多くなければイベントでも問題ないんじゃねぇかな

738:デフォルトの名無しさん
18/05/19 08:03:52.08 uNgfR/HH0.net
>>719
ありがとうございます、それぞれのAPIについて調べてみます

739:デフォルトの名無しさん
18/05/19 08:13:32.92 7BFPa/Jf0.net
結局バランスの問題だな。もちろん人によってバランス違うけど。
イベントによって結果再利用性あがるけど、
>イベントで実装した方がずっとコンパクトかつ可読的に書けることが分かると思うよ。
の通り、可読性の観点からしてもイベントの方が分かりやすいと思う。
これぐらいもYAGNIとかいってるようじゃ、極端すぎてバランス感覚おかしいんじゃねぇかな。

740:デフォルトの名無しさん
18/05/19 09:36:48.03 ZECHChrda.net
>>723
極端なのは君だと思うぞ
まさかクラス間の依存関係に全部いちいちイベントを噛ましてるってわけではないよね
その上で、この例において特にイベントを使うのが適切だと判断した合理的な根拠は?
少なくとも>>702のレスからはそれを具体的に読み取れないから、根拠のない仮定に基づいた無駄な拡張性だと言ってるんだけど

741:デフォルトの名無しさん
18/05/19 10:02:26.30 35k9lSzB0.net
>>696
( ゚д゚)
ありがとうございます。
その通りです。
一晩見直したのに気づかなかった・・・。

742:デフォルトの名無しさん
18/05/19 10:47:04.32 zmVeGZ3Ia.net
>>702です
みなさん色々なご意見ありがとうございます
基本的にはイベント等で疎結合にしたクラス作りが望ましいが、ケースバイケースで状況に応じてどちらの実装でも問題はないといったところでしょうか
レスして頂いた内容は非常に参考になり、まさにその両者のいい分で自分もどちらが最適解なのか悩んでいましたが、結局状況を判断出来る私が決めて実装するしかないのかなと思いました
途中インターフェースをかましてすれば良いとのレスがありましたが、どういった実装をすればいいのか全くわかりませんでした。この方法でも検討してみたいので、すみませんが具体的な実装を教えて頂けないでしょうか

743:デフォルトの名無しさん
18/05/19 11:44:50.68 mNRmauI8a.net
>>726
interface IAlert {
void Set(Severity severity);
void Unset();
}
たとえば、あるアラートに対してこういうインターフェイスを定義する
クラスAはこれをコンストラクタで受け取り、温度センサーの値が閾値を超えたら危険度に応じた引数でSetメソッドを呼ぶ
温度が低下して閾値を割ったらUnsetを呼んで解除する
このIAlertインターフェイスを、具体的な実装、たとえばパトランプを操作するクラスが実装するわけ
こうしておけば、
パトランプじゃなくて画面でアラート状態を表示したくなったときにAに手を入れずにIAlertを実装するだけで済む
もちろん、パトランプしか想定しなくていいなら直接パトランプクラスのメソッドを呼んでもいいし、Unsetが必要ないならイベントでもいいかもね
ただしイベントの場合はBからAへの密結合が発生するとか、それを避けるなら追加で橋渡しのコードが都度必要になるといった懸念点もある

744:デフォルトの名無しさん
18/05/19 11:49:58.15 F9kKaYLV0.net
>>700
拡張メソッドでも定義すれば

745:デフォルトの名無しさん
18/05/19 12:01:43.59 hl18fyg5a.net
>>727
早速ありがとうございます
ちょっとまだピンときませんが、じっくり検討してみたいと思います

746:デフォルトの名無しさん
18/05/19 12:20:10.98 35k9lSzB0.net
BASICしか経験がないど素人がC#始めたんだけど、
クラス間の参照の受け渡しというのが難しいです・・・。
クラスの参照を配列に入れて、それを受け渡しするとか動くコードはなんとかかけてるんだけど、
自分で一体何をしているのか分からなくなる時がある。

747:デフォルトの名無しさん
18/05/19 13:04:35.48 uWI+Vuzc0.net
>>730
真っ先に直さなきゃならないのは、「スコープの広い配列にインスタンスを入れておけば、どこからでも全てのデータにすぐにアクセスできていいじゃん!」と思っちゃう点でさあ
C#のスキルの無さから設計までメチャクチャにしてるんじゃないのかねえ

748:デフォルトの名無しさん
18/05/19 13:15:00.73 m/ZPa8pNM.net
BASIC系って悪い習慣を覚えちゃうよね
特にVBAはひどい

749:デフォルトの名無しさん
18/05/19 13:27:26.49 m/ZPa8pNM.net
>>727
それだと温度センサーがアラートをコントロールしているように解釈される
常識的に考えてアラートのコントロールは温度センサーの仕事ではないだろう
これは名前の問題であってインターフェースよりイベントを使えと言ってるわけではない

750:デフォルトの名無しさん
18/05/19 14:08:44.26 35k9lSzB0.net
>>731
その通りです。
すべての変数をどこからでもアクセスしたい衝動にかられます。
Aのクラスの機能がA1とA2に分化できるから分けようと思うと、
AはCを参照してたからA1とA2両方にCのインスタンス参照を渡そうとなり、
結局機能は分けれたものの、どのクラスがどのクラスを参照してるのかがよくわからなくなってきました。

751:デフォルトの名無しさん
18/05/19 14:11:58.71 35k9lSzB0.net
値1、2個を渡すのは簡単なんですけど、
クラスのインスタンスを100個つくるためにその参照を配列にいれる
参照の入った配列をreturnで返す
とかしてるとなんの値をいじってるのかわけわかめです。
これまで値と参照の区別をして思考してこなかったからなのかなぁ。

752:デフォルトの名無しさん
18/05/19 14:31:05.11 m/ZPa8pNM.net
>>735
オブジェクト指向で参照を共有することは少ない
共有するとしてもイミュータブル、ステートレスにして共有によるデメリットを消した上で共有する
長時間生存するインスタンスがあちこち参照しあって状態を刻々と変化させていくような設計が最悪のパターン

753:デフォルトの名無しさん
18/05/19 15:29:17.89 7BFPa/Jf0.net
>>724
それは君が経験値不足なだけ。>>702である程度は想像できる。

754:デフォルトの名無しさん
18/05/19 16:13:13.77 t/qQFhE80.net
休みだってのに暇な奴ら

755:デフォルトの名無しさん
18/05/19 16:13:20.90 35k9lSzB0.net
>>736
なるほどCを参照しているA1、A2はCと独立したオブジェクトじゃなくなってしまいますものね。

756:デフォルトの名無しさん
18/05/19 16:20:14.69 35k9lSzB0.net
Target[] target = new Target[Constants.MaximumNumberOfTarget];
public Target[] InitializeTarget()
{
for (int i = 0; i < Constants.MaximumNumberOfTarget; i++)
{
target[i] = new Target();
target[i].x = 100;
target[i].y = 100;
  }
}
こういうふうにForm1のクラスでターゲットの座標100個発生させて表示させます。

757:デフォルトの名無しさん
18/05/19 16:23:28.77 35k9lSzB0.net
ターゲットをクリック出来たら消す
一定時間クリックできなかったら点滅させる
ゲーム終了後にターゲットの座標をテキストファイルに書き出す
などの処理がすべてForm1上に存在することになるのですが、
それでもいいのでしょうか?
これらの作業を無理にクラスに分けようとすると
ターゲットクラスインスタンスの参照100個を渡さなくてはいけなくなります。

758:デフォルトの名無しさん
18/05/19 16:41:59.05 H4w+h7ji0.net
そんなミニゲームどう組んだっていいよ

759:デフォルトの名無しさん
18/05/19 16:44:12.66 5aQMcYYW0.net
>>741
何が駄目なのかわからない
何か縛りプレイしているのならその前提から出してもらわないと
たとえば特定のデザインパターンの勉強が目的だとか

760:デフォルトの名無しさん
18/05/19 16:55:29.90 uWI+Vuzc0.net
どうせこの人は一生治んないよ
ただプログラムなんてちゃんと動けば目的達成できるんだし、まあ、これでも良いんじゃないの

761:デフォルトの名無しさん
18/05/19 16:56:47.37 F+BrwfqWa.net
listやdictionaryを使ってないのかな
だったらまだそのアプリを作る段階まで届いてない

762:デフォルトの名無しさん
18/05/19 17:10:27.25 UwdEx54W0.net
まあ普通はエンジン部分だけ切り離すわな

763:デフォルトの名無しさん
18/05/19 17:20:42.40 35k9lSzB0.net
target class
にx,y,timeなどメンバ変数7個程度を入れてます。
このターゲットを表示するためForm1上にクラスのインスタンスを参照する配列を置くと、
表示とゲームのコントロールすべてがForm1上におくことになって見苦しいのかと思いました。
でもテトリスとか他のミニゲームみても同じような設計になってるんですね。
無理して別クラスにするよりもtargetクラスの配列に関連した、表示、ゲーム処理はForm1上に置いてみます。
(というか実際に配列を別クラスに切り分けたら、余計読みづらくなった・・・)

764:デフォルトの名無しさん
18/05/19 17:22:57.84 35k9lSzB0.net
>>743
縛りはなかったのですが、見やすいコードということを考えすぎてました。
まずは動くコード書いて、人の書いたプログラムも見ながら勉強していきます。

765:デフォルトの名無しさん
18/05/19 17:23:58.19 35k9lSzB0.net
>>745
最初Dictionay使うつもりだったのですが、
構造体かクラスに変数をまとめたほうがよさそうだったので今の形になりました。

766:デフォルトの名無しさん
18/05/19 17:27:35.68 9OoA3M8l0.net
>>741
何故そのような結論になるかわからない提示された仕様からだとテキスト出力クラスを作ろうって気になるかな
targetの渡し方はコンストラクタやメソッド引数にするかは自由
Hoge hoge = new Hoge();
bool Output(){
hoge.Set(target);
return hoge.Output();
}

767:デフォルトの名無しさん
18/05/19 17:28:05.32 m/ZPa8pNM.net
>>747
複数のTargetを管理する専用のクラスを書くんだよ
Formが全てのTargetを管理するのはオーバーワークだろ

768:デフォルトの名無しさん
18/05/19 17:30:56.31 TbcarOIZ0.net
>>734
貴様にはpublicを禁止する呪いを掛ける

769:デフォルトの名無しさん
18/05/19 17:45:50.05 m/ZPa8pNM.net
それは呪いではなく祝福であった

770:デフォルトの名無しさん
18/05/19 17:52:30.85 F+BrwfqWa.net
そしてinternalを使い始めた!
ゴミグラマの出来上がり

771:デフォルトの名無しさん
18/05/19 18:14:06.88 RoboUWmL0.net
と、すでに出来あがったゴミグラマが申しておるようですが

772:デフォルトの名無しさん
18/05/19 18:20:19.09 35k9lSzB0.net
>>751
はい。
それやってみたのですが、フォーム2から初期設定値を初期値格納クラスに入れていて、
初期値格納クラスの参照、Targetクラスの参照、Targetクラス管理クラスの参照が入り乱れて書いている自分でもわけわかめになりました。
二つのプログラムを見比べた結果Form1でTarget管理させたほうがまだましなのかと・・・。
もっと規模の大きなプログラムだと違ってくるのかもしれないのですが。

773:デフォルトの名無しさん
18/05/19 18:39:40.28 H4w+h7ji0.net
>>756
小さいの組み合わせてでかいの作るんだから
でかいと組み方が変わるなんて言ってるやつは
そもそも下手クソなんだよ

774:デフォルトの名無しさん
18/05/19 18:44:17.10 m/ZPa8pNM.net
>>756
入り乱れないよ

775:デフォルトの名無しさん
18/05/19 18:44:51.84 t/qQFhE80.net
素人が責務に応じたクラスの分割を理解するなんて
一朝一夕どころか数ヶ月単位の時間が掛かると思うが、このやり取りそこまで続けるの?

776:デフォルトの名無しさん
18/05/19 18:46:55.05 RoboUWmL0.net
>>759
素人でも初心者でもわかる奴は最初からわかってるけど?
むしろ数ヶ月も時間をかけてわかって気になってるおまえが何もわかってないよ

777:デフォルトの名無しさん
18/05/19 18:48:37.83 m/ZPa8pNM.net
>>759
理解しやすい構造になるわけだから素人も安心

778:デフォルトの名無しさん
18/05/19 18:49:08.43 t/qQFhE80.net
>>760
猿には聞いてねえから飼育員さんとママゴトしてな

779:デフォルトの名無しさん
18/05/19 18:51:06.08 t/qQFhE80.net
>>761
んでいつまで続けるの?
ウザくなってきたからスレ潰しするのもいいかなと思ってる

780:デフォルトの名無しさん
18/05/19 18:54:14.32 RoboUWmL0.net
バカ、スレ潰し宣言wwwww
これはさすがの俺も意表をつかれた度と超えたバカwwwww

781:デフォルトの名無しさん
18/05/19 20:59:50.70 gCADl0W/M.net
C#のスレだと思ったのに。

782:デフォルトの名無しさん
18/05/19 21:13:55.60 35k9lSzB0.net
リストボックスの値を取得するのって
string Gender = this.Gender.SelectedItem.ToString();
の一文だけじゃだめなの?
なぜか値が取得できない。

783:デフォルトの名無しさん
18/05/19 21:17:27.89 BEl4Etk9a.net
あたまがくらくらする

784:デフォルトの名無しさん
18/05/19 21:28:02.54 sYzD4mGA0.net
>>766
まず「Gender」が2つ出てくることに違和感はないのか
ListBoxは使ったことないけど
URLリンク(msdn.microsoft.com)(v=vs.110).aspx
string GenderStr = this.Gender.SelectedItem.ToString();
にでも変えれば動かないか?

785:デフォルトの名無しさん
18/05/19 21:30:21.29 35k9lSzB0.net
>>766
すいません。
自己解決しました。
大分疲れてきたようです。
寝ます・・・。

786:デフォルトの名無しさん
18/05/19 21:32:29.68 35k9lSzB0.net
>>768
すいません。
ご親切にありがとうございます。
値を出力するクラスにwriteline書き忘れてました・・・。
値の取得は上のコードでOKでした。
朝から一日プログラミングして悪い頭が限界を超えているようです。
今日はもう寝ます。

787:デフォルトの名無しさん
18/05/19 21:34:12.28 RoboUWmL0.net
教えたがりのバカ>>768の立場wwww

788:デフォルトの名無しさん
18/05/20 16:52:01.54 O/HF5kqh0.net
>>719
いろいろ調べてみましたが、私が探している解決策とは異なったようです
一番知りたいのは、埋め込みリソースに対し、通常のファイルアクセスのように
アクセスする方法はないのか、という点です
(XLWorkbookのコンストラクタには、ファイルパスを与えますので)
今回のデータは参照のみ必要ですので、リソースとして埋め込んだ場合に
変更が効かなくなっても問題ないと考えました
712で書かれた内容は、「自分でファイルフォーマットを定義して、それを読んで
切り貼りするコードを自分で書くべし」、ということでしょうか
そのために有用なのが714のAPIということですか

789:デフォルトの名無しさん
18/05/20 18:41:56.82 9fk8EC6VM.net
ないよ
一回テンポラリファイルに出力すればいい
使いたいライブラリがストリームを受け取るバージョンをサポートしてるならそっちを使ってテンポラリファイルは要らない

790:デフォルトの名無しさん
18/05/20 19:32:08.73 QOdmSKaj0.net
やったことないけど
これは動かないの?
URLリンク(support.microsoft.com)

791:デフォルトの名無しさん
18/05/20 19:59:07.95 O/HF5kqh0.net
>>773
ありがとうございます
少し調べてみた限りですと、closedXMLはストリームからの読み込みはサポートして
いないようなので(当然の気もしますが)、テンポラリファイル等別の手段を考えます
>>774
「リソースにアクセスしたい」ではなく、「ファイルにアクセスするメソッドにリソースを
渡したい」でした
768のおかげでそのまま実現するのは無理とわかりましたので、疑問としては解決です

792:デフォルトの名無しさん
18/05/21 08:06:02.24 yxdsvVjy0.net
Json保存すると漢字が化ける。なぜばけるの? Jsonの問題なのか、StrreamReader
の問題なのか、StrreamWriterのもんだいなのか? 取り合えず、Read、Writeともに
shift_jisでEncode指定したら化けないようになったが、意味がよくわからない。
 普通に考えるとStringにShift_JIsが入っていて、それを認識しているなら、Read
WirteにShift_jisを指定する必要はないと思うのだ。だからStringにはそういう情報は
入ってない筈だ。ファイルにSHiftJIsの属性がはいっているなら、Write側だけに指定
すればよいはずだ。ReadにもSHIFT_JISを指定しなければならないということはファイルにも
その属性は保存されていないということだ。Stringに属性を保存しておけばすべて丸く
収まるとおもうのだが、なぜそうしないのだろうか?

793:デフォルトの名無しさん
18/05/21 09:30:17.64 HN6x0Zrba.net
文字列の実装には内部的にUnicodeで扱うものとバイト列として扱うものとがある。
前者は入出力時にそれぞれバイト列->UnicodeとUnicode->バイト列をどのようにマッピングするか(i.e. エンコーディング)を指定する必要がある。
後者であればその必要はない。
一方で前者は外部から文字列を読み込んでも内部的にはUnicodeだから読み込んだ文字列に対して処理を行う際に文字コードに悩む必要はない。
後者はプログラムを書いている時の文字コード, 入力された文字コードを常に意識せねばならん。
一長一短だからどっちの実装もあり得るが.NETは内部Unicodeが標準的だということだ
文字列自身に自分のエンコーディング情報を埋め込むのはやめておけ
禄でもないことにしかならん

794:デフォルトの名無しさん
18/05/21 10:54:12.62 wG0UA8oX0.net
JSON はJavaScript だから、UTF-8
Ruby, Python もそう。
ネット上に流れるテキストも同じ
SHIFT_JIS を使う言語は、まずない。
PowerShell も、UTF-16
ここ数年は、Unicode に統一された。
それ以外の、SHIFT_JIS, EUC-JP は使わない

795:デフォルトの名無しさん
18/05/21 12:22:48.67 ZMitaTGGM.net
>>778
何言っても通じないとは思うが、お前の愛するRubyの文字列の扱いは他と異なっている
Rubyの文字列は内部的にはエンコーディング情報を持ったバイト列だ
特にWin環境では非常にトラブルの原因になりやすいゴミ仕様である

796:デフォルトの名無しさん
18/05/21 12:34:00.26 wG0UA8oX0.net
Ruby は各文字列に、エンコードを持てるから、すごい
例えば、文字列a がSHIFT_JIS で、b がUTF-8 として、
a + b
みたいに、文字列を連結すると、エンコードエラーになる

797:デフォルトの名無しさん
18/05/21 12:36:23.24 ZMitaTGGM.net
>>780
うん。何一つメリットのないカス仕様だね。

798:デフォルトの名無しさん
18/05/21 12:50:56.22 0W5b/XyUM.net
>>775
ClosedXML.Excel.XLWorkbookコンストラクタにはStream取るのもあるんだけど

799:デフォルトの名無しさん
18/05/21 13:22:41.39 yxdsvVjy0.net
>SHIFT_JIS を使う言語は、まずない。
エクセルファイルをCSVにEportしたファイルだけど、
var sr = new StreamReader(fs, Encoding.GetEncoding("shift_jis"))
これでなら正常に読める。ということはエクセルはshift_jisだと思うが、、

800:デフォルトの名無しさん
18/05/21 14:04:00.83 hRf5uVYXM.net
とりあえずそのRubyアスペに触るのを止めて

801:デフォルトの名無しさん
18/05/21 15:12:20.28 yxdsvVjy0.net
>一方で前者は外部から文字列を読み込んでも内部的にはUnicodeだから読み込んだ文字列に対して処理を行う際に文字コードに悩む必要はない。
>後者はプログラムを書いている時の文字コード, 入力された文字コードを常に意識せねばならん。
前者はDefault unicode
後者はDefault bytecode
ということであれば、shift_jisなど他にもたくさんの文字コードが来る可能性があるのだから、コードを意識することにあまり違いはない
と思うが、、
>>780
その考え方の方が正しいと思う。
そもそもunicoeをディフォールトにするんだったら、漢字はそのまま表示できるんじゃないの?
其れなのにXcelは何でわざわざSHIFT_JISをつかうんだろ。

802:デフォルトの名無しさん
18/05/21 15:24:30.40 wG0UA8oX0.net
Windows も内部的には、UTF-16 だろ。
PowerShell, ブラウザも、UTF-8
保守費用が掛かるから、MS も、SHIFT_JIS を辞めたいはず
Excel など、長年使っている人が多いから、やめられないだけ

803:デフォルトの名無しさん
18/05/21 15:43:54.89 s3jYOwAha.net
>>785
Stringのエンコーディングが固定なら、IOのときだけ文字コードを意識すれば済む
素人のちょっとしたツールのレベルならともかく、一般的にはIとOの間(P)の部分がプログラムの殆どを占めるんだよ
Dictionaryのキーの文字コードが混在してて、存在するはずのキーの検索に失敗するとか悪夢だろ

804:デフォルトの名無しさん
18/05/21 21:17:05.23 83cG7/bYM.net
ビルドしても、ファイルできなくて意味わかんねえ

805:デフォルトの名無しさん
18/05/21 22:02:39.74 o82N7H0r0.net
>>783
Excelは言語じゃない。
日本語版のExcelのCSV出力時の文字コードがShiftJISなのは単に過去との互換性のため。
ちなみにBOMが付いていればUTFのCSVでも読み込める。

806:デフォルトの名無しさん
18/05/21 22:04:28.66 ZCJ7EsPBa.net
漢字が文字化けするのは保存した文字コードと読み込んだ文字コード指定が違うから
それだけ
つまりやった側の間違い
どこで間違えたか手順を順に見直すべし

807:デフォルトの名無しさん
18/05/21 22:11:44.14 KnpxsRSU0.net
やった側ってどの側だよw

808:デフォルトの名無しさん
18/05/22 00:01:50.29 1gACj0o60.net
sqliteとの連携に関して質問です
なんらかのクライアントで先にテーブルを作り、レコードもinsertしておいて、それを読み込むプログラムを作りたいのですが、既存のdbファイルはどこに配置すればよいのでしょうか
デバッグしてみたらno such tableと言うようなエラーが出たので、どうやら実行時に新たにdbファイルを作ってそれを読もうとしてしまっているようです

809:デフォルトの名無しさん
18/05/22 00:20:52.78 V2R/cizEa.net
>>792
どこもクソも決めるのはお前
SQLiteはDBのファイルパス指定して開けるだろ
SQLiteは普通のDBMSと違って、システムのどこかに共通のデータストアがあるみたいな考え方をしないんだよ
ファイルを名指しするのが基本

810:デフォルトの名無しさん
18/05/22 03:32:12.88 MRvdbbs3M.net
Accessのmdbみたいな感じかいな?

811:デフォルトの名無しさん
18/05/22 06:38:16.66 GCRmPVlZ0.net
>>790
「文字コードなんて意識する必要はない。機械に任せたほうがいい。」とは考えないのだろうか?
そもそもテキストとは文字コードによって表現された文字の集合体だ。テキストを保存するIOに
たいしてわざわざ文字コードの情報を削除して保存するのは何故なのだ。正気の沙汰とは思えんな。

812:デフォルトの名無しさん
18/05/22 06:43:45.86 GCRmPVlZ0.net
>Dictionaryのキーの文字コードが混在してて、存在するはずのキーの検索に失敗するとか悪夢だろ
文字コードなんて本質的なことじゃない。だから混在してもかまわない。
それを人手でやろうとするから「混在する悪夢」が発生する。
そういう場合にこそ機械に自動的にやらせるべきだろう。

813:デフォルトの名無しさん
18/05/22 06:51:24.64 GCRmPVlZ0.net
>日本語版のExcelのCSV出力時の文字コードがShiftJISなのは単に過去との互換性のため。
>ちなみにBOMが付いていればUTFのCSVでも読み込める。
互換性のためならもっとほかの方法がある。アプリのためにコードを弄るなんて最悪の方法だろう。

814:デフォルトの名無しさん
18/05/22 07:58:03.61 j6MjsmBId.net
>>793
あざすぅ

815:デフォルトの名無しさん
18/05/22 09:20:46.86 uYoKmc1Q0.net
ここにきて.NET CoreがWPF, Windows Formsを救済ってか

816:デフォルトの名無しさん
18/05/22 09:31:30.78 7LgkrdmnM.net
>>795
>>796
>>797
屁理屈言っても誰にも認められない
x=x+1は式としておかしいと言い張ってプログラムが全くできなかった人がいたけど
その人と同じ
文字コードがいろいろあるのは仕方ない
それぞれの都合で整数に文字を割り当てる方式がちがうので文字化けする
文字コードの情報というものがそもそもないので削除なんてしてない
自動判定は単なる憶測にすぎない
その自動判定だって誰かが書いたコードが判定してるんであって
機械に任せると言うのは言ってることがおかしい

817:デフォルトの名無しさん
18/05/22 10:37:32.58 svO22mue0.net
public double Re { get; set; }
ってプロパティを省略して書くと見やすくていいんですが、
他クラスから参照するだけの変数だと、
Reは使用されていませんって警告がずっと出てうっとうしい。
何かいい手はないでしょうか?

818:デフォルトの名無しさん
18/05/22 10:37:46.91 np9ncSKga.net
別に文字列を文字セット/エンコーディングごと抽象化するライブラリとか作ってくれて良いのよ?
既存文字列と互換性があって使い勝手, 拡張性と統一性と性能が担保されるなら普及もするだろう
でも曲がりなりにもそれ続けられてるのってRubyくらいで他に思い浮かばない
なんで無いのかと言うけど試されてないわけないんだよ, 現実的じゃないから普及してない

819:デフォルトの名無しさん
18/05/22 10:58:36.99 sxJmXMb80.net
>>801
{ get; private set; }
とか?できないんだっけ?

820:デフォルトの名無しさん
18/05/22 11:14:09.28 7Riaak3V0.net
WPFで
WindowStyle="None"
AllowsTransparency="True"
Background="#01FFFFFF"
でほぼ透明だけどマウスイベントを受け取るウィンドウを作ったのですが
これとおなじことをFormでやりたいのですがやりかたがわかりません
どのようにすればいいですか?

821:デフォルトの名無しさん
18/05/22 11:23:07.15 svO22mue0.net
>>803
できると思います。
データ格納フォルダB:Aフォームから値を取得
Cクラス:Bから値を取得
となってるのでsetもpublicでないと困るんですよね。
データ格納フォルダBの値はAから値取得した後なにも処理がないので、
「Reは使用されていません」って正しい警告なんですけどねぇ。
格納しているデータが10個あって警告10個もでるとさすがにうっとうしい。

822:デフォルトの名無しさん
18/05/22 12:14:32.87 CqasDiEMM.net
>>795
BOM付きのUTF以外は、文字コードの情報なんてものは最初から存在しない。
また、文字コードの自動判別も完璧ではなく、場合によっては全く判別出来ない。

823:デフォルトの名無しさん
18/05/22 12:16:10.65 O9GDwfVPM.net
BのコンストラクタにAからの値を受け付けて
public readonly double Reに渡すとかじゃだめなんね?

824:デフォルトの名無しさん
18/05/22 12:36:59.84 2EZjLjzja.net
>>804
Formはウィンドウ全体のアルファはOpacityで指定できるけど、
背景だけ透過させるとかは簡単にはできなかったような
URLリンク(yellow.ribbon.to)
>>805
そもそも>>801みたいな告なんか出ないと思うけど...
何か盛大に勘違いしてる予感...

825:デフォルトの名無しさん
18/05/22 13:05:58.78 7Riaak3V0.net
>>808
WPFだと簡単にできたけどだめですか。。
背景透明なウィンドウとOpacity≒0で全体をほぼ透明化したウィンドウを重ねて代用します

826:デフォルトの名無しさん
18/05/22 13:21:14.65 svO22mue0.net
>>808
勘違いなのかなぁ・・・。
すいませんもうちょっといろいろ実験してみます。

827:デフォルトの名無しさん
18/05/22 13:55:20.14 svO22mue0.net
もともとスタートアップだったform1からform2にスタートアップを変更したいと考えています。
Program.csの
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new InitialSettingForm1());
}
のForm1をForm2に変更したのですがどうもうまくいきません。

828:デフォルトの名無しさん
18/05/22 14:00:09.60 svO22mue0.net
form1が出てからform2が表示されているような…。
試しに
public ExaminationForm1()
{
InitializeComponent();
MessageBox.Show("a");
}
と入れてみると
メッセージボックスが表示→okをクリック→form2が表示
となります。
他にも設定しなければいけないところがあるのでしょうか・・・。

829:デフォルトの名無しさん
18/05/22 14:01:17.37 svO22mue0.net
また変なことやってるのかなぁ・・・。

830:デフォルトの名無しさん
18/05/22 14:48:09.94 oCYWBo6GM.net
InitialSettingなのかExaminationなのかどっちだよ
ExaminationForm1のコンストラクタにブレークポイントおいて実行
ブレークしたら呼び出し履歴を確認する

831:デフォルトの名無しさん
18/05/22 17:11:30.57 svO22mue0.net
>>814
Debugで確認していったらどうもインスタンスの参照を渡せていないようです。

832:デフォルトの名無しさん
18/05/22 17:12:13.75 svO22mue0.net
public partial class Form1 : Form
{
Form2 form2;
Class1 class1;
public Form1()
{
InitializeComponent();
form2 = new Form2();
form2.Show();
class1 = new Class1();
form2.Pointer = class1;
}
}

833:デフォルトの名無しさん
18/05/22 17:12:47.68 svO22mue0.net
public partial class Form2 : Form
{
Class1 class1;
public Class1 Pointer
{
set
{
class1 = value;
}
}
public Form2()
{
InitializeComponent();
int i = class1.fuga();
MessageBox.Show(i.ToString());
}
}

834:デフォルトの名無しさん
18/05/22 17:13:21.01 svO22mue0.net
public class Class1
{
public int hoge = 2222;
public int fuga()
{
return hoge;
}
}

835:デフォルトの名無しさん
18/05/22 17:16:54.99 svO22mue0.net
Form2で
int i = class1.fuga();
みたいなclass1のメソッドを使う命令を書くと、実行時にForm1もForm2も表示されずに終了になります。
Form2にclass1の参照をきちんと渡せていないようなのですが、どこが悪いんでしょう・・・。

836:デフォルトの名無しさん
18/05/22 17:33:33.27 2EZjLjzja.net
>>819
みたいな、じゃなくて問題を再現可能な最小コードをIdeoneにでもあげる
何で>>816-818まで書いおいて一番肝心なところを書かないんだ
それじゃやってること荒らしと同じ

837:デフォルトの名無しさん
18/05/22 17:34:55.39 oCYWBo6GM.net
806から811で全然別物の質問になってるんだけど
Form1のコンストラクタの先頭とForm2のコンストラクタの先頭にそれぞれブレークポイントおいて
ブレークしたらF10キー1行ずつステップオーバーしていって
どういう順番で実行されてるか確認

838:デフォルトの名無しさん
18/05/22 20:59:34.16 36NNq4u4M.net
うるせーな一度答えると決めたら最後までニコニコヅラで相手しろよクソハゲ

839:デフォルトの名無しさん
18/05/22 21:22:06.95 sZHy65Kr0.net
>>782
返信遅くなりました
ありがとうございます、確かに存在しました
やってみたら問題なくアクセスできました

840:デフォルトの名無しさん
18/05/22 21:56:59.84 nVwte2qB0.net
>>816
Form2のコンストラクタ内でclass1を使用しようとしているのに、
form2.Pointer(class1)がその後で設定されてる。

841:デフォルトの名無しさん
18/05/23 00:14:46.31 IEWpo6Tg0.net
>>824
ありがとうございます。m(__)m
その通りでした。
一個づつ追っていけば分かるはずなんですけど、
自分では思い込みがあって気づきませんでした。
本当に助かりました。
ありがとうございました。

842:デフォルトの名無しさん
18/05/23 00:17:07.19 IEWpo6Tg0.net
>>820
すいません。
文章の書き方が悪かったです。
812の下から4行目のように
Form2で
int i = class1.fuga();
class1のメソッドを使う命令を書くと、実行時にForm1もForm2も表示されずに終了になります。
と書くべきでした。

843:デフォルトの名無しさん
18/05/23 00:18:47.23 IEWpo6Tg0.net
>>821
これまたすいません、ブレークポイントで見て言ったら画面の生成順は問題ないことが分かって、
インスタンスの参照が渡っていないことが原因と分かり。811-813みたいな最小コードで実験してました。

844:デフォルトの名無しさん
18/05/23 10:08:41.93 N3UaVe1J0.net
中学生ぐらいだったら教えてやってもいいけど、あんたいくつよ?

845:デフォルトの名無しさん
18/05/23 10:10:09.13 QWeWgJFJ0.net
不安なメソッド内じゃ全部TryCatchで囲っちゃった方が良いです?

846:デフォルトの名無しさん
18/05/23 10:18:50.74 Mh8q82UX0.net
catch内で例外を握りつぶせば完璧

847:デフォルトの名無しさん
18/05/23 13:00:21.42 mO/AejLg0.net
メインの処理全体をtry~catchで括るだけさ。

848:デフォルトの名無しさん
18/05/23 18:48:37.98 hVcgEIrnM.net
ジェネリクスのListやHashSetを良く使うのですが、これで用が足りてしまうので自作までしたことありません
出来る企業や個人はバリバリ自作するのでしょうか

849:デフォルトの名無しさん
18/05/23 19:00:48.43 iQ1n/QEKM.net
>>832
できる人はそんな無駄なことに時間をかけたりしません
視野狭窄な無能ほどそういうことに拘って工数をドブに捨て、結果的に全体のクォリティを上げる時間が失われるのです

850:デフォルトの名無しさん
18/05/23 23:29:00.27 l9NA/114M.net
ありもの使う方が良いと思うよ

851:デフォルトの名無しさん
18/05/24 00:22:57.92 Pwy3p0jE0.net
ありものでどうしても駄目な理由がある場合のみ、仕方なく自作だわね

852:デフォルトの名無しさん
18/05/24 00:28:40.71 crQGHj+ea.net
>>835
それも注意が必要だけどね
視野狭窄な小手先の技術に拘るプログラマは、くだらない問題に拘って「どうしても駄目だ」と思い込む(思い込もうとする)傾向がある
大抵そういうケースでは、視野を広げるとそもそも無理に手間をかけてまで解決する必要のない問題であることが多い

853:デフォルトの名無しさん
18/05/24 00:36:35.91 O9jHVcOl0.net
Dictionary クラスを継承して使いたくて、
これの各種インターフェイスを実装した中身 Dictionary クラスのラッパーを作った事あるなあ。
今思えば若かった。

854:デフォルトの名無しさん
18/05/24 07:54:06.51 YzRB3Rzod.net
>>836
プログラム以外でもあてはまる話だわな。
それ

855:デフォルトの名無しさん
18/05/24 14:34:00.01 q7DgX+HL0.net
たいていは英語力の無さに原因があるんだよな。
その機能を見つけられないとかだからさ。

856:デフォルトの名無しさん
18/05/24 15:02:55.06 AHiLgPdDM.net
コンソールアプリです。
今までに自分が吐き出した標準出力を自分で取得する事は可能でしょうか?
このアプリ(A)は主に他のアプリ(B)から実行されることを想定しています。Aは普通にConsole.WriteLineで出力し、BがProcess.StandardOutput.ReadToEndで取得、ログを残します。
A単体で実行してログも残したい要求があります。 Console.WriteLineと同時にファイルに出力すればいいのですが、最後に一括で取得できればスマートかなと思ったのですが、いかがでしょうか?

857:デフォルトの名無しさん
18/05/24 16:59:57.59 B2m5C+ouM.net
>>840
ウィンドウアプリです

858:デフォルトの名無しさん
18/05/24 17:02:19.57 q7DgX+HL0.net
両方に出力する関数作って、その関数に置き換える事すら出来ない無能に何をアドバイスしろと?

859:デフォルトの名無しさん
18/05/24 17:11:45.68 iQu+wqIP0.net
Windowsで使えるteeコマンド探した方が早いんじゃねえか

860:デフォルトの名無しさん
18/05/24 17:19:25.14 EdBeTbDkM.net
PowerShellならデフォルトで用意されてるよ!>tee

861:デフォルトの名無しさん
18/05/24 17:19:52.49 AHiLgPdDM.net
>>841
???
すみません、よくわかりません
>>842
書き方まずかったですかね。
そう言うのも含めて、2つの処理を同時にするという意味だつたのてすが。
他にはなさそうですね。

862:デフォルトの名無しさん
18/05/24 19:35:28.68 MnVBsXE4d.net
TraceSource

863:デフォルトの名無しさん
18/05/24 20:33:40.60 hof73DG2a.net
正直何言ってるのかよく分からんけど、普通にリダイレクトするだけのような...
っていうか、普通はコマンドライン引数で出力先を切り替えるように作ると思うんだけど...

864:デフォルトの名無しさん
18/05/24 23:35:59.30 iQu+wqIP0.net
>>844
へえ知らなかったな

865:デフォルトの名無しさん
18/05/25 00:27:44.75 j/dB1L1+0.net
PowerShellはもっと流行るべき

866:デフォルトの名無しさん
18/05/25 00:39:09.38 N3c6aWbUa.net
PowerShellとか罰ゲームだろ
インタラクティブシェルとしては悪くないけど、まとまったスクリプト書こうとすると大嫌いになる
Add-TypeでインラインでC#書いたほうがマシだわ
特にC#erはソースの見た目がなんとなく似てるだけに地獄を見るんだよ

867:デフォルトの名無しさん
18/05/25 12:59:33.01 RzxaIECOd.net
>>847
名前付パイプでOkだよな

868:デフォルトの名無しさん
18/05/26 00:52:48.69 grpyMBkE0.net
アプリ側で完結してないと、スクリプト操作とか変なバッチ叩かせてアプリ起動とか怪し過ぎるだろ。
業務アプリじゃねーんだw

869:デフォルトの名無しさん
18/05/28 00:24:44.02 2eqT73MR0.net
if (-100 <= clickPointXTemp && clickPointXTemp <= 100)
{
clickPointX[clickNumber] = clickPointXTemp;
MessageBox.Show(clickPointX[clickNumber].ToString() + "%");
MessageBox.Show(clickPointX[0].ToString() + "%");
MessageBox.Show(clickPointX[1].ToString() + "%");
MessageBox.Show(clickPointX[2].ToString() + "%");
clickNumber++;
}

870:デフォルトの名無しさん
18/05/28 00:29:53.74 2eqT73MR0.net
クリックしてカーソルが-100<=clickPointXTemp<=100の位置にあるときに配列にその値を代入させているのですが、
クリックするとその場で配列に代入できても次のクリックで0になってしまいます。
1回目クリック
clickPointXTemp=10
[0]=10
[1]=0
[2]=0
2回目クリック
clickPointXTemp=30
[0]=0
[1]=30
[2]=0
2回目クリック
clickPointXTemp=100
[0]=0
[1]=0
[2]=100
なんでだろ・・・。

871:デフォルトの名無しさん
18/05/28 00:30:12.40 2eqT73MR0.net
5時間ぐらい悩み中。。。

872:デフォルトの名無しさん
18/05/28 00:33:24.89 SRIgyUF4a.net
データベースを使わないで、インデックスが共通する複数のデータ配列を作りたいときってどういう風な実装が最適なんでしょうか
var A = new int[x]
var B = new int[x]
var C = new int[x]



var E = new int[x]
みたいな感じです

873:デフォルトの名無しさん
18/05/28 00:33:25.48 MfVpzBU40.net
スコープが原因だろうから全体のソース出さないとエスパーだらけの回答になるよ

874:デフォルトの名無しさん
18/05/28 01:08:05.78 dlEIDhlNa.net
>>856
struct Hoge
{
  int A;
  int B;
  int C;
  int D;
  int E;
}
....
var hogeArray = new Hoge[100];

875:デフォルトの名無しさん
18/05/28 07:52:50.79 Mf7CKKuIa.net
>>858
ありがとうございます
助かりました!

876:デフォルトの名無しさん
18/05/28 12:27:04.88 YifI+gJdr.net
誰か>>857のエスパーたのむ

877:デフォルトの名無しさん
18/05/28 13:02:33.05 PWPrnTKxM.net
>>853-854へのレスだろ

878:デフォルトの名無しさん
18/05/28 13:47:49.05 i/nkRhbIM.net
>>860
URLリンク(youtu.be)

879:デフォルトの名無しさん
18/05/28 15:55:38.64 W2eXy6T5M.net
エスパー能力ないと5chはこなせない

880:デフォルトの名無しさん
18/05/28 20:32:45.18 0z7zyrSed.net
複数のクラスで共通の変数定数を外出しして、
その変数クラスを継承するのって良し悪しで言うとどうでしょうか
is aなのかちと微妙な感じです
内臓名クラスを継承して動物クラスを作ってるような
has aなのでオブジェクトとして渡すべきですか?

881:デフォルトの名無しさん
18/05/28 21:46:19.79 rs0fZbm/M.net
>>864
共通の変数などという低い抽象度でクラス設計を考えるのがそもそも間違ってる
実装からクラスを考えると必ず破綻するから、君の今の考え方のまま進む限りはいかなる選択肢も不正解
とはいえ最初から抽象度を上げて設計しろといっても初心者には無理な話だから、気にせず自分の思うように作ればいい
一通りモノ作れるようになったらオブジェクト指向モデリングの書籍を読むことをお勧めする

882:デフォルトの名無しさん
18/05/28 21:51:33.12 I0m/gtVC0.net
オブジェクト指向プログラミングしない方がいいもの作れるよ
関数で組む方法を極めた方がいい

883:デフォルトの名無しさん
18/05/28 21:56:33.33 dVAXJXVu0.net
>>865
>オブジェクト指向モデリングの書籍
例えばどんな本がありますか?特におすすめ、とかじゃなくてもいいです
どういう本が該当するのかよくわからないのです

884:デフォルトの名無しさん
18/05/28 22:18:11.40 rs0fZbm/M.net
>>867
王道はエリック・エヴァンスとかダグ・ローゼンバーグとか
今読んでも実際のコーディングに対しては何の参考にもならないと思うよ

885:デフォルトの名無しさん
18/05/28 22:21:17.59 dVAXJXVu0.net
>>868
キーワード提供、感謝しています

886:デフォルトの名無しさん
18/05/29 12:48:47.90 dUPfr/v4M.net
どのプログラム言語を選ぶかでオブジェクト指向モデルの実現方法がかなり違う


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch