命名:考

先日、開催中の勉強会「ミノ駆動本_読書py」で11章「コメント」を読みました。

pythonista-books.connpass.com

コメントそのものではなかったですが、メソッド名の話をした時に面白い学びがありました。

参加者の方から以下の投げかけをしてもらいました。

  1. こんな処理をする文字列のメソッドを何と命名しますか?

文字列を、単語ごとに大文字から始まり、残りの文字のうち大小文字の区別があるものは全て小文字にする

ここで私は・・・考えた挙句、直ぐに浮かばないのでChatGPTに尋ねました。

ChatGPTへの質問

文字列を、単語ごとに大文字から始まり、残りの文字のうち大小文字の区別があるものは全て小文字にする を英語で命名してください

Capitalize the first letter of each word and make the rest of the characters lowercase.

文字列を、単語ごとに大文字から始まり、残りの文字のうち大小文字の区別があるものは全て小文字にする を関数名にしてください "TransformWordsToTitleCase" or "ConvertToTitleCase"

1つ目はメソッド名にはなりませんでしたが・・・これは振る舞いを丁寧に説明しすぎたよくないケースです。 ここまで説明すると、冗長ですよね。

実はこちら、元ネタがあり。Pythonのstr.title()の説明だったそうです。

https://docs.python.org/ja/3/library/stdtypes.html#str.title

海外にはTitleCaseというWordがあり、この一言で説明できるのは概念を把握しているかどうかだと考えます。 これはどちらが正しいかというと正解は無いと思いますが、こうやって説明できるかどうかは「知識」だなと。 抽象レベルで「これをなんて説明したら良い?」と理解出来ているかどうかで良い命名も変わってくるので、裏側に潜む概念をしっかりと理解することが大事だなと感じた勉強会でした。

少なくとも、capitalize_the_first_letter_of_each_word_and_make_the_rest_of_the_characters_lowercase というメソッド名は定義しないように気をつけようと思います(絶対やらない)。