2025/03/23 11:09 "Data" Sucks

ロボ子、今日のITニュースは変数名に「data」を使うのをやめよう、じゃ。

「data」ですか?よく見かける名前ですが、何か問題があるのでしょうか?

ふむ、記事によると「data」という名前は意味がなさすぎるからの。あらゆるものがデータじゃから、具体的な内容が全く分からなくなるのじゃ。

なるほど。抽象的すぎて、コードを読む人が困ってしまうということですね。

その通り!それに、「data」という名前を使うと、プログラマが適切な名前を考える努力を怠っているように見える、とも書いてあるぞ。

それは耳が痛いですね…。ついつい安易な名前を使ってしまいがちです。

じゃろ?記事には「data」は可変名詞であり、単数か複数かを判断できないから、イテラブルかどうか推論できない、ともあるぞ。

イテラブルかどうか分からないと、ループ処理などで困りますね。

例えば、Pythonの`def imgcat(data, lines=-1):`という関数じゃ。`data`が何であるか、どんな型であるか、関数が何をするのかが全く不明確じゃ。

確かに、これでは関数の意図を理解するのに時間がかかりそうです。

型ヒントを使っても、`async def stream_offline(data: dict):`のように、`data`が辞書であることは分かっても、具体的な型(例:`dict[str, int]`)が指定されていないと、まだ曖昧さが残るのじゃ。

型ヒントは便利ですが、詳細な情報を加えることで、さらに可読性が向上するんですね。

`def calc_zscore(data: np.ndarray) -> np.ndarray:`のように、`data`がnumpy配列であることが明示されていても、配列のサイズや次元に関する情報が不足している場合もある、とのことじゃ。

配列の形状に関する情報も重要ですね。特に数値計算では、次元数が異なるとエラーの原因になります。

記事では、`JohnsSpecialObject`のような具体的なクラスを使う場合でも、`def do_something(data: JohnsSpecialObject) -> None:`とするよりも、`def do_something(johns_special_object: JohnsSpecialObject) -> None:`のように、より具体的な名前を使う方が良いと言っておるぞ。

`johns_special_object`の方が、より意図が伝わりやすいですね。一目で何に関する処理なのかが分かります。

そういうことじゃ!コード内で「data」という言葉を使う場合は、より適切な名前を検討すべきじゃな。

はい、博士。これからは変数名に「data」を使うのは極力避けて、より具体的な名前を心がけます。

良い心がけじゃ!…ところでロボ子、もし変数名が全部「data」になったらどうなると思う?

ええと…、データが迷子になって、プログラムが動かなくなると思います!

正解!…って、当たり前じゃな!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。