裏表(Phinloda のもう裏だか表だか分からないページ)

コンピュータ・プログラミング系の話がメインのそれなりにごちゃごちゃしたネタばかり出てくるサイトです。多分。
<< Jugem もヘン? | Top | VAIO Z で無線LAN がどうしても繋がらなかった >>
オプションの伝え方

Blog をオートパイロットして必要箇所だけ抜き出すプログラムの話。 このプログラムは Java で書いてあるので、以後、そういう前提で進める。

構造を簡単に説明すると、まず GetBlog というクラスがある。 それぞれの blog に対応した機能は、これを継承して実装する。

GetBlog には各オプションに対応した setter、getter が用意されていて、 オプションを解釈したらそれが呼び出される。 例えば、新規記事だけファイルを作成するという場合に、 -new というオプションで起動すれば、 GetBlog.isNewOnly() が true を返すようになる。

さて、GetBlog は、各 blog の毎月のアーカイブを get して、 その内容を parse しながら分割する。 そのためのクラスは SplitMessages というのだが、 GetBlog 内で SplitMessage のインスタンスを作り、 メソッドを呼び出す、という流れになっている。 ということは、-new で指定されたオプションを渡さなければならない。 実際、各月のアーカイブを get して parse する処理は、 こんな感じになっている。

    protected boolean getMonthlyPage(int year, int month) {
        GetMonthlyPage gmp = new GetMonthlyPage();
				
        gmp.setBaseUriString(getBaseUriString());
        gmp.setDirName(getTmpDirectory());
        if (gmp.getPage(year, month) == false)
            return false;
		
        String fileName = gmp.getSaveFileName(year, month);
        SplitMessages sm = new SplitMessages();
		
        sm.setBaseUri(getBaseUriString());
        sm.setTargetFileName(fileName);
        sm.setDirName(getResultDirectory());
        sm.setTmpDirName(getTmpDirectory());
        sm.setEncodeString("euc_jp");
        sm.setCallback(getCallback());
        sm.setNewOnly(isNewOnly());
		
        return sm.split();	
    }

どこがイヤかというと、パラメータの引き継ぎ方で、

        sm.setNewOnly(isNewOnly());

こんな感じの処理がぞろぞろ出てくるのがイヤ。 修正が入って何か引き継ぐ情報が増える毎に1行ずつ増えることになる。 こういう場合はオプションを伝えるために、 オプションのクラスを用意しておいて、それを引き渡せばいいのだ。

とか書いているうちに4時になりそうなので(それで?)、 ここで一旦書き込む。

| リファクタリング | 03:53 | comments(5) | trackbacks(0)
スポンサーサイト
| - | 03:53 | - | -
コメント
クラス名は名詞でメソッドは動詞にするというお約束があった気のせいがするのでGetBlogというクラス名はいまいちな感じですがこだわりません。
| えむけい | 2004/09/27 5:39 PM |
ああっ、そりゃそうだ。ということで、ポチッとな…でクラス名を変更できるのが Eclipse の楽な所。

ところで、クラス名やメソッドは英語にするというお約束はありましたっけ?
| phinloda | 2004/09/28 2:39 AM |
主語.述語(動詞)+目的語 または 主語.述語(動詞)+補語
例1)Phinloda.isHere()
例2)Phinloda.getMail()
という順に記述すると英文法的に自然になる、という意味から英語にするのが正しいのではないかと思います。
(もちろん、この順で正しくなる言語は全てOKだとは思いますが)
| kinta | 2004/09/29 10:18 PM |
というかハンガリアンで書こうとする所でダメぽですか、日本語は…。
「フィンローダ.ですココ」だと訳が分からないというか、大文字と小文字が存在する言語でないと。
| phinloda | 2004/09/30 6:29 PM |
あ、あともう一点。
クラス名を日本語にしてしまうと、publicなクラス名はそのままファイル名(クラス名.java)にしなくてはならないという言語上の制限があります。
で、コンパイル時にソースの内容は一旦UNICODEに変換されて翻訳されるのですが、古いJDKではファイル名は変換されないので、エラーとなる……という困った事象が起きたはずです。
今、試しにWindowsXP+JDK1.4.2で確認してみたのですが、うまくコンパイルも実行も出来ますね……
あ、でも、jarで固めて日本語コードの違う例えばSolaris+EUCの環境上で動かしてみたりしたらどうなるのでしょうね。
なんかヤバそうな気がします。
| kinta | 2004/10/02 10:21 AM |
コメントする









この記事のトラックバックURL
http://phinloda.jugem.cc/trackback/122
トラックバック
Powered by "JUGEM"
▲このページの先頭へ
CALENDAR
S M T W T F S
      1
2345678
9101112131415
16171819202122
23242526272829
30      
<< June 2019 >>
NEW ENTRIES
CATEGORIES
ARCHIVES
NEW COMMENTS
NEW TRACKBACKS
LINKS
PROFILE