2008年2月11日

[ruby-list:44603] Re: アーティストのニュースを自動取得

From: sora <sora.hs@xxxxx>
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/

投稿者 xml-rpc : 2008年2月11日 01:26
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/69661
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。