2020年4月24日のブックマーク (4件)

  • C# の const の間違った使い方をやめよう - Qiita

    public な const を定義するのはやめよう constで定義した変数をアセンブリ外に公開すると「const のバージョニング問題」と言われる問題が発生します。 どういうことかと言うと... クラスライブラリ Sub.dll に const で TAX(消費税率)が定義されていたとします。

    C# の const の間違った使い方をやめよう - Qiita
    carpediem78
    carpediem78 2020/04/24
    const 注意
  • 【C#の定数】const と readonly、static readonly の使い分け - Qiita

    constフィールドは、コンパイル時定数の扱い。(MSDN) 変数のように扱える定数(暗黙的 static) 宣言時にのみ初期化可能(コンパイル時に値が埋め込まれる) readonly より実行速度が速い switch文やデフォルト引数に使える インスタンスを new した結果は割り当てられない(C#の組み込み型のみ) ※注意 コンパイル時に決定されてしまうため、クラスライブラリなどでpublicなconst定数を定義しそれをアセンブリをまたいで参照してしまった場合、将来ライブラリ側の定数を変更しても参照されたアセンブリ側をコンパイルしなおさない限り更新されないという問題がある(constのバージョニング問題) readonlyフィールドは、実行時定数の扱い。(MSDN) 実際は、読み取り専用の代入不可な変数 宣言時の他に、コンストラクタ内でも初期化可能 定数であるconstよりは、僅かに

    【C#の定数】const と readonly、static readonly の使い分け - Qiita
    carpediem78
    carpediem78 2020/04/24
    const, readonly
  • 【C#】デフォルト引数のバージョニング問題

    .NETのクラスライブラリ設計 (Microsoft.net Development Series) | Krzysztof Cwalina, Bard Abrams, 藤原 雄介 | | 通販 | Amazon www.amazon.co.jp 『.NETのクラスライブラリ設計』というを読んでいて、デフォルト引数はバージョニング問題があるので(ライブラリでの)使用は避けてくださいみたいな記述があり、なるほどなぁとなったので技術的検証とかしてみたので書いておきます。 ちなみに、実験プロジェクトGithubのほうに公開しておきます。 GitHub - MeilCli/DefaultParameterSample Contribute to MeilCli/DefaultParameterSample development by creating an account on GitHu

    【C#】デフォルト引数のバージョニング問題
    carpediem78
    carpediem78 2020/04/24
    constにはバージョニング問題というものがある。
  • 【C#】マジックナンバーを駆逐してやる!定数クラスの作り方

    そんな感情をむき出しにしてしまうほど、マジックナンバーというやつに憎悪を感じる。 正確には、なんの躊躇もなくマジックナンバーを使うプログラマに憎悪を感じている。 そもそもマジックナンバーとは以下のようなものだ。 プログラムにおけるマジックナンバー(魔法数字)とは、何らかの識別子として用いられるプログラム中に書かれた具体的な数値である。そのプログラムを書いた時点では製作者は数値の意図を把握しているが、他のプログラマーまたは製作者人がマジックナンバーの意図を忘れたとき閲覧すると「この数字の意味はわからないが、とにかくプログラムは正しく動く。まるで魔法の数字だ」という皮肉を含む。 引用元:マジックナンバー (プログラム) - Wikipedia 例えば以下のようなソースがあたったとする。 if (taxCalcKbn == "1") { tax = price / 21; payment =

    【C#】マジックナンバーを駆逐してやる!定数クラスの作り方
    carpediem78
    carpediem78 2020/04/24
    複数のモジュールで共通に使用する定数