今日は朝からひどい雨。
電車も遅れるし、ロクなこと無いね。
雨よ、頼むから俺が寝てる間にだけ降っててくれ(←無茶言うな)。
--- 休み続き ---
なんか最近中途半端な休日が続いてるな。
先週は木曜休み。金土と2日仕事して1日休み。
今日仕事して、また明日は1日休み。
やっぱ休みは2日くらい続いてないと休んだ気がしないよね。
なんで明日休みなのかは、全くの不明です。
幻想三国志の発売日前日と一緒なのは、もちろん全くの偶然です(笑)。
ライブにも行こうと思ってるので、ちょうどいいと思って。
今月は時間的にも足りてるしね。
--- 引き続き… ---
土曜日に引き続き、なんかうるさい奴が騒いでいる。
そういう話し合いはどっか別の会議室でしてくれよ。
--- 無意味 ---
昨日のマラソン、渋井陽子が日本最高記録をマークした。
多数のペースメーカーを引き連れて走る様は、それはもう虚しいもんだった。
その記録にどれだけの意味があるの?
アテネのマラソンを見てるだけに、余計にそう感じるね。
世界最高記録を持ってたラドクリフが棄権、
それより5分以上も持ちタイムの劣る野口みずきが優勝したのを見てなかったのか。
--- 今週の仕事 ---
今週は、引き継ぎのための資料整理。
共通クラスのJavadocと、僕が作ったコンテンツへのコメント付加。
結構巨大なコンテンツだったのと、製作当初時間的余裕が無かった事が重なって
相当に汚ない作りになってしまっている。
本当ならこれを機にもう少し綺麗な作りにしたいところだけど、
今になってリファクタリング(とテスト)をしてるだけの時間も無いので断念。
--- 初めが肝心 ---
やっぱり、質の高いソースというのは
製作初期段階からきちんとした構想を持って作らないと不可能だ。
時間に追われていたのでは、とてもじゃないが綺麗なプログラムは作れない。
そして、後になってそれを綺麗にしようと思っても無理。
一から作り直すしか方法は無いのだ。
プロジェクト全体を考えれば、多少の余裕を持って初期製作に望んだ方が
その後のテスト/デバッグ/保守の面から言っても
明らかに良いのだけれど、それを理解できるような依頼主はほぼ存在しない。
今回の場合も、突然製作が決まったと思ったら
与えられた期間はごく僅か。
こんな状況で綺麗なプログラムを書けったってそれは無茶な相談なのだ。
個人的に言っても、そういうプログラムを書こうとすると
通常の1.5倍程度の工数が必要になるからね。
--- リファクタリング基準 ---
ある程度プログラムを組んでいって、
それなりの規模になったら一度プログラムを見直してみる。
コメントの記述もそうだけど、それより重要なのがリファクタリング。
ここではソースのメトリクス測定を元に作業を進めます。
Eclipse Metrics Plugin というEclipseプラグインがお薦め。
ただ、Eclipse3用はまだうまく動かない感じなので
Eclipse2を使った方が無難かも。僕もリファクタリングのときはEclipse2を使ってます。
--- メトリクス測定 ---
いくつか測定基準はあるので順に紹介します。
メソッドのステートメント数
ステートメント数というのは行数と似ていますが、
空白行やコメントなどはカウントされません。
そして、一つの文で改行をいくつ入れようとステートメント数は変化しません。
そういう意味では正確な「ステップ数」と言えるでしょう。
一貫したコーディングスタイルを取っていれば、ほぼ行数と比例するはずです。
個人的には、これが50を超えるようなメソッドは分割した方がいいと思います。
メソッドのパラメータ数
まぁ、そのものずばりです。
個人的に、6を超えるメソッドはメソッド定義を変更する事をお薦めします。
簡単な手法としては、いくつかのパラメータを含んだクラスを生成して
それをメソッドに渡す方法があります。
メソッド中の入れ子(ネスト)の深さ
インデントが深くなると、プログラムは非常に読みにくくなります。
とはいっても、前述したメソッドのステートメント数の制限を守っていれば
ほとんどこれを意識する必要は無いのかもしれません。
外部パッケージへの依存度
クラス先頭で宣言されているimport文の総数に相当します。
が、これを低くするのは中々難しいかもしれません。
あまりこだわり過ぎる必要は無いと思います。
あるクラス中のメソッドの複雑さの総和
一つのクラス中にメソッドをたくさん置いているとこの値が高くなります。
こういうときは、いくつかのメソッドを他クラスに分散させます。
マッケーブの循環的複雑度
なんか難しい言葉ですが、簡単に言えばあるメソッドの複雑度を表したものです。
この値が高くなると、テストや保守が難しいとされています。
メソッド単位の値なので、
メソッドのステートメント数を制限していれば高い値にはなり得ません。
--- メトリクス総括 ---
以上のことを踏まえれば、リファクタリング内容はほぼ一点に絞られます。
それは「単一メソッドの行数を制限する」事です。
これを実現するためには、色々なリファクタリング手法が必要になることに気が付くはずです。
正直、これを行うと総クラス数はかなり増えます。
しかし、総合的に考えればクラス数が増加する事は決してデメリットとは言えないのです。
4000行のクラスを一つ管理するよりも、1000行のクラスを4つ管理する方が
長い目で見れば管理しやすいという事です。
--- コーナー違い ---
…こんな話はプログラムのコーナーでやれって声が聞こえてきそうですが(笑)。
つい書きたくなったので日記に書いてしまいました。
こうやって文章にするって事は自分の開発手法を確認するって意味でも
必要なことなのだ。
ってなわけで。
明日は休みだし、今日は飲むかぁ!
…あ、酒が切れてる。(笑)