はじめに
コードについてあれこれ話し、思った何かをまとめたポエムです。
人間がコードを書くのもあと10年くらいかもしれませんが、現在コードを書いている方々、将来プログラムを書く人工知能にも「ひよこ感」は共有したいと思ったのでちょっとまとめてみる次第です。
ひよこ感とは
「ひよこ感」というのは「コードに対する伸びしろの予感」です。
もう少し具体的に言うと、「とりあえず書いたコード」や「初心者のときに書きがちだなぁ」、「もっと効率が良い書き方あるんだけどなー」と思われがちなコードに働く直感でもあります。
ベストプラクティスに至る前段階のコード、とも言えるかもしれません。
(ベストプラクティスを知っていればこそ、ですが)
なお、「ちゃんとしてる感」を「にわとり感」、「やりすぎ感」を「やきとり感」「ひきにく感」と呼んだりしています。
例
たとえば「文字列に対して大小を無視した比較がしたい」ときのコードがイメージしやすいので並べてみます。
言語は C# で、Aがちりばめられたコードは「ひよこ感」が強い、Bなら「にわとりだなぁ」という印象になりやすいです。
A
static void SomeFunc(string a, string b)
{
if (a.ToLower() == b.ToLower())
{
...
}
}
B
static void SomeFunc(string a, string b)
{
if (string.Equals(a, b, StringComparison.OrdinalIgnoreCase))
{
...
}
}
コードを見て思うこと
コードに対して考えることは色々ありますが、なんとなく考えているレイヤーが違う感じがします。
A
- 大小考慮せず比較したいんだなー
-
.ToLower()
によって小文字化されたstringのインスタンスが作られるんだよなぁ。メモリ確保が行われるから遅くなりそうだなぁ。 - nullだったら例外起きるなぁ
B
-
StringComparison
のところを見るとカルチャは考慮せずにバイナリ比較なんだな。 - 元の文字列はカルチャ揃ってるかな?ユーザー入力じゃないかな?
- 引数がnullだとどうなるんだっけ?
どう書けばいいのか
- .NETの文字列を使用するためのベストプラクティス https://docs.microsoft.com/ja-jp/dotnet/standard/base-types/best-practices-strings
これはやきとりではないでしょうか…
全部覚えてる人いないのでは…
まとめ
あらゆる状況で人を悩ませるnullはやっぱりよくないので早くなくなってほしいですね!
早くnull許容型が基本になってほしい!