tohokuaikiのチラシの裏

技術的ネタとか。

Re: スマートなコードの書き方12選

保守性・管理性が劇的に上がるPHPのスマートなコードの書き方12選 | BULK SERVER blogが盛大に突っ込まれてたのでサラッと自分なりのポイントを記述してみる。

上記は既に削除してあるのでこちらから。
http://bulkserver.jp/blog/2014/08/07/php-code/ - 2014年8月12日 13:49 - ウェブ魚拓

1.括弧の省略

N.G
後でコードを読んでいるときに、この省略形が混在していると混乱する。
そして何より、ステートメントを増やした時にif内から外れるのに気が付かない。

WordPressにこれがしばしば遭遇しててprintデバッグをしてるとifステートメントから外れてて涙をのんだことがしばしば。

2.三項演算子

O.K
ネストしなければ良く使う。
!isset($a) and $a = "abc";
もたまに使う。

3.switch文

O.K
ただし、サンプルのような分け方になった場合そもそもロジックがおかしいと思う。

4.for文

微妙
PHPのループはforeachが圧倒的。

foreach >>>高い壁>>> for >>>>>越えられない壁>>>>> while >>>>>>>>>>>>>>>> do

って感じかな。

5.変数宣言のみで配列への要素追加

O.K
定番。定番すぎてBlogで紹介すると○○かと思われるレベル。

6.引数のデフォルト値

O.K
定番。定番すぎてBlogで紹介すると○○かと思われるレベル。

ただ、デフォルト値を指定できる引数の後に必須引数を指定することはできない。

<?php
function test ($a = デフォルト値 , $b = デフォルト値 , $c) {
    処理
}

とか○○かと思われるレベル。

7.関数でのglobal宣言

微妙
その変数を書き換えないという条件下ならたまに使うことも無いことがないかもしれない。*1

8.条件式での変数定義

O.K
よくやる。初期化しろよーとかあるかもしれませんが、これやらないで何のPHPかという気もするレベルで使う。

ただ、サンプルの

<?php
if($num=strpos($str , 'abc')){

っていうのは、いただけない。$strが'abcde'とかだった場合にint(0)が返されるので意図した挙動にならない。

9.文字列への変数挿入

微妙
書き殴りコードならやるかも。

基本的にprintf/sprintfを使う。gettextするかもしれないし。。。

10.empty

微妙
emptyは分かりにくくなるので個人的には使わない。0の時とかね。

11.関数の中で同じ関数の呼び出し

O.K
意図的に再帰使えるならかなり有効なので使う。

が、難しいので初心者は使わない方がいいかも。サンプルコードは無限ループになっております。

12.結合代入演算子(.=)

O.K
良く使う。使いすぎてBlogで紹介すると○○かと思われるレベル。

まとめ

意外とこれがダメ!っていうのははてブで突っ込まれているほどは無くって、ただサンプルがひどすぎるのよね。。。

*1:他人のコードをメンテしてる時とかに致し方なくやる