ふらっと C#,C♯,C#(初心者用) Part134

■ このスレッドは過去ログ倉庫に格納されています
2017/11/28(火) 21:30:48.55ID:7U+HR4FY
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。

他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。

内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。

なお、テンプレが読めない回答者は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

■前スレ
ふらっと C#,C♯,C#(初心者用) Part133
http://mevius.5ch.net/test/read.cgi/tech/1510056685/

■関連スレ
C#, C♯, C#相談室 Part95
http://mevius.5ch.net/test/read.cgi/tech/1508180530/

■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/

■情報源https://msdn.microsoft.com/ja-jp/library/gg145045.aspx
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index
https://msdn.microsoft.com/en-us/library/gg145045.aspx
http://referencesource.microsoft.com/
-
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
2017/12/19(火) 22:05:19.18ID:N/VqY3nf
ありがちな形にこだわるタイプか
継承しなきゃならないほど金額()が込みいっているのかは置いておいて「動けばいいんだよ」
2017/12/19(火) 22:06:13.10ID:MJol/7NU
全体見てないからなんとも言えんけど
その粒度でクラス作るとクラス図ってどうなるの?
2000項目あったら2000クラス作るの?
って心配になった

あとは動けばいいよ
2017/12/19(火) 22:12:15.71ID:7vxZYYFe
>>779
だから悪いけど結局何が聞きたいのか伝わってないと思うよw

public static class 費用
{
  public const int 支払家賃 = 100;
  public const int 水道光熱費 = 200;
  public const int 総費用 = 支払家賃 + 水道光熱費 ;
}

なんかこれで問題ないようにも聞こえるけどこれじゃダメなの?
2017/12/19(火) 22:12:45.55ID:XIiNWcV9
>>777
才能無し、問題外
以上
2017/12/19(火) 22:13:51.01ID:ySpyuYdG
>>783
クッサw
死ねよハゲ^^
2017/12/19(火) 22:15:56.11ID:XIiNWcV9
>>784
センスの欠片もない
キミにプログラム開発は無理
2017/12/19(火) 22:17:09.67ID:ySpyuYdG
>>785
口臭いです^^
歯磨きサボらないで下さい・・・
2017/12/19(火) 22:20:34.71ID:XIiNWcV9
>>786
ここまで酷いのは見たことがない
誰かが適切なアドバイスをしたとしてもキミは斜め45度下へぶっとぶだろう
上ではなく下だwww
2017/12/19(火) 22:21:50.93ID:Li3fAhD+
どうやったらこんなつまんないレスを返せるんだよ...
重症やな w
2017/12/19(火) 22:24:47.20ID:ySpyuYdG
>>787
顔赤くなってますよ^^
もっとクールなキャラだったような気がします・・・
790デフォルトの名無しさん
垢版 |
2017/12/19(火) 22:29:22.36ID:f0lLnGqp
MVPクラスの人は居ますか?
2017/12/19(火) 22:30:42.82ID:MJol/7NU
>>790
>>777をエントリーしといた
2017/12/19(火) 22:30:56.03ID:XIiNWcV9
>>789
余りにも寒いコードを見たものでなw
2017/12/19(火) 22:32:05.29ID:7vxZYYFe
VIP患者なら大勢いるねw
2017/12/19(火) 22:35:08.57ID:ySpyuYdG
>>792
誰と勘違いしているのでしょう・・・
IDはちゃんとチェックしましょうね^^
2017/12/19(火) 22:38:19.96ID:XIiNWcV9
>>794
>>777 の同類だろwww
2017/12/19(火) 22:41:32.93ID:ySpyuYdG
>>795
おやおや・・・
とても都合の良い解釈ですね^^
右も左も分からない初心者に「センス無し、問題外」なんて冷たい言葉をかけるのはやめましょうね・・・
2017/12/19(火) 22:50:03.39ID:z/JS3u8x
まあ、自分が駆け出しの頃に上司にそう言われたことの腹いせにここで鬱憤晴らしてるんだろうなぁ....
2017/12/19(火) 23:01:26.33ID:MJol/7NU
別にどう組んでも動くし
正解はないのかもな

