Mail: Pass:
前月  2008年5月  翌月
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

links

 びびすけさんのページ
 体重・走距離分析
 月間・靴・コース走距離
 タイムトライアル分析
 速度・心拍数分析
 自転車・月間・コース走距離
 オセロ勝敗・レート分析
 ViVi web site

新着日記

 はじめての AIR プログラム(汎用…
 モカ将棋 0.005 リリース
 座標がずれる
 壁にぶちあたった
 Laramie V1 に勝ち越し!
 vs Laramie V1 10番勝負
 モカ将棋10番勝負 (2)
 開発マシンが死んだ!?
 vs Lesserkai 1.3.2 10番勝負
 TJshogi にも初勝利
 Lesserkai 1.3.2 (1秒)に初勝利!
 将棋大会 地区予選
 プレイアウト結果の信頼性
 vs ランダム将棋
 moca将棋
 ViVi 2.05

新着コメント

 無題/ひらた
 直った/びびすけ
 vs Laramie V2/びびすけ
 vs LaramieV1 10…/びびすけ
 vs TJshogi 0.03…/びびすけ
 vs ランダム将…/びびすけ
 vs TJshogi 0.03/びびすけ
 羽生×山崎/びびすけ
 ボナ×渡辺竜王/びびすけ
 羽生×山崎 戦/びびすけ

トラックバック

トラックバックはありません。

カテゴリ一覧

 基本データ
 テニス
 ジョギング
 ViVi
 自転車
 Web
 RunRunDietOnline
 PostgreSQL
 ビルドアップ走
 ランニング

4件の日記があります。

よいクラス設計 (3) (2008/05/28 07:04) 0 comment

朝早く目が覚めたので、ボーっとした頭で、何が良いクラス設計なのか考えてみた。

[1] 理解が容易であること
[2] 依存性が少ないこと
[3] 冗長性が無いこと
[4] 機能追加・削除・変更コストが少ないこと
[5] テストが容易であること

なにはなくても理解が容易でなくてはいけない。巨大で複雑怪奇なものは理解不能で、修正を行ったときにバグを埋め込む確率が高まる。
そのためには小さく、単純にすることだ。
とは言っても、要求される機能が多ければ、全体の行数は多くならざるを得ない。で、そんなときは分割統治。

クラスの宣言・実装が大きくなりすぎるとそれだけで理解が困難になる。
できるだけ論理的まとまりをクラスとして切り出し、それに処理を委譲したり、継承を使うとよい。
他への依存がないクラスを定義できれば、ライブラリとして再利用することもできるようになる。
同じような話だが、標準ライブラリ、boost、MFCなどのライブラリで使用できるものがあれば、同等機能を実装せず極力それらを使用するようにする。

一説によればクラス実装は1000行程度に抑えた方がいいそうだ。
これはコメント、空行を除いた行数だと思う。簡潔にして充分なコメントを書いておいた方がよいことは言うまでも無い。



九路盤の感覚 (2008/05/28 10:12) 0 comment

19路盤だと、3筋と4筋に這うのは地と勢力のバランスがとんとんだといわれている
しかし九路盤だと、模様を張っても添付画像くらいにしかならず、黒32目に対して、白25目しかない。
これではコミが6.5あっても黒の半目勝ちだ(25 + 6.5 = 31.5)
ただし黒は13手をかけているが、白は11手しかかけていない。でも右下の黒は不要だから、ほぼ計算はあっている

九路盤ではなく10路盤で同じような図を作ってみると、黒も白も盤面36目となる。
どうも九路盤だと盤面が小さいので模様の価値が低いようだ

参照元 (2008/05/28 15:01) 2 comment

ここ1年間の 本サイト(http://vivi.dyndns.org/)の参照元を調べたら、グラフの通りだった。

URL直打ち or ブックマークから来るのが 約68%
google/yahoo から検索でくるのは 約24%

リピータが多く、新規ユーザは少ないということか?
標準的な割合はどの程度なんだろう?

よいクラス設計 (4) (2008/05/28 19:05) 0 comment

よいクラス設計 (3) でクラスを論理的単位で分割し、ひとつのクラスのサイズを抑えると良い
と書いたが、クラスの分割方法が悪いと、理解しづらいクラスが増えて、全体の理解が困難になる。

自分にとって新しい分野の勉強を始めたとき、教科書・ドキュメント・マニュアルに書いてある説明文中の言葉が理解できず、
それを調べるとまたわからない言葉が出てきて、いつまでたっても理解できないという経験はないだろうか?
これは概念の説明が他の概念に依存しているために起こる現象だ。概念Aがそこで閉じていれば概念Aを理解するのはたやすい。
クラス群の理解もこれと同じようなところがある。

クラスAが、クラスBの派生クラスである、クラスBのメソッドやクラスBで定義される何かを参照しているとき、
クラスAはクラスBに依存しているという。

クラスAがクラスB, C , ... Z に依存していると、それらを全部理解しないとクラスAが理解できない。
したがって、依存性をなるべくする少なくすることが肝要である。

また、クラスAがクラスBに、クラスBがクラスAに直接的または間接的に依存していることを循環依存という。
循環依存があると、クラスAを理解するにはクラスBの理解が必要で、クラスBの理解にはクラスAの理解が必要・・・
とどこまでいっても終わりが無い。両方いっしょに理解するしかないのだが、これではクラスを分割した意味がない。
したがって、巡回依存性をなくすことも理解を容易にするために大変重要である。

4件の日記があります。

パスワード忘れ
今週のランキング
計算タマちゃん
FAQ
ヘルプ
about rrdOnline