@ledsun blog

Hのキーがhellで、Sのキーがslaveだ、と彼は思った。そしてYのキーがyouだ。

C#

オブジェクト指向設計とは

オブジェクト指向という言葉には オブジェクト指向分析(OOA) オブジェクト指向設計(OOD) オブジェクト指向プログラミング(OOP) の三つの意味があります。 オブジェクト指向初心者泣かせです。 ここではオブジェクト指向設計を説明します。 ソフトウェアの設…

DAOの詳細設計 C#編

J2EEパターンから始まって今となっては一般的になったDAOパターン、の詳細設計。 DTO DTOは更新時間、更新ユーザ以外のテーブルカラムをすべて持たせる。 カラム名とプロパティ名を対応させておくとINSERTとUPDATEのSQLを動的に生成できて楽。 マスタメンテ…

ASP.NET GridViewのヘッダ固定スクロール IE8以降

スタイルシートの用意。scroll1クラスをtableに指定します。 *1 .scroll1 thead, .scroll1 tbody { float: left; } .scroll1 tbody { height: 100px; overflow-y: scroll; } GridViewはデフォルトではtheadを生成しないので、次のおまじない*2 *3。 GridView…

よくやる単純作業リファクタリング

C#

usingの並べ替え Ctrk + K, Ctrl + D ローカル変数の型をvarに 余計な空行を削除 一回しか使わないローカル変数をインライン展開 定義順変更 DAOのメソッドをCRUD順に並べる ユーザコントロールのメソッドを、public、イベントハンドラ、privateの順に並べる…

文字列をカンマでつないだ時に最後のカンマをつけない方法

つい配列にJoinして、インテリセンスがLINQっぽい表示を出し、「何Joinだっけ〜?」と頭を悩ますのでメモ。

C#3.0のLINQと拡張メソッドでリファクタリング

リファクタリングしたらC#3.0、特にLINQと拡張メソッドが素晴らしいことを実感しました。例示します。 元コード C#2.0で書きました。 リファクタリング後 C#3.0です。大きい変更点は ループをLIQNとstring.Joinに置き換え インスタンスメソッドを拡張メソッ…

ページ遷移用のヘルパークラス

前回のエントリのようにクエリストリングにURLに使えない文字列を入れる時は、Responce.Reideirectに渡す前にURLエンコーディングする必要があります。毎回エンコードを意識するのは面倒なので以下のようなクラスを作ってみました。 使い方 hoge=fugaという…

背景色を薄くする

C#

背景色を薄くするためにRGBを変更します。 int oldColor = BackColor.ToArgb(); int r = (oldColor & 0x00FF0000) >> 16; int g = (oldColor & 0x0000FF00) >> 8; int b = oldColor & 0x000000FF; int addValue = 20; r = (r + addValue) > 0xFF ? 0xFF : r …

System.Webを使わずにTwitterで発言する

C#

WebClientの代わりにWebRequestを使い、HttpUtility.UrlEncodeの代わりにUri.EscapeUriStringを使うとSystem.webへの参照を追加する必要がなくなります。WebRequestはデフォルトでGETメソッドを使うため明示的にPOSTメソッドを指定する必要があります。 usin…

Twitterで発言する

C#

C#からTwitterに発言するコードです。NetworkCredential生成の第一引数にTwitterのユーザ名、第二引数をパスワードを入れれば発言することが出来ます。 コンソールプロジェクトを新規作成し、System.Webへの参照を追加し、下記のプロジェクトを張り付ければ…

Round関数の四捨五入とJIS丸め

C#

.NET FrameworkではRound関数は四捨五入ではなく、JIS丸め*1という方式をとっています。次のように四捨五入とは違う結果が返ってきます。 using System; using System.Data; using NUnit.Framework; using NUnit.Framework.SyntaxHelpers; [TestFixture] pub…

反復子ブロック

C#

前回作成したGetEnumuratorメソッドで反復しブロックがどのようなコードを生成したかReflector*1で見てみましょう。 public IEnumerator<int> GetEnumerator() { <GetEnumerator>d__0 d__ = new <GetEnumerator>d__0(0); d__.<>4__this = this; return d__; } d__0というクラスを返すメソッドと</getenumerator></getenumerator></int>…

GetEnumeratorの実装。

C#

C#で自作のクラスをforeach文で呼び出したい場合はGetEnumuratorメソッドを実装すればforeach文で呼び出せるようになります*1。次のforeach文は foreach (int i in new Simplest()) { Console.WriteLine(i); } 以下のシンタックスシュガーです。 IEnumerator…

インデクサの実装

C#

C#で以下のようなインデックスを指定するアクセスメソッドを持ったクラスを、インデクサ*1で置き換えたいと思うことがあると思います。 public class MyDic { private Dictionary<string, string> _data; public string GetAt(string index) { return _data[index]: } } クラ</string,>…

InternalTestCaseパターン

C#

http://www.itarchitect.jp/technology_and_programming/-/35057-2.htmlNUnitで書くとこんな感じになります。 JUnit4と大体同じだと思いますが、staticなクラスはテストできないので注意が必要です。 製品コードとテストコードがすぐ隣にあるのがいいですね…