2023-01-01から1ヶ月間の記事一覧

インターフェイス分離の原則(Interface Segregation Principle)

SOLID原則のひとつ。クライアントが使用しないメソッドへの依存を、強制すべきではない。インターフェイスの具象クラスでは、メソッドの実装が強制される。 つまり、具象クラスで不要なメソッドの作成が強制されないように、小さなインターフェイスを作る必…

型の入出力規格の互換性

型の制限の強弱 「強い・弱い」、「狭める・広げる」等が使われる。以下の3つのクラスをもとに、型の制限の強弱を考える。 class A {} class B : A {} class C : B {} それぞれを別ファイルにあると考えると分かりやすい。 AはBの存在もCの存在も知らない。 …

契約による設計(Design By Contract)

プログラムコードの中にプログラムが満たすべき仕様について記述を盛り込むことで設計の安全性を高める。 仕様の記述を盛り込む C#ではAssertを使用する。 System.Diagnostics.Debug.Assert(//条件) 条件にはtrueになる条件を記述する。 AssertはDebugビルド…

リスコフの置換原則(Liskov Substitution Principle)

継承関係が正しいかの判断基準。派生型(サブクラス)は、その基底型(スーパークラス)と置換可能でなければならない。基底型の変数に派生型の値を代入しても支障をきたさないこと。サブタイプはスーパータイプのオブジェクトのすべての振る舞いと、更に別…

開放閉鎖の原則(Open/Closed Principle)

SOLID原則のひとつ。 開放(Open) 拡張に対して開いている。 閉鎖(Closed) 修正に対して閉じている。 新しく機能を追加するとき、既存のコードを変更せずにあたらしいコードを追加するだけで済むようにする。 格闘家を例にとる 一般的に格闘技には階級が…

単一責任の原則(Single Responsibility Principle)

定義 SOLID原則のひとつ。 単一責任の原則について調べると以下のように記述されている。 Every class should have only one reason ton change. A module should be responsible to one, and only one actor. 前者は「クラスの変更理由はひとつ」、後者は「…

対象桁の値を取得する

1桁目について考える 12345の1桁目の値(5)を取得することを考える。10で割った余りが1桁目の値。 n桁目について考える 対象桁を1桁目にすれば良い。 public static class DigitNumGetter{ public static int GetIntegerDigitNumber(int num, int digit){ v…

サイズについてのいろいろ

ピクセル デジタル画像(ラスタ画像)の最小単位。 DPI Dot Per Inchで、解像度を表す単位。1インチ(25.4mm)の幅にどれだけのドットを表現できるか。 PPI Pixel Per Inchで、DPIとおおよそ同義。 ピクセルとmmの関係 解像度が関係してくる。例えば200dpiの…