パンうめぇ

園児ニアの日記帳

可読性をあげる書き方~同じ処理をまとめて記述する~

昨日リーダブルコードを読んでいて「なるほどな~」って思ったことをメモ.

例えば以下のような足し算,引き算,掛け算,割り算をするPerlスクリプトがあったとします.(Perl絶賛勉強中です)

#!/usr/bin/env perl
use strict;
use warnings;
use utf8;

# 変数宣言
my $a = 10;
my $b = 3;

# 足し算
sub add{
  my ($left,$right) = @_;
  return $left + $right;
}
my $add_result = add($a,$b);
print "$a + $b = $add_result\n";

# 引き算
sub min {
  my ($left,$right) = @_;
  return $left - $right;
}
my $min_result = min($a,$b);
print "$a - $b = $min_result\n";

# 掛け算
sub mul {
  my ($left,$right) = @_;
  return $left * $right;
}
my $mul_result = mul($a,$b);
print "$a * $b = $mul_result\n";

# 割り算
sub div {
  my ($left,$right) = @_;
  return $left / $right;
}
my $div_result  = div($a,$b);
print "$a / $b = $div_result\n";

足し算処理を終わらせたあと,また引き算処理を反復する必要があります.

これだと脳内キャッシュを無駄に使ってしまうような気がします.なので同じような処理をまとめて記述すると

#!/usr/bin/env perl
use strict;
use warnings;
use utf8;

# subルーチン宣言
sub add{
  my ($left,$right) = @_;
  return $left + $right;
}

sub min {
  my ($left,$right) = @_;
  return $left - $right;
}

sub mul {
  my ($left,$right) = @_;
  return $left * $right;
}

sub div {
  my ($left,$right) = @_;
  return $left / $right;
}

# 変数宣言
my $a = 10;
my $b = 3;

# subルーチンに値を代入
my $add_result = add($a,$b);
my $min_result = min($a,$b);
my $mul_result = mul($a,$b);
my $div_result = div($a,$b);

# 答えを出力
print "$a + $b = $add_result\n";
print "$a - $b = $min_result\n";
print "$a * $b = $mul_result\n";
print "$a / $b = $div_result\n";

となり,多少見やすくなったと思います.

まとめて書いたほうが,無駄に頭を使わずにすんなり理解できる気がします.

この処理自体は簡単なので違いが顕著には出ませんが,もっと複雑かつ大規模なプログラムになってくると読みやすさが全然違ってくると思います.