ただ、この言語で表現できる中規模のまとまりをそんなプロパティレベルのもんに使われると粒度の把握がし難いなと

結局設計の良し悪しなんてソイツの気分だからね
2017/12/19(火) 23:48:04.54ID:QDUgEa5j
例が例だから粒度的におかしいけどこんなこともできますよ的な…
Addで費用つっこんで使える
Removeとか全部略

public class 費用リスト
{
long sum = 0;
public long 合計 => sum;
List<費用> list = new List<費用>();
public ReadOnlyCollection<費用> 品目 { get;}

public 費用リスト()
{
品目 = new ReadOnlyCollection<費用>(list);
}

public void Add(費用 hiyo)
{
if (hiyo == null) { return; }
sum += hiyo.金額;
list.Add(hiyo);
}
}
2017/12/20(水) 00:00:42.82ID:+SxGwy2+
わざわざ費目をクラスで分けている理由のことじゃないの?
>>799だけなら別に必要ないかと。
2017/12/20(水) 05:02:03.39ID:/+M3aR4Y
>>777
例として固定値を返していると仮定
金額が費用の状態によって複雑になるなら有な考え方だと思う
2017/12/20(水) 05:27:10.69ID:uEdWuAdp
ねーな
業務上3000とか4000とか値扱ってる奴のが多いだろ
こういう組み方見るだけでうげっとする
じゃあ、構造を把握するためにクラス図でも見てみよーかって
資料開いた瞬間閉じるわ
2017/12/20(水) 06:24:16.03ID:w7lpXa1y
プログラムセンスのあるヤツなら最初からやらない間違いで
残念ながら矯正不能なんだわ
804752
垢版 |
2017/12/20(水) 07:08:03.81ID:FojWkfgf
費目が8個なのでサブクラスに各費目クラスを作ったのですが。。。

サブクラスは何個くらいが適当なのでしょうか
10個超えるとアウトでしょうか
805752
垢版 |
2017/12/20(水) 07:15:48.78ID:FojWkfgf
ちなみに費目をクラスで分けた理由は、費目ごとにちょっと込み入った算出処理をするので、それぞれを閉じ込めておきたいと思いました

でも、費用が最小の粒度の方が一般的な雰囲気ですね

急遽プログラムをやれと言われた人間なのでセンスとか言われると厳しいです
2017/12/20(水) 07:35:47.88ID:+xQghQuB
>>805
ならサブクラスでいいよ
ここの連中は単純な家計簿みたいなツールを前提に話してる
そうじゃなく対象が複雑なら話は変わる
2017/12/20(水) 07:42:10.14ID:uEdWuAdp
>>806
変わるかなぁ?
日○とか三○でもそんなの見たことないよ
ちなみにそこだと項目数が10万とか超えちゃってるかんね
それ全部クラス作ったらw
808752
垢版 |
2017/12/20(水) 07:53:51.41ID:JgbCLwPB
>>806
クラス分けしても悪くはないですか
ありがとうございます

ただ、費用の抽象クラスを費用クラスにしてメソッドを各費目算出とすると、メソッドに「費用合計算出」を作っても違和感が無いかなとも思い

