がるの健忘録

エンジニアでゲーマーで講師で占い師なおいちゃんのブログです。

「コードの書き方」の一例

元ネタ。
https://twitter.com/komi_edtr_1230/status/1562230567101693953

自称シニアのフリーランスさん(笑)からのPRで

if (foo == “bar”) {
  return true
} else {
  return false
}

というひどいコードがあって朝からゲンナリしてる....
駆け出しエンジニアじゃないんだからこんな指摘させないで欲しい.....

「変数hogeの値が 'foo' かどうか?*1」のコード、多分これくらいのバリエーションがあるんだと思うんですねぇ by PHP
あと、比較演算子が == と === とあるよねぇ、というのは、面倒なんでオミットします。
(ひねたパターンも削除してます……多分)。

if ($hoge === "foo") {
  return true
} else {
  return false
}
if ($hoge === "foo") {
  return true
}
return false
if ($hoge === "foo") {
  $r = true
} else {
  $r = false
}
return $r;
return ($hoge === "foo") ? true : false;
$r = ($hoge === "foo") ? true : false;
return $r;
return $hoge === "foo";
$r = ($hoge === "foo");
return $r;
return isHoge($hoge);
$r = isHoge($hoge);
return $r;

先に書いておくと、「特になんの制約もない」状態でおいちゃんが書くんなら「return $hoge === "foo";」。
いやだって一番シンプルやん。「比較演算子の戻り値はbool」だし。

分析軸は……この辺かなぁ。
・"if" か "三項演算子" か "比較演算子戻り値直" か "関数に切り出す" か
 → ifの時、elseを書くか書かないか
・"値を直return" か "一度変数で受ける" か

先に後者から話をすると。
個人的には「わざわざreturnする値を変数に入れるのは面倒だしメモリ勿体ないし*2」とは思うんだけど「デバッガとかブレークポイントとか考えると変数で受け止めるのはデバッグしやすい」とも思うので、まぁお好みかなぁ、と。
PHPになってから「どちらかというと変数で受けておく(あとでデバッグしやすい)」に寄せてはいるかもしれない……とはいえ染みついた手癖はなかなか直らないんだけど(笑

前者のほうはより一層色々あって。
個人的には
・"比較演算子戻り値直"は、まぁ普通に理解できると信じているし楽だから、基本はこれ
・if文は、色々と「まぁわからんでもない」。初心者向きだしね*3
三項演算子が一番「中途半端」なので、ここを最大肯定する理由があんまり見つからない
・関数に切り出す、は、この比較だと「無い」かなぁ(もっと複雑ならやる)
って感じかなぁ。

この辺は、多分「どれで書いても、そこまでクリティカルに問題が起きる可能性は低い」ので、ただまぁだからこそ「致命的なレベルで"自分の感覚と違う"のが受け入れにくい」のかなぁ、とも思ったりはする。
制限としてあり得るのはどちらかというと「直returnすんなデバッグしにくいだろ」で、これは現場によってはルール化されうるんだろうなぁ、とは思う。

で、多分議論の本質であろう「ifか三項演算子か比較演算子か関数切り出しか」については……まぁ本当に「好きにすりゃええがね」としか思わないかなぁ、個人的には。
おいちゃんの好みとしては、前述した通りではあるんだけど
・この程度なら、比較演算子
・もっとややこい条件なら、関数切り出し
って感じかなぁ。

まぁ、こーゆーの、限界事例とかまで考え出すと色々と「今まで関わってきた天国とか恩恵とか地雷とか地獄とか煉獄とか殺意とか」がうかがい知れるので。
「相手の背景と意見を尊重しつつ」、「自分は、こ~ゆ~経験があったから、こっちが好みなんだよねぇ」程度に会話をすると、得るものも多いのではないかなぁ、と思うのですがいかがでしょうか*4

*1:微妙に元ネタと名前が違うのは気にすんな

*2:C言語の頃の感覚の名残

*3:でなきゃ、コンパイラの最適化まで見越した超上級者向き

*4:いきなり日和ってみるw

リプトン イエローラベル ティーバッグ

廉価勢(笑
これだけは、ティープレスじゃなくて電子レンジでいれてます(笑
大きなマグカップティーパック3つ入れて濃い目に出してから牛乳を入れて、って感じですね。
んで、これはクローブいれたりチャイスパイス入れたり生姜入れたり、色々と小細工をしています。

これはミルクと紅茶を、1:1くらい、或いはちょっと牛乳を多め、くらいにしていただいています。

KALDIのジャンナッツ ブラックシリーズ セイロンエクストラ

割と廉価な茶葉(多分)。
ちょっと香りが強い目なのですが、まぁ許容範囲内。
んで、味わいもうっすらとストロングな感じで、割と「こうちゃっ!!」って感じの味わいです。

日常的に飲むのに飲みやすくて、気軽に飲める感じです。
ミルクを1/3くらい入れてもよいかも。

MARIAGE FRERES の Cecilian Ceylan

「セシリアンセイロン」。
んと……たまにこーゆー表現を使うのですが、味がなんていうか「美しい」。
昔「緑端渓」って日本酒でこの形容詞使ったなぁ。

美しくもさらっとした味わいなので、本当に「スコンスコン飲める」感じです……お値段的にはそんなにスコンスコン飲んでいいもんじゃないんですが(苦笑
朝、一発目に飲むのが最高にいいんですわ……身体に美しさがしみ通る感じで。

これは紅茶が美味しいので、ミルクは少量(1/6とか)でOKな感じです。

MARIAGE FRERES の Grand Bois Cheri

「グラン ボワ シェリ」って読むらしいです。
これは結構昔から「ハマるったけハマりまくってる」茶葉で、ミルクティーにすると大変に素晴らしくスバラシイです(語彙)。
よそで見かけない茶葉なので、MARIAGE FRERESさんで毎回ゲトってます……これ教わったの「今の新宿ハルクがまだハルクって名前じゃなかったかもしれないころくらいに、あそこの地下二階にMARIAGE FRERESさんが入っていた頃の店員さんに教わった(多分、10年じゃきかないくらい昔)」ので、色々と思い入れも深い茶葉でございます。

ミルクティーが好きなら、一度は、是非!!
ミルクと紅茶を、1:1くらいまでにしてもよいかもしれません。

紅茶の話

お茶は全般的に好きなのですが(日本茶も紅茶も中国茶も)。
最近、紅茶の頻度が高いのと、銘柄はすっかりと脳内から抜けやすいので、備忘録用に(笑

なお飲み方ですが、リーフで3~4分、ダストで2~3分くらいの抽出時間が多いです。
抽出はティープレスを使ってます。
んで、その後で、紅茶の1/6~1/3量くらいの牛乳を入れます。

たまに「ガッツリ煮出してスパイスいれてチャイっぽく」とかやりますが……冬場はともかく、夏はやらんw

なんでまぁ、大体「そーゆー飲み方をしている」んだと思っていただければ。