PHPカンファレンス2014.png

こんにちは。ひかるです(* Ŏ∀Ŏ)

世の中はもうクリスマスです。早い。早いよ。
10月ってあったっけ?ってぐらい早かったです。10月もっとがんばれ。

そんな10月、約1月近くたっちゃいましたが、
10/11(土)に開催されたPHPカンファレンス2014についてです。

今年はLTさせていただいたので、そのLTについてお話しします。

と、まぁ、「なんで今更ブログに?」と思いますよね。
タイミング逃したのもあって、ブログはあきらめよう。。とおもってたのですが...


まぁ、まぁ、これを見てみてください。

slideshareにあげた、PHPカンファレンス2014での私のLT資料です。


PHPcon_slideshare.png

24,086views (2014/11/6 15:00時点) て。


予想以上の数字に3度見してしまい、とりあえず急いで記事を書き始めてみました。

どこで晒されてるの??わたしどこで晒されてるの???震える。
親切なかた、アクセス元、どこかおしえてください。

そんな気持ちで、内容にはいっていきます( ´˂˃` )



▼LTスライド

PHPer女子が語る!こんなコードを書くヒトはモテない~きほん編~@PHPカンファレンス2014 from Hikari Fukasawa


▼当日の動画



「PHPer女子が語る!こんなコードを書くヒトはモテない~きほん編~」
というタイトルでLTしました。
タイトルで釣りあげてる感あります。

直球にいうと、『クソコード』のお話です。
個人的にいやだなぁ〜と感じたソースコードについてお話ししました。

資料の中で紹介した3つのコードについてまとめてみます。



◆そのいち - いみのわからない、なまえ

$himoteCode = new HimoteCode();
$aList = $himoteCode->getListA();
$bCount = array();

foreach ($aList as $key => $row) {
    array_push($bCount, $row['b_count']);
}

変数名や、関数名など、実装する人のネーミングセンスが問われるところ。
上記の例だと、ちょっとわかりにくかったかな〜って感じなっちゃいましたが。

$aList だとか、$bCount だとか、
「"a"ってなに?なんの略?なんのリストなの?"b"って???(つ﹏<)・゚。」

ってなっちゃいますよね。私はなります。

名前だけで「何のための変数なのか」、「何をする関数なのか」がわからないと、
意味を理解するまでソースコードを読み解いていく必要があるです。

よけいな手間をかけたくないプログラマさん方のためにも、
誰がみてもわかりやすい名前をつけましょう٩( 'ω' )و

今回でいうと、"a"や、"b"はきっと何かの略なのでしょうね。わかりません(;ω;`)



◆そのに - foreach じごく

foreach ($list as $key => $item) {
 
    foreach ($item as $id => $row) {

        foreach ($row as $name => $value) {
          ・・・
        }

    }

}

みんな大好き foreach ちゃんです。一日に絶対1,2個書いている気がします。
指定した配列に関してループ処理をしてくれる子です(๑ơ ₃ ơ)♥

で、今回の例だと、そのforeachがいっぱい書いてありますね。

$list という配列をforeachでまわして、$item に中身が代入されます。
さらにその $item が配列だったらしく、foreach でまわします。
さらにさらに $row も配列みたいですね。foreach です。

うん、ちょっと多いです( 'д'⊂彡 ))Д´)
人の目じゃ追うのが結構つらいです。
確かにいっぱい使いたくなっちゃうのですがね。。

と、foreachについては、このスライドをおすすめしますです!


PHPの教室「foreachを極める」 from yandod

初めてPHP勉強会に言ったとき聞いたお話でした。おもしろかった٩( 'ω' )و

懇親会とかツイートとかで、「foreachつかっちゃだめなんかー!」
ってコメントをよく見かけたのですが、
つかっちゃだめってことじゃないです!むしろいっぱいつかったらいいじゃない!
ネストしすぎるのはよくないね、ってお話でした。



◆そのさん - { } のない if文

if ((err = ReadyHash(&SSLHashSHA1, &hashCtx)) != 0)
    goto fail;
if ((err = SSLHashSHA1.update(&hashCtx, &clientRandom)) != 0)
    goto fail;
if ((err = SSLHashSHA1.update(&hashCtx, &serverRandom)) != 0)
    goto fail;
if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0)
    goto fail;
    goto fail;
if ((err = SSLHashSHA1.final(&hashCtx, &hashOut)) != 0)
    goto fail;

この例だけ、私がテキトーに考えたモノではありませぬ。そもそもPHPじゃないです。

いい例があったので、参考にさせていただきました。
このコードについては「iOS7 SSLバグ」とかでぐぐってみると、いろんな解説があるはずです。

▼AppleがiOS7.0.6で修正したSSLバグの簡単な解説
http://qiita.com/tomohisaota/items/e6995e89b843e1295c08

foreachのお次は、if文 についてです。これもいっぱい書きますね。

if文の書き方ですが、

if (true) {
    ...
}
と、中括弧で囲う書き方と、例のように中括弧ナシで一行で済ます書き方があります。

中括弧がないと、2行とかで済むし、こっちのほうがスッキリしていいんじゃない?って思っちゃうのですが。。。。

iOS7のバグが良い例で、非常にバグが生まれやすいです=≡Σ((( つ•̀ω•́)つ

また、後からの改修とかでif文の中身が1行以上になってしまった場合など、
中括弧を書き加えなきゃいけない、っていう後々の手間もあったりします。

あと、コーディング規約的にも、{}は必須となっていることのほうがほとんどです。
PHPのコーディング規約については 『PSR』とかでぐぐると日本語訳とかとかでてきます。

バグが生まれやすいコードはなるべく書かない!こわいですからね(*´∩ω・`)゚+.゚



てな感じで、個人的にピックアップして、3つほど紹介しました。

お話しした実際の会場はめっちゃめちゃヒトがいて、ど緊張。
結構雑めに解説してしまったので、もっと早めにまとめておくべきでした。

間あいてしまいましたが、以上PHPカンファレンスについての記事でした。
改めて、実行委員の皆様、当日スタッフのみなさま、準備等おつかれさまでした!!


そして、親切なかた、viewのアクセス元をおしえてください。震えてます。


以上、ではでは٩(๑′∀ ‵๑)۶•*¨*•.¸¸♪