プログラムは難しいとしみじみ思いました
2017/12/20(水) 07:59:44.59ID:+xQghQuB
>>807
対象としてるドメインが違うだろ
呆れるわ
2017/12/20(水) 08:14:04.00ID:XFxcCwxD
業務アプリの設計なんかDFD描いてトランザクションスクリプトでいいよ
開発者全員が相当慣れてない限り、まともなオブジェクト指向でスケールさせるのは現実的に無理
2017/12/20(水) 08:17:09.42ID:dzFn8RAE
費目の数が10万!?
ないわー w
2017/12/20(水) 08:20:29.69ID:dzFn8RAE
>>808
> ただ、費用の抽象クラスを費用クラスにしてメソッドを各費目算出とすると、メソッドに「費用合計算出」を作っても違和感が無いかなとも思い
個々の費目で合計なんて求めようがないと思うが...
合計の算出は費目を束ねるクラスでやるべき話じゃね?
2017/12/20(水) 08:23:01.94ID:TnQp+4qQ
それ以前に、費用の集計なんかSQLでいいよ
2017/12/20(水) 08:44:12.56ID:uEdWuAdp
>>811
余裕っしょ
設定数100個の部品が100個あっただけでもう一万よ
でかい機械で部品数たった100個とかありえないから10万は確実に超える
もっとあるだろうなぁ
815デフォルトの名無しさん
垢版 |
2017/12/20(水) 08:44:55.30ID:apLR0/3w
>>805
にわかプログラマーならオブジェクト指向に拘るより
もっと単純な仕組みでやったほうが良いね
目的がオブジェクト指向になって簡単なものを複雑にしてる気がする
2017/12/20(水) 09:24:55.44ID:CxRyWMoc
急遽プログラムやれと言われてこれだけオブジェクト指向理解したならすごいな
817デフォルトの名無しさん
垢版 |
2017/12/20(水) 09:30:51.88ID:apLR0/3w
費目毎のクラス分けは目眩がするけど
2017/12/20(水) 09:30:52.50ID:gjQwmCKz
>>804
ケースバイケース
2017/12/20(水) 09:33:53.14ID:gjQwmCKz
>>808
非常にセンスが良い
自信持って良い
注意点はおかしな現場(こっちの方が多数派だったりするがw)へ行った時に絶望しないことかな
2017/12/20(水) 10:12:49.94ID:IdA1DVd/
授業でC言語ちょっとやっただけでオブジェクト思考はちっとも理解してないから>>777がそんなに悪いのかわからない
費用ってクラスを使って家賃、光熱費のインスタンスを作るようにしたらいいのか?
2017/12/20(水) 10:28:45.17ID:GdnGy9ZB
>>799
sum += hiyo.金額;
エラー CS0019 演算子 '+=' を 'long' と 'メソッド グループ' 型のオペランドに適用することはできません
と出るのですが、正解を教えて下さい。
2017/12/20(水) 10:30:50.20ID:irahYJNV
元の奴が金額がメソッドになってるけど
それはプロパティになってる

というか金額をメソッドにしちゃだめ
元のコードがダメ
2017/12/20(水) 10:36:11.97ID:GdnGy9ZB
>>822
このエラーが出ている行を
エラーが出ないように修正する方法を教えて下さい。
2017/12/20(水) 10:38:08.67ID:irahYJNV
>>777の 金額をメソッドからプロパティに書き直す
2017/12/20(水) 10:44:45.87ID:N4PPX6u2
どーせ()忘れ
2017/12/20(水) 10:47:18.91ID:GdnGy9ZB
>>824
>>825
文章で説明して頂いても理解出来ないので
完全版のコードを掲載して頂けると有難いです。
2017/12/20(水) 10:50:33.77ID:irahYJNV
プロパティが自分で書けないならここからコード書いてても無駄だよ

