====================================== 3:関数名から想像できる型の戻り値を返す ====================================== 変数名、関数名から「想像できること」はとても大切です。 特にプログラミングにおいては「型」が想像できることがとても重要です。 特にPythonは :index:`動的型付け言語` なので、関数がどんな型で戻り値を返すかを制限できません。 次の関数にはどんな問題があるか考えてみましょう。 具体的な失敗 ==================== .. code:: python def is_valid(name): if name.endswith(".txt"): return name[:-4] + ".md" return name この ``is_valid`` 関数の問題は、関数名から想像できる「戻り値の型」と実装が違うことです。 ``is_`` や ``has_`` で始まる関数名の場合は :index:`bool` が返る関数のように思えてしまいます。 .. omission:: ベストプラクティス ======================= ``is_`` 、 ``has_`` で始まる変数名、関数名の場合はboolを扱うようにします。 .. code:: python def is_valid(name): return not name.endswith(".txt") これで ``if is_valid():`` のようにif文で正しく扱えます。 大切なのは関数名から期待される動作や戻り値の型と、実装を一致させることです。 .. omission::