見出し画像

阿修羅ワークス開発日誌 プログラミング学習で大切なこと その4 俺スタイルを持つこと

前回、コードが読めることとコードの意図が理解できることは別だ、という話をしました。
最近のプロジェクトは複雑化してきています。
複数のプログラム言語と複数のライブラリ、複数のツールといった具合に、思想(ルール)の異なるパズルを解くようなもので難易度が高くなっています。

初学者にとって覚えることが多すぎてかなり難儀なのではないでしょうか?
また、思想(ルール)が異なるということは、記法も異なります。
同じ言語なのに記法が異なると結構気持ち悪いものです。
さらにプロジェクトごとのレギュレシーション(決まりごと)なんかもあったりします。

そこで学習で大事なことは「俺スタイルを持つこと」です。
そもそも便利なライブラリも誰かの「俺スタイル」の一つです。あまりにも便利なのでみんなが使っているだけです。

まずは自分なりの「俺スタイル」を持つようにしましょう。
具体的には変数名に規則性を与えるとか、ステートメントごとの改行を多めにするとか、定番の処理を自作関数にまとめるといった具合です。

私の場合はコードの目滑りが酷いので、可読性を高める工夫をしています。
例えば、PHPの配列変数であれば、インデックス配列と連想配列の二種類がありますが、ひと目で分かるように以下のようなルールにしています。

インデックス配列に付ける名前
$A_array

連想配列に付ける名前
$H_array

「$A_」で始まる変数名はインデックス配列であることが分かります。
「$H_」で始まる変数名は連想配列であることが分かります。

これはPerlスクリプトの「@array(インデックス配列)」と「%array(連想配列)」からヒントを得ています。
元々Perlスクリプトから入ったので、Perlスクリプトの見てすぐに理解できる記法に感動すら覚えました。

他にはオブジェクト型には「$O_」を付けています。
foreach文で回す場合は「$O_users」であれば最後に複数形の「s」を付けておくと以下のように書けるので、変数を考える必要がなく便利です。
実際「data」のように複数形で表現しない単語でも「datas」とすることで階層下の変数の命名がしやすくなります。

foreach( $O_users => $O_user )
{
	//処理
}

あとブレス(中括弧)は上下の括弧の対応が分かりやすいように改行しています。

if( $a > 0 )
{
	//処理
}

多くのコーディングスタイルでは

if ($a > 0){
	//処理
}

のような感じで記述されていると思います。
コーディングスタイルの中で最も論争を巻き起こす点ですよね。
しかし、なぜ改行しないかというと「行数が少なくて済むから」という理由だったりします。

昔と比べて画面サイズも広く、HD容量も増えた昨今では行数については考える必要はなかったりします。
むしろ改行はどんどんして空白を作って可読性を上げたほうが良いと思っています。
自分で見て分かりやすいと思う形(コーディングスタイル)で書くことが重要です。

他には敢えて要約(説明)変数や要約関数を作る方法もあります。
例えば、不等式と不等号の向きが苦手でいつも大小を間違ってしまうとします。

以下は「$old_time」という変数にタイムスタンプが格納されていて、現在時間(タイムスタンプ)よりも小さい場合に処理を行う例です。

if( $old_time < time() )
{
	//処理
}

これを要約関数にすると以下になります。

function CHECK_OLD_FUTURE( $old_time , $time )
{
	if( $old_time < $time )
	{
		return true;
	}

	return false;
}

//現在時間よりも古ければ
if( CHECK_OLD_FUTURE( $old_time , time() ) )
{
	//古いログを削除
}

「if( $old_time < $time )」と書けばいいところをわざわざ関数でラッピングする理由は、常に同じパターンで比較し使用できる点です。
「CHECK_OLD_FUTURE」という関数名で「CHECK」は「true/false」の論理値を返す、「OLD_FUTURE」は第一引数に過去の値、第二引数に現在または未来の値を指定すると決めておけば、関数名から関数の使い方が推測できます。

この関数を使用する限り、もう二度と不等号の向きで悩む必要がなくなります。

さらに補足するとアッパースネークケース(大文字とアンダーバー)は自作関数であると決めておくと、組み込み関数やフレームワークの関数との差別化が一目でできます。

といった感じで慣れないうちは、あるいは慣れてきたら「俺スタイル」を考えてみてください。

最近ではVisual Studio CodeやIDEを使うことが多いと思いますので、コーディングスタイルはエディタにお任せということが多いと思います。
そのスタイルでコードを理解できるのであればいいのですが、いまいちだなと感じたときは「俺スタイル」を考えるチャンスです。

私は自分が書いたコードであっても、2年後や3年後に見直すと見事に忘れていることが多々あります。
格好悪いとは思ってもコードにコメントはめちゃくちゃ書きます。未来の自分へのメッセージです。

一方で、コーディングスタイルが決められたプロジェクトでは、一旦「俺スタイル」で書いた後に自作のスクリプトでコーディングスタイルを変換することもしています。
最近であればエディタに整形ツールがついているのでボタン一発でできますよね。

プログラムの写経もいいですが、俺スタイルについても考えてみてください。

【宣伝】WordPress魔改造プラグイン使い放題サブスク1000やってます
https://wp-plugin.info/plugins-subsc/

この記事が気に入ったらサポートをしてみませんか?