No more Death March

あるSEのチラシの裏 C# WPF

C#

c# enumをDictionaryのキーにした場合のパフォーマンス

3年以上の前の記事ですが、参考にさせていただき調べてみました。proprogrammer.hatenadiary.jp要約するとintへのキャストは高速だけどGetHashCodeの実装は低速とのこと。 あまり厳密なテストをしたわけではないですが、.Net Framework4.6の環境で試してみ…

アダプターパターン

Gofデザインパターンの復習でアダプターパターンについて書きます。 書籍等で見ると最初は混乱したのですが、覚えるとデコレーターパターン同様、シンプルなパターンだと思います。 アダプターパターンとは アダプターパターンの構成 適合させたい型 アダプ…

デコレーターパターン

Gofデザインパターンの一つ、デコレーターパターンについて復習します。 デコレーターパターンは比較的簡単で、デザインパターンの中で一番最初に覚えたパターンでした。 再利用しやすいコードを書く上で今でも欠かせないパターンだと思います。 デコレータ…

WPFで帳票 参考リンク

ネットで色々検索してみるとWPFでも帳票印刷が出来るらしい。 後で参考に出来そうなリンクをメモ以下参考: WPFでの印刷の基本(1) 単一ページの印刷 - Qiita WPFでの印刷の基本(2) 複数ページの印刷 - Qiita WPFを帳票フレームワークとして使う - @kotyの…

C# 月初日

C#

public DateTime MonthFirstDate(DateTime value) { return new DateTime(value.Year, value.Month, 1); } DateTimeのコンストラクタの日にち部分に1を渡す。

C# 月末日

C#

public DateTime ToMonthLastDate(DateTime value) { return new DateTime(value.Year, value.Month, DateTime.DaysInMonth(value.Year, value.Month)); } 年と月はそのまま、日にちだけDateTimeクラスのDaysInMonthメソッドに年と月を渡してやる。 VB6の時…

インターフェースを考える(5)IAction その2

前回に続きIActionについて考える。 IPredicateやITaskと同じように組み合わせ用にCompositeActionクラスを作る。 using System; using System.Collections.Generic; namespace Nmdm.Actions { public sealed class CompositeAction<TContext> : IAction<TContext> { public Comp</tcontext></tcontext>…

インターフェースを考える(4)IAction

C#実践開発手法よりIActionインターフェースです。 namespace Nmdm.Actions { public interface IAction<TContext> { void Do(TContext context); } } 単一の引数を受け取る戻り値の無いインターフェースで、 引数は型パラメータで指定出来る・・・と使いどころはどこ</tcontext>…

インターフェースを考える(2)ITaskインターフェース

C#実践開発手法で紹介されているもっとも単純なインターフェースITaskを作ってみます。 namespace Nmdm.Tasks { public interface ITask { void Do(); } } 引数も無く、戻り値もなく、最もシンプルなインターフェースですね。こういうインターフェースを作る…

インターフェースを考える(1)はじめに

オブジェクト指向プログラミングを勉強していると 実装ではなく抽象に依存する というフレーズを目にすることがあります。このカテゴリの記事では私自身の勉強のために、 とことんインターフェースを使ってみたらどうなるか、 実際にプログラミングしながら…

c# リファクタリング 小さい方の値が欲しい。

二つのint型から小さい方の値がほしい時。 public void Hoge(int one,int other) { int min; if (one < other) { min = one; } else { min = other; } } じゃなくて。MathクラスのMinメソッドを使おう。 public void Hoge(int one,int other) { int min; min…

C# 自作クラスの戻り値からnullを排除する。

C#

自作クラスのプロパティやメソッドでなんらかの値を返すならnullは返さないようにしたい。 そのクラス自体のnullチェックを他のクラスがするのはわかるとして、 クラスが公開する「何か」についてはそのクラスが責任を持つべき。string型のプロパティがある…

C# リファクタリング コレクションを変換

コレクションの内容を一定のルールに従って違う型に変換したい場合 public void Hoge() { var list = new List<object>(); list.Add(new object()); list.Add(new object()); list.Add(new object()); list.Add(new object()); list.Add(new object()); var list2 = </object>…

C# リファクタリング foreachで抽出

Listをぐるぐる回して条件に合致するものを別のインスタンスに入れている場合 public void Hoge() { var list = new List<String>(); list.Add("123"); list.Add("1234"); list.Add("12345"); list.Add("123456"); // 4文字以下のものをリストから抽出したい。 var l</string>…

C# リファクタリング コレクションを返すメソッド

なんらかの処理を行ってコレクションを返すようなメソッドがあったとして、 こんな具合にパラメータがnullだったら例外を投げ返すんだったら public IEnumerable<object> Hoge(object obj) { if (obj == null) throw new ArgumentNullException("obj"); // なにか処</object>…

C# リファクタリング 早期リターン

int型の引数が5以下だったらTrueを返すとして、 public bool Hoge(int value) { if(value < 5) { return true; }else{ return false; } } こうだったのを public bool Hoge(int value) { if (value < 5) return true; return false; } こうする。ソースコー…

C# ドメインイベントの実装 つづき

C#

前回のエントリーの続きから nomoredeathmarch.hatenablog.com Publisherクラスのメソッドについて記述まずSubscribeメソッドから public static void Subscribe(ISubscriber subscriber) { try { Mutex.WaitOne(); if (subscriber == null) throw new Argum…

C# ドメインイベントの実装

C#

こちらの書籍の第8章で紹介されているパターン 通常のイベントハンドラを使わずにクラスをイベントに見立て、クラス間の結合を弱める。実践ドメイン駆動設計作者: ヴァーン・ヴァーノン出版社/メーカー: 翔泳社発売日: 2015/03/19メディア: Kindle版この商…

C# 拡張メソッドについてメモ

C#

拡張メソッド (C# プログラミング ガイド)拡張メソッドは別クラスで宣言した静的なメソッドをインスタンスメソッドのように記述出来るもの。まずは拡張メソッドでメソッドで追加するクラス namespace Nmdm { public sealed class Hoge { } } そして拡張メソ…