From: rubikitch@... Date: 2008-02-11T01:26:23+09:00 Subject: [ruby-list:44603] Re: アーティストのニュースを自動取得 From: sora Subject: [ruby-list:44602] アーティストのニュースを自動取得 Date: Mon, 11 Feb 2008 00:11:33 +0900 るびきちです。 > 一人で勉強するより、やっぱこういうの良いですね。 いいですね^^ プログラミングは自分で調べるのが基本ですが、もっといい書き方がないかと 疑問に思った場合は思い切って質問してみましょう。 もしかしたらかっこいい答えが返ってくるかもしれません。 > んで、調子こいて僕も便乗させてください。 どうぞ。ではさっそく。 > @engine = engine > if @engine == 0 then > @load = MNewsLoad.new('http://www.excite.co.jp/music/news/') > else > @load = MNewsLoad.new('http://music.yahoo.co.jp/music_news/') > end (snip) > s_engine = 0 # 0=excite, 1=yahoo > News.new(s_engine).start News#get_newsでも@engineの分岐が出ているため、MNewsLoad#print_newsを新設して News#initializeの引数で直接MNewsLoadオブジェクトを渡したほうがすっきりするでしょう。 0とか1を使うくらいならば:exciteとか:yahoo等のSymbol使いましょう。 そうすれば、「if @engine == :excite〜」などと書けますし。 > print Kconv.kconv(@track.name, Kconv::UTF8) + "\n" 「Kconv.kconv(@track.name, Kconv::UTF8)」は「@track.name.toutf8」と書けます。 この場合はputsを使ったほうがいいですね。 > puts @track.date_added.to_s putsやprintで非文字列を表示しようとすると内部でto_sを呼んでくれるので「.to_s」は不要です。 > if self.is_changed? then > break > end 僕なら「break if is_changed?」と書きます。メソッド呼び出しのselfは省略できます。 > def is_changed? > track = @itunes.get_current_track > if @track.artist != track.artist then > true > else > false > end > end 条件式は真偽値を返すので「@track.artist != @itunes.get_current_track.artist」 の一行で済みます。 また、メソッド名も「artist_is_changed?」にすると 「break if artist_is_changed?」と書けて英語っぽくなります(笑) -- rubikitch Blog: http://d.hatena.ne.jp/rubikitch/ Site: http://www.rubyist.net/~rubikitch/