成瀬です。

Yukihiro Matsumoto wrote:
> |ある程度再利用を考えたプログラムではそもそも、可能かも分からない特定のエ
> |ンコーディングへの変換を可能な限り避けてエンコーディング独立なコードを書
> |くべきです。
> 
> 「書くべき」というのは一つの見識であるとは思います。ひとつの
> アプリケーションが取り扱うべき文字コードがひとつしかない時に
> はその方が良いでしょう。

文字コードが一つしかないときというよりは、
どんな文字コードでデータがくるかわからないが、
別の文字コードのデータとは混ぜないときでしょうね。
# 混ぜないだけで、同じプロセスで異なる encoding がくる場合はあり得る

そのような場合は encoding には触れず、変換もせず、
普通の文字列操作だけを行っていれば問題はないはずです。

このような場合には default_internal はない方がありがたい。
まぁ、これってフィルタとかその類の話ですね。

> |考えてみると、default_internalが嬉しいケースというのは、やはり短いスクリ
> |プトを書く場合でしょう。ところが、そのようなケースでは外界のエンコーディ
> |ング(default_external)をそのまま内部で処理すればよいのであって、つまり
> |default_internalはnil(無変換)で良いのです。
> 
> |してみると、「完璧な振る舞いを定義できないならば不要」というのは1つの答
> |えではないでしょうか。
> 
> それも否定はしません。フィルタのようなプログラムならほとんど
> の場合、default_intenalのようなものが必要になることはないで
> しょう。
> 
> が、たとえばGUIツールキットを使ったデスクトップアプリケーショ
> ンを書こうと思ったら、なんにしても内部エンコーディングのよう
> なものが欲しくなるのではないでしょうか。

思うに、このようなケースにおいて、default_internal によって 1 つの宣言以上の
メリットが出せるのかが重要な点なのでしょう。

-- 
NARUSE, Yui  <naruse / airemix.jp>