kazu22002の技術覚書

PHPer, Golang, AWS エンジニアの日々

コードをきれいにする努力

自分のソースが汚いことがものすごく理解できるようになりました。

意識的に共通化を行うようにしていたが、見やすいソースや理解しやすいソースはもう少し別の観点を意識する必要があったことを教えてもらっています。

世の中で言われていることそのままだが、こんなことを最近知ったのかと思っています。

ガード節を意識する

else文を使わずにソースコードを書く努力する。

return で必要な処理がおわったら返却することで、return以降を意識しなくてもいい。

またネストが浅くなるため読みやすい。

よく書いていた感じのPHPソース

function calc( a , b, type){
    ret = 0;
    if( is_numeric( a ) && is_numeric( b ) ){
        if( type == 1 ) {
            ret = a + b;
        } else if ( type == 2 ){
            ret = a - b;
        }
    }
    return ret;
}

ガード節を意識したPHPソース

function calc( a, b, type ){
    if( ! is_numeric( a ) || ! is_numeric( b ) ) return 0;
    if( type == 1 ) return a + b;
    if( type == 2 ) return a - b; 
    return 0;
}

値チェックをよく関数の先頭に書くようになり、ネストが浅くなったのが実感できています。

if文が長くなるのを防げるので、インデントで閉じカッコまで探す手間が減ったのもありがたいです。

表示でもっと関数を利用

どうもちょっとした処理であればそのまま書いていたが、見た目的に関数化して値を変換したほうが見やすいことを理解してきました。

str = "";
if ( a == 1 ) {
    str = "aです。";
} else if ( a == 2 ) {
   str = "bです。";
} 
echo str;

calendar_date_str = "";
if( ! empty( calendar_date ) ) calendar_date_str = date( 'Y年m月d日', strtotime( calendar_date ) ); 
echo $calendar_date;
echo dispString( a );
echo dispCalendar( calendar_date );

function dispString( a ){
    if( a == 1 ) return "aです。";
    if( a == 2 ) return "bです。";
    return "";
} 
function dispCalendar( calendar_date ){
    if( empty( calendar_date ) ) return "";
    
    return date( 'Y年m月d日', strtotime( calendar_date ) );
}

単純に表示部分がまとまっているため、見やすいかなと思っています。

技術的な知識っぽくないけど、意識するといい

過去にリーダブルコードを一回読んだときはさっぱりでしたけど、コードを見やすくしたい。と意識してから読むと段違いでいい本だと実感しました。

みんながいい本って言っているのは、いいものが多いけど、問題を意識して読む必要がありますね。

そろそろデザインパターンが理解できるきっかけがほしい・・・。。。

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)