輪郭指向

描主宇田川浩行K#F85E
上描き希哲13年(2019年)
08月18日 22:01
下描き希哲9年(2015年)
02月16日 20:51
利承
ライセンス
希哲館普通利承(KULクール

DO: Delineation-oriented

描出模定を中心としつつ,コードに落していく。文書化も兼ねられる。

簡単に言えば「適当な要求は適当に書けて,厳密な要求は厳密に書ける」ようにする設計指針。客体指向はその選択肢を拡げる手段。

この描出は「素描」です。

広告

一覧

=}{*}

foo.bld()客体(オブジェクト)構築に徹することで,foo() はより広範で便宜的な機能を提供しやすくなる。つまり,foo() で客体の新規生成以上の機能を提供し,new foo() で新規生成に限定,さらにオーバーヘッドを避けたければ new foo.bld() と書く,と三段階の使い分けが出来る。「適当なことは適当に書け,厳密なことは厳密に書ける」という輪郭指向に即している。

=}{*}

こういうのを私は「輪郭指向」(OLO: outline-orientation)と呼んでいる。これも考え方としては輪郭法応用の一つ。

=}{*}

これは函数の設計などでも普通に使える考え方なのだが,「小さな仕事をまとめるのもまた小さな仕事である」ことに気付くと,例えば GNU 系ツールみたいに,Unix 哲学風の小物ツールの能力不足を補うために一つの駒手(コマンド)の応付(オプション)を増やしていく,ような過ちを犯さなくても済むのではないかと感じた。

=}{*}

具体例を挙げるなら,さっき,「引数の重複を削除する」ために printfsortuniq を使った交度(コード)を一つの駒手(コマンド) _kn unq としてまとめた。任意の引数を与えると揃え(ソート)をして重複を削除した出力を返す。これは明らかに美しい。

=}{*}

ここでいう「小ささ」というのを凝集性のことだとすれば,例えば小さな仕事をする論組(プログラム)同士を一つの目的のためにまとめるだけの仕事をする論組も「小さい」と言っていい。要するに,マクロ的なものだ。基本的にはこれで「Unix 哲学」は救われる。

=}{*}

Unix 哲学(の一部)って,「小さな論組(プログラム)の組み合せで目的を実現する」みたいなことに捉えられがちだと思うのだが,これにはもちろん欠点があって,周知の通り設計哲学としてはすでに破綻している。要は,細かい駒手(コマンド)をいちいちパイプで繋いで……ってあまり現実的ではない。そこはもうちょっと「立体的」に捉えていいと思う。

=}{*}

この辺は,KEY(Keep Enough for You,十分を保て)原則と組み合わせて論じると面白いことになるだろうな,という直感がある。

=}{*}

輪郭」の特殊形が主体であったり客体であったりする……と考えると,輪郭法の役割は交度(コード)上というより UML のような模定モデリング)工程にあるのかもしれない。

出力論組プログラム虎哲*イチ 1.01
制作・運営:希哲社
© K1-13 (2007-2019) KiTetuSha