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

コンピュータ・プログラミング系の話がメインのそれなりにごちゃごちゃしたネタばかり出てくるサイトです。多分。
オプションの伝え方

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)
 1/1PAGES 
Powered by "JUGEM"
▲このページの先頭へ
CALENDAR
S M T W T F S
  12345
6789101112
13141516171819
20212223242526
2728293031  
<< May 2018 >>
NEW ENTRIES
CATEGORIES
ARCHIVES
NEW COMMENTS
NEW TRACKBACKS
LINKS
PROFILE