2007年05月06日 01:45 [Edit]
perl - 勝手に添削 - HTTP::MobileUserID::Japanese
use base qw/Class::Data::Accessor/;
__PACKAGE__->mk_classaccessors(qw/agent user_id/);
# ...
sub is_support { shift->{support} }
sub is_not_support { !shift->{support} }
sub is_exists { shift->{user_id} }
sub is_not_exists { !shift->{user_id} }
コードそのものというより、メソッド名がまずい。is_support()では英語になっていない。日本専用モジュールではあるけど、CPANとかにうpするとしたら、これだとキョーレツに違和感がある。正しくはis_supported()またはis抜きのsupported()。
is_exists()の方は、has_user_id()が望ましいだろう。
ついでに、$self->{support}も$self->{supported}に直し、__PACKAGE__->mk_classaccessors()の引数にsupportedも追加すれば、is_support()相当のメソッドは定義不要になる。
それから、Accessor(正確にはMutator)がすでに存在する場合は、初期化ルーチンでも$self->{key} = valueとするより$self->key(value)の方が後の事を考えると吉。
全部まとめると、以下のとおりか。
package HTTP::MobileUserID::Japanese;
use strict;
use warnings;
use base qw/Class::Data::Accessor/;
__PACKAGE__->mk_classaccessors(qw/agent user_id supported/);
our $VERSION = '0.01_01'; # or 0.02
sub new {
my $proto = shift;
my $self = bless {}, ref $proto || $proto;
$self->init(@_);
}
sub unsupported { !shift->supported }
sub no_user_id { !shift->user_id }
*id = *has_user_id = \&user_id;
sub init {
my $self = shift;
$self->agent(shift); # Agentはここで設定
if ( $agent->is_docomo ) {
# $agent->html_version は存在しなければ 0
$self->supported(0) if $agent->html_version <= 2.0;
$self->user_id(
$self->supported ? $agent->serial_number : undef );
}
elsif ( $agent->is_softbank ) {
$self->supported(0) if $agent->is_type_c;
$self->user_id(
$agent->get_header('x-jphone-uid') ? $user_id : undef );
}
elsif ( $agent->is_ezweb ) {
$self->user_id( $agent->get_header('x-up-subno') );
}
else {
$self->supported(0);
}
$self;
}
1;
Dan the Perl Monger
Posted by dankogai at 01:45│Comments(1)
この記事へのソーシャルブックマーク
この記事へのトラックバック
速報!坂井泉水の真相は自殺か?他殺か?大黒摩季中傷批判相次ぐ!
坂井泉水に囁かれる“不慮の死”の真相
2007年06月03日10時00分?
「ZARD」の坂井泉水(享年40)は亡くなる直前、どんな状態だったのか。病気療養中の転落死という説が有力だが、そ...
坂井泉水 AV 動画 無料 【坂井泉水 AV 動画 無料】at 2007年06月03日 20:17
この記事へのコメント
is_suppoted → is_supported
ですね。
ですね。
Posted by imsut at 2007年05月06日 17:18


