- ゆるふわ
- perldoc perlstyle
- これが絶対ではない。常によい方向へ。
- 綺麗なコード=Larry Wallが書いたコード, 多くの人が書くコード
- Larryの考えは変わる。みんなも変わる。なので綺麗なコードも変わる。
use strict;
use warnings;
sub name {
my ($self) = @_;
}
名前が長くなってるのがそもそもイケてないのでそういう部分を見直す。
sub boku_no_namae_ha_hisaichi5518_desu {
my ($self) = @_;
$self->{boku_no_namae_ha_hisaichi5518_desu};
}
if ($is_stuff) {
...;
}
sub is_kyoto { ... }
if ($is_stuff) {
...;
}
else {
...;
}
# ダメな例
if () {
}
else {
}
if ($is_stuff) {
...;
}
else {
...;
}
sub name {
...;
}
$user->name;
sub is_5518 { is $_[0], 5518 }
sub kamakura { '鎌倉' }
my $num = 1 + 2;
$num++;
sub hoge {
my ($self) = @_;
my $hoge = ...;
my $piyo = ...;
my $fuga = ...;
if ($hoge && $piyo) {
...;
}
elsif ($fuga) {
...;
}
else {
...;
}
return $row;
}
sub hoge {
my ($self, $name) = @_;
...;
}
if (
$hogehogehogehoge &&
$fugafugafugafuga &&
$piyopiyopiyopiyo
) {
...;
}
my $is_hoge = ;
my $user = $name eq 'fugafuga' ? 'fugafuga!' :
$name eq 'hogehoge' ? 'hogehoge!' : 'hogefuga!';
$user_rs->find_id_and_name_and_hoge_and_piyo($id, $name, $hoge, $piyo)
and $user_rs->hogehoge;
if (1) {
if (0) {
...;
}
else {
...;
}
}
else {
...;
}
open my $fh, '<', $file
or die qq/Can't open file "$file" : $!/;
return $hogehoge if defined $hogehoge;
# ダメな例
die "Can't open $foo: $!" unless open my $fh,'<', $file;
なにがメインの処理か考えて書くと良い感じかもしれない。
場合によるなぁ。shiftとか略す。
# 引数?$_を使わない感じ
for my $user (@users) {
...;
}
3個くらいまでやっちゃう時あるけど。
# まだ大丈夫
print $array[int rand @num];
# \(^o^)/
print reverse sort num values %hash;
ラベル使った方がわかりやすいらしいけど、使ってる人たまにしか見ない。
for my $user (@uesrs) {
next if $user->is_stuff;
if ($user->is_5518) {
...;
last;
}
}
大文字は使わない。またアンスコだけとかダメ。
my $var_names_like_this;
sub method_name {
...;
}
package App::Hoge;
use constant NAME => 'hisaichi5518';
sub _private_method {
...;
}
http://d.hatena.ne.jp/perlcodesample/20080414/1208186274
my $text = <<'...';
ぼくのあだ名は、久一です。
被災地ではありません。
ちゃんと覚えてね〜!
...
my $user_name = 'hisaichi5518';
my $user_id = 12345;
autodieがあるけど、ウェブアプリでは使ってるのあまり見ない。
open my $fh, '<', $file
or die qq/Can't open file "$file" : $!/;
やたらめったら使わない。
# ダメな例
print Dumper +{
piyo => +{
hisaichi => 'hoge',
},
hoge => +{},
pipi => +[],
};
以下の場合は、+が必要。
use Data::Dumper;
warn Dumper +Plack::Response->new(200);ながくなるので、べつにかきたい。と書いて約半年経っております。