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

メタエディタのデータ構造

データ構造はComposite-Treeを使う。 > > > > * > Root 1--->1 java.io.File > 1 java.lang.String FileLeaf 1--->1 java.io.File 保存時は各>にフラグを立てておき、1回目はそのまま保存し2回目以降はreferenceとして処理する。*1 読込時は各xml要素が>に…

メタエディタ

アウトラインエディタ・アイディアプロセッサのようなものを考えた。 対象ファイルとその関連性を一覧する。 ファイル間の関連性だけをxmlで記述する。 対象ファイルの編集はそれぞれのコンポーネントに任せる。 基本的にはファイラーの上にファイラーを重ね…

Globalな変数

Globalな変数はどこからでも参照できるため、不変性が破壊される原因になりがちである。この問題を回避するにはGlobalな変数自体を不変オブジェクト化しておけばよい。さて、javaのGlobalな変数とはclass staticな変数のことなのだろうか、それともclass自体…

N次不変オブジェクト

即値・nullは*次不変である。 不変でないオブジェクトは0次不変である。 N次不変オブジェクトの持つフィールドがそれぞれ次不変オブジェクトだとしたとき、が成り立つ。

オブジェクトの不変性

即値は不変である。 フィールド全てにfinal修飾が付いたクラスのインスタンスは不変である。

変数の不変性

final修飾の付いた変数は不変である。

オブジェクトの局所性

オブジェクトの局所性についても定義しておく。 def 即値は局所的である。 def 局所的なフィールドしか持たないオブジェクトは局所的である。 ただし、不変オブジェクトは局所的であると見なしてよい。

オブジェクトの副作用

def 主作用は副作用ではない。 def 局所オブジェクトの操作は副作用ではない。*1 def 非局所オブジェクトの操作のうち、更新を伴わないものは副作用ではない。 def 以上に該当しない作用はすべて副作用である。 要点:主作用だけが非局所的であればよい。最…

即値の副作用

def 即値の参照は副作用を持たない。 def 即値の代入の返り値は副作用である。

副作用を考える

当然のことながら副作用を定義するためには主作用を定義しなくてはならない。しかし、主作用が何であるかが自明だとは限らないため、操作を定義する際に別途明記する必要がある。

Object#equals()の作法

Object#equals()はオブジェクト間の等価性を定義するためのメソッドである。そのため、不適切な定義を行えば、java.util.collectionなど、様々なフレームワークが破綻する。そのため、あらゆるフレームワークに対応するような定義について考える。 Object#eq…

長文風味

適当なコードを書くだけで長文更新になる。小説の評はまじめにボケたくなるから難しい。

変数の不変・オブジェクトの不変

Imutable.java public class Imutable { final public String str; public Imutable(String str){ super(); this.str = str; } public void main(String[] args){ Imutable im = new Imutable("Object1"); im = new Imutable("Object2"); } } 上のImutable.s…

委譲・継承

Inheritance.java public class Inheritance extends SuperClass implements Interface { public void method(){ super.doSomething(); } } Delegation.java public class Inheritance implements Interface { SuperClass superClass; public void method(){…

Wrap.java public class Wrap { public Object obj; public Object getObj(){ return this.obj; } public void setObj(Object obj){ this.obj = obj; } } このWrap.javaにおいてはgetObjとobjへの参照、setObjとobjへの代入が等価である。Fieldへの直接参照…

天才でない僕らのために

NHK-BS1の地球ウォーカー 「僕らはほとんどロックスター!〜ニューヨーク」を見た。過去の放送一覧はhttp://www.nhk.or.jp/globe-walkers/blist/list.html トリビュート・バンド*1とは特定の有名なバンドの演奏・スタイルを忠実に再現することを呼び物とする…