Io スタイルガイド
http://en.wikibooks.org/wiki/Io_Programming/Io_Style_Guideの和訳です。
Io スタイルガイド
このページでは、良いIoコードを書くためのガイドラインを示しています。貴方の知識を寄稿してください。ただし、読者が参照しやすいよう、大項目はアルファベット順としてください。
値の代入
- 可能な限りsetterを使用せよ。直接代入するな。
- 属性を読み書きすることは、他の言語にもあるが、setSlotメソッドをオーバライドすることで代用することはできる。しかし、将来にわたりオーバライドすることがないことを保証できればその限りではないが、それ以外はsetterを使うべきである。バグを発見しやすくなる。
- setterは可読性に優れる。"setForeground(Color White)"と命じる方が、"fgPen = Color White"と命じるよりも、可読性(および将来に渡る保守性)が高い。
- 直接代入は有害であると認識せよ。
- 外部オブジェクトの状態はそれ自身に作用させよ。
- オブジェクトにやることを命ぜよ;普通、君よりそのオブジェクトの方が、そのやり方には詳しい。
- 外部オブジェクトが必要だと思われる状態変更を行うメソッドを持っていない場合、追加せよ。今追加する必要がなくても、Ioは追加できるように出来ている。
初期化
- メソッドは3つ以下の引数とせよ。オブジェクトの初期化に必要なステートはsetterを使用せよ。
- Objectが扱うステートは自明とは限らない。initメソッドは以下のようにあるべきである:
- 独立性と試験性のために、依存性注入(DI:dependency injection)パターンを用いよ。
- 絶対に必要なリソースではない限り、取得すべきではない。ファイル、ウィンドウ、ネットワークソケット等。代わりに、引数として取得せよ。
- 注意:オブジェクトはドメインに特有の知識を持ち、自身に特化し、それ自身のみに特化している。それを保て。
- 例:データとして式とリテラルを持つ、表シートオブジェクトを考える。そのオブジェクトは、データファイルにどのように保存されるかの情報は持っていない。代わりに、impex(インポート/エクスポート用の短い)オブジェクトを用いてデータファイルの読み書きを適切に行ったり、クエリを発行してデータファイルを書き出したりする。この時、viewオブジェクトは特殊なエクスポートとなる:ファイルに書き出す代わりに画面に描画する。これにより、表の典型的な形式や、多値をとるチャートの類も扱うことができる。同様に、キーボードやマウスなどを接続すれば、特殊なインポータ・インタフェースとなる。故に、表シートをロードやセーブは、手作業によるデータ入力を自動化したタスクへと還元でき、データの正当性を確保しつつ、データの入力元や出力先を表シートオブジェクトから独立させることができる。
全体的にSmalltalkっぽい勝手なイメージです。Smalltalkerの方の感想を伺いたいところ。
メソッドの引数制限は、他のガイドでは明示されることは少ないように思う。
あ、これ、自分でもまだ理解できてない部分もありますから、参考程度になさって下さい。日本語として変だし、上の文章は読み込めば理解出来るとは限りません。