早く勉強しろよ
2017/12/20(水) 10:53:01.07ID:hctoYabD
>>826
hiyo.金額()
829デフォルトの名無しさん
垢版 |
2017/12/20(水) 11:01:57.32ID:GdnGy9ZB
>>828
ありがとうございました。
2017/12/20(水) 11:04:38.98ID:irahYJNV
煽りでも何でもなく
プロパティが自分で書けないならここからコード書いてても無駄だよ
2017/12/20(水) 11:11:07.65ID:hctoYabD
あ、そすか。
2017/12/20(水) 11:19:04.73ID:fz4ulcZ2
>>822
金額をメソッドにしちゃダメな理由を3行で
2017/12/20(水) 11:44:22.53ID:EHvPlft0
まあ普通に考えればメソッドなら金額計算みたいに動詞的にしろよとは思うな
日本語メンバ名だと曖昧だけど
2017/12/20(水) 11:48:55.09ID:884JsNpl
まだやっていたんだ、簡単なことを難しくするバカのお手本
2017/12/20(水) 11:50:57.09ID:Wpgvy9KL
そうですか^^
836デフォルトの名無しさん
垢版 |
2017/12/20(水) 11:55:45.07ID:yB/d6H1Y
>>834
同意する
2017/12/20(水) 11:57:47.91ID:uig5CTB+
初心者に説教するアホ多過ぎ
弱いものイジメはイクナイ(´・ω・`)
2017/12/20(水) 12:04:02.26ID:Cxfy3ZNg
>>752の人はたぶんネタなんだろうね。
結局何が聞きたいのか明確にしろって言っても答えないし
ネタのつもりなら何が面白いのかさっぱり分からんが

こんな曖昧な質問に曖昧なまま答える奴も頭どうかしてると思うけど
2017/12/20(水) 12:05:42.91ID:MbxWSbMs
マジでネタと思ってる奴って頭どうにかしてるよね
840752
垢版 |
2017/12/20(水) 12:15:20.79ID:qNzSCdz1
>>838
費用のようなものを費目単位でクラス化したのですが、一般的にはどうなのでしょうかと質問したつもりですが、意図が伝わらなかったみたいですみません

結論としては、費用をクラスとし、費目メソッドを数分作る方が一般的なのかなという結論に辿り着きました

色々と参考になりました
841752
垢版 |
2017/12/20(水) 12:20:38.93ID:qNzSCdz1
>>838
モデリングの対象次第で答えが変わるもの、答えようが無いということなのでしょうね

最近やっと覚えた抽象クラスを使いたかっただけかもと言われたらそうかも知れません

反省しています
842752
垢版 |
2017/12/20(水) 12:41:55.46ID:qNzSCdz1
最後にすみません。ある条件で作業時間×レートが費用になるので、費用クラスと作業時間クラスを費用算出メソッドを持つインターフェースで継承させようと思うのですが、インターフェース名が「費用算出」はセンスが無いでしょうか?

インターフェースを使えばコードが仕様を語ってくれるのではと期待しているのですが基本情報資格も持っていない自分にはこれで良いのか解らず

実務経験豊富な諸兄にお尋ねしたい次第です
843デフォルトの名無しさん
垢版 |
2017/12/20(水) 12:45:22.87ID:yB/d6H1Y
レートクラスは無いのん?
2017/12/20(水) 12:49:20.00ID:dzFn8RAE
>>814
お前は費目の意味わかってないだろ...
部品一個一個に異なる費目がつくんじゃねーぞ w
クラスとインスタンスの違いも理解してないと見た
2017/12/20(水) 12:51:34.80ID:dzFn8RAE
>>837
てか、説教してるつもりの奴の方がレベル低いし w
2017/12/20(水) 12:53:14.86ID:dzFn8RAE
>>842
俺は算出って用語をあまり見ないから少し違和感あるけどまあそれで違和感ないならいいんじゃね
2017/12/20(水) 13:49:49.11ID:bqoc1RuE
>>844
違うよ
こんな細かい項目クラスにしちゃって全体の粒度はどうなるの?って話
2017/12/20(水) 13:51:39.57ID:bqoc1RuE
やっぱり設計のときにクラス図書かせるべきだな
あまりにも小さい項目いちいちクラスで構えるつもりならそれも全部
クラス図として書いてもらおう
2017/12/20(水) 17:45:30.12ID:dzFn8RAE
>>847
だから費目が10万とかはあり得んだろって話
うちの会社はそこそこの規模で結構色々手掛けてるけどそれでも経理関係の費目コードは50ぐらいしかない
当然大分類、中分類、小分類と階層化されてるからそれに合わせて継承させればいい
まあうちの会社の情シスはそこまでやってなくて費目コードを見て分岐してそうだけど w
2017/12/20(水) 17:53:32.28ID:kZMVhJ0h
>>849
じゃそれでもいいけど
それだけで50個クラスできるんでしょ?
クラス図どうなるの?クラス50個作るん?
って言いたいわけよ

結局設計ってさ
わかりやすいか
わかりにくいか
だけなんだよね

上下のわからんクラスって粒度を
そんなちっぽけなもんに使うと
全体が見えなくなっちゃうんだよ

費目は少なくてってそれお前の環境がそうってだけの偶然でしょ?
この方針はオススメできないね俺は

まあ、どう組んでも動けばよいのであくまでオススメの域
2017/12/20(水) 17:57:31.91ID:0mbmAU0+
50個のクラスができるものをクラス使わずにごちゃ混ぜにしたら余計にわけわからんだろ
こういう話題で数が増えたらどうするの?って反論するやつが必ず現れるけどそれ墓穴掘ってるだけだぞ
852752
垢版 |
2017/12/20(水) 18:12:27.89ID:PXZlLTCM
>>843
レートクラスは必要かも知れないですね
まだまだ考慮不足でした
2017/12/20(水) 18:25:24.19ID:AIjICjtT
データが構造を持ってしまうと、別の使い方をする時に手間が増えるだけなんだよ
データはデータでクラスにする必要なんかまったく無い
2017/12/20(水) 18:31:13.93ID:dzFn8RAE
>>850
> クラス図どうなるの?クラス50個作るん?
必要なら作るだけだろ

> 上下のわからんクラスって粒度を
> そんなちっぽけなもんに使うと
> 全体が見えなくなっちゃうんだよ
それお前さんの管理能力の問題...

> 費目は少なくてってそれお前の環境がそうってだけの偶然でしょ?
世の中の会計ソフトとか見てみな
もしくは自分の会社の経理担当者に聞けばわかると思うよ

> この方針はオススメできないね俺は
別にお前もそうしろなんて言ってないから勝手にやってなよ
2017/12/20(水) 18:47:00.16ID:n3mgdNKt
>>853
別の使い方する時点で分析設計ミス
2017/12/20(水) 18:56:33.13ID:R/x04Nlq
>>854
残念ながら、世の中の会計ソフトなんかほぼ100%トランザクションスクリプトだよ
2017/12/20(水) 19:01:31.53ID:6oreCn9e
>>851
好きなようにすればいいよ
ただ、お前のクラス図に50個のクラスが並ぶだけ
2017/12/20(水) 19:08:20.84ID:dzFn8RAE
>>856
なんの話をしてるんだよ w
2017/12/20(水) 19:13:04.16ID:w7lpXa1y
費目、時間単価、時間がそれぞれ独立したクラスか
めまいを禁じ得ない
2017/12/20(水) 19:35:42.09ID:n3mgdNKt
それらが同じクラスに混在する方が目眩するわ
2017/12/20(水) 19:59:30.76ID:+lUILV8P
で、最終顧客がのぞむ要求に答えられるアプリケーションなのかと
2017/12/20(水) 20:00:24.04ID:1pJRigF6
全体を把握しないと作業に取り掛かれないなら
既にクラス設計として破綻してるとしか
2017/12/20(水) 20:45:21.17ID:QInM5P3Y
結局要件があいまいだから何とも言えんけど普通に考えれば費目ごとに派生するのはないね。

せっかくC#にはデリゲートがあるんだから、費目で違う処理はコンストラクタで
デリゲート食わせて対応できるし、その上でプロトタイプパターン適用した方が分かりやすいと思うよ。

もちろん費目ごとの固有の処理が費目固有のプロパティに依存するような場合は
継承を使うしかないけどね
2017/12/20(水) 21:00:51.80ID:D80mgGFK
費目はクラスじゃなくてデータにするべきものでは在るが、初心者が「そう言われたから」って理由でやるより
何故そうなのかを理解してやるのは悪いことじゃない
自分で考える人を挫くスタイルはあまり感心しないな
2017/12/20(水) 21:05:35.30ID:n3mgdNKt
種類によって振る舞いが違うって要件なのにデータで扱うとか呆れるわ
どんだけswitchする気だよ
2017/12/20(水) 21:15:55.31ID:dxH3+214
> 自分で考える人を挫くスタイルはあまり感心しないな
マウントしたいだけやろ
今回は質問者の方がレベル高いからアホみたいなことになってるけど w
2017/12/20(水) 21:16:44.49ID:R/x04Nlq
>>865
アホ
全く別のデータ項目をどうやったら混同できるんだ
2017/12/20(水) 21:22:03.45ID:n3mgdNKt
>>867
全く別のものを混同して同じデータ構造でごちゃ混ぜに扱おうとしてるのがデータフロー派だぞ
俺や質問者は異なる物は異なるクラスにしろっていうオブジェクト指向派な
むしろ真逆だわ
2017/12/20(水) 21:33:44.71ID:6oreCn9e
>>868
何でこんなくだらないものいちいちクラスにするんだ
クラス図書かないからこんな蜘蛛の巣みたいなクラス図作って平気な面してんだろお前
2017/12/20(水) 21:35:40.32ID:R/x04Nlq
>>868
混ぜて使いたいからクラスにするんだと思ってたんだが違うのか?
全く別物として区別して扱うんなら行全体を1クラスにして複数のフィールドで持つのと大差ないと思うけど?
2017/12/20(水) 21:49:04.68ID:ie4nb91k
費用と言っても材料費、人件費、、減価償却費、貸倒引当金など性格や扱いの異なるものを同じ基底から派生させるのはどだい無理がある
集計したいだけなら金額を取得するインターフェイスを実装する方が賢い
2017/12/20(水) 22:10:01.13ID:n3mgdNKt
>>869
アホほど条件分岐書いて平気な顔してるやつに言われたくない
きみさクラス図どころかオブジェクト指向すらしたことないだろ?

>>870
同じ規約で異なるものを集めるのと
異なるものをただひとつのものとするのと
全く違うことだ
混ぜるという言葉の使い方を見極めろ
2017/12/20(水) 22:10:03.47ID:WriG98aZ
List〈string[]〉の型をstring[]の特定の列をキーにしてソートしたいんですけど
List.Sort(x => x[1]);
のような書き方はできないのでしょうか?
List〈class〉を用意するしかないのでしょうか?多分Listの中の配列にもLINQ使えそうなんですが・・・

テストで試しに動かしたいだけなのにわざわざclassを書くのが大変なので・・・
2017/12/20(水) 22:18:17.41ID:gjQwmCKz
>>873
Sortは過去の遺物
OrderBy使っときなさい
2017/12/20(水) 22:26:57.08ID:6oreCn9e
>>872
でもさ
クラス図書いたら君のはこんなくだらない処理でクラスが50個も並んでるんだぜ
どの辺がいいプログラムなの?
他のも合わせれば5-600は行くんじゃない?
正しいクラス図なんて一度も書いたことないっしょ?
おそらく資料見てもこのクラスは記述があるけどこのクラスは記述がないなぁ
ってもんを平気で作っちゃうでしょ?
2017/12/20(水) 22:31:22.52ID:n3mgdNKt
>>875
そのドメインがそういうものなら何百クラスだろうがクラスで書くのが正しい
それがそのドメインでは最も簡潔で正しい姿なんだよ

そこを曲げてデータ区分や条件分岐で雑なコードを書いたら
クラス数は増えないかもしれないがコードの複雑度が爆発的に高まるだけ

なぜなら数百クラスが個々に持つべき振る舞いが同じクラスに区別なく同居してしまうんだぜ?
ろくなことにならないよ
2017/12/20(水) 22:32:30.67ID:WriG98aZ
>>874
OrderByも試したんですがこのラムダ式だと意図した動作にならないです
とりあえずList〈class〉で素直に書いてみますが、ラムダ式のキーに配列やListのインデックス指定して使うのは無理なんでしょうか?
878デフォルトの名無しさん
垢版 |
2017/12/20(水) 22:33:13.38ID:GdnGy9ZB
>>873
>型をstring[]の特定の列をキーにしてソートしたいん
ってどういう事ですか?
型をソートするの意味が分かりません。
初心者なので詳しく教えて下さい。
2017/12/20(水) 22:35:03.12ID:QInM5P3Y
意図した動作にならないのをバグっていうんだと思いますw
2017/12/20(水) 22:36:47.64ID:6oreCn9e
>>876
そもそも設計書で四角で囲って強調すべき単位なの?費目って
オブジェクト指向も自分解釈でおおよそ一般人がオブジェクトなんてしない単位でオブジェクトを作ってるよね?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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