1 つのメソッドは 1 つのことに専念する

メソッドはできるだけ単純にしよう。読んで解読する人のことを考えよう。

ここでは例として、指定の文字列中の指定の単語を "<B>" と "</B>" で囲んで強調表示に設定する場合を考える。この動作を分解すると、

  • 指定の文字列から単語を抽出する。
  • 抽出した単語が指定のものならば強調表示する。

という 2 つの内容に分けられる。これを 1 つのメソッドで実現してみると、

続きを読む

Emacsでさっきのコマンドをもう一度実行する

Emacsで、さっきミニバッファで入力したコマンドを、もう一回というときは、

  • C-x ESC ESC (repeat-complex-command)

を入力する。そうすると、ミニバッファにさっきのコマンドが表示されるので、必要に応じて編集し、実行する。

f:id:tt195361:20161226152501p:plain

もう一回前、あるいは次のコマンド、というときは

  • M-p (previous-history-element)
  • M-n (next-history-element)

してみよう。

Emacsであるものを使って楽に入力する

入力したいものはEmacsのどこかにある、、、というときは、

  • 最初の何文字かを入力し、
  • M-/ (dabbrev-expand)

してみましょう。

そうするとEmacsは、

  • バッファから入力した文字で始まる語を探し、
  • 入力に続く部分を追加してくれます。

思っていたものと違ったときは、連続して M-/ すると次の単語にしてくれます。

f:id:tt195361:20161216113727p:plain

Interpreterパターン

Interpreterパターンは、文法を解釈しその内容を実行するインタプリタの作成に使う。ここでは、以下の仕様の 1 桁の数字を計算するインタプリタを作ってみる。

  • 使用できる演算子は '*' と '+'。
  • '*' は '+' より先に計算する。
  • '(' と ')' で囲んだ部分は先に計算する。

このインタプリタの文法は以下の通り。

続きを読む

Stateパターン

Stateパターンは、オブジェクトの状態によって動作を変えるときに使う。

例として文字列の引用符 (") の対応をチェックしてみる。ここで、オブジェクトの状態は、

  • 引用符の外
  • 引用符の中

の二つ。それぞれの状態での動作は、

続きを読む

Visitorパターン

デザインパターンの中のVisitorパターンは、

  • データ構造をたどって、その要素について処理をし、かつ、
  • その処理が複数ある。

という場合に使う。ここでは、データ構造として以下のようなComponentクラス, Compositeクラス, およびLeafクラスを使った木構造を例として使う。

続きを読む

Linqで項目間に区切りを入れる

LinqでIEnumerableの各項目の間に区切りを入れるメソッドを C# で作ってみた。

続きを読む