ActionScript2のライブラリが少ないなかせっかく見つけたライブラリのソースコードがいまいちなので結局自分で書くことにした。しかも個人じゃなくてどこぞの会社のライブラリっぽいんだけどなー。。。100人いれば100通りの実装があり、自分の書き方がもっとも正しいとは思わないのだけど、そのまま使うに値しない、なんかいまいちだなーと思っているのか以下の用な点。
データ(モデル)が存在しない
オブジェクト指向なんだから、ある程度オブジェクトはデータでないといけない。もちろんMVCで云うところのController的なクラスも必要なこともありこのあたりは判断が難しい。
たとえば、MusicFileというデータに当たるクラスがあったときにMusicFile.Playで再生を行うのか、MediaPlayerというコントローラに当たるクラスを持ってきてMediaPlayer.Play(MusicFile)とするのかみたいな。
しかし、今みてるライブラリはどっちでもなく全部がコントローラ的なクラス名がつけられてる。PlayingFileクラスみたいな。わかりにくいんだよ、どこでデータを格納してるのかが。
とういか、記憶をたどってみてもingなんてクラス名につけることなんてあんまり無い気がするのだけど・・・
変数名が気に入らない
これは、好みの問題もある。
配列の変数にわざわざArrayとかつけるの好きじゃない。自分の場合は単に複数形にする。
あと、currentという接頭頭をつける変数もちゃんと取捨選択したほうがいい。実行中はみんなcurrentなんだから。。。
関数の結合度が密
モジュールやクラスももちろんのこと関数も祖であることが望ましい。最小限の役割を果たすだけのものがよい。最小限の役割の関数を結合して別の機能を組み立てていくべき。
こういう祖で簡単な関数をつくる場合、できるだけクラスのメンバ変数を参照させたくない。たとえると下のaのようなコードがいいのだが、このライブラリはbのコードが多いのだよ。クラスメンバの責任がわかりにくい、なんとかして欲しい。
3-a)
class Math { int add(int a, int b) { return a+b; } }
3-b)
class Math { int a; int b; int add() { return this.a + this.b; } }
まぁ、ActionScriptやるような人はWeb系やデザイン系の人であんまりオブジェクト指向になじみがないのかもしれないけど・・・