SESで前任者から引き継いだプログラムの、過去に実施されたクライアント側の担当者によるコードレビューを読んでいたところ、気になった点があったのでご相談させてください。
気になったのは、「is_blank()などの名前で、bool型の戻り値をもつ関数は可読性を下げるためダメ」というものでした。そのレビューで提示された代替策によると、関数名をcheck_blank()として、値がブランクならば戻り値を文字列(例えば’error’)を返すのが好ましいとのことでした。
気になったのでしばらくググってみたのですが、boolを返す関数に「is〜」と名前をつけるのは、分かりやすい良い命名規則の一例として紹介されているサイトがいくつもありました。また、boolを返す関数はダメだとマサカリを担いだ記事を見つけることもできませんでした。むしろcheck〜やjadge〜などの関数名をアンチパターンとする記事もありました。個人的にも戻り値に固定の文字列を渡すルールは、同じルールの関数が複数になっていったときに、タイピングミスによるバグを生みそうな気もします。
引き継いだプログラムについては既にレビューに沿って改修されていますので、郷に入って踏襲するつもりではあります。
クライアントの意向やレビュアーの方を批判する意図はないのですが、直接聞きにいくのもいささか角が立ちます。
私はまだ経験の浅い身ですので、どういう意図でこのコーディング規約になっているのかとても関心があります。今後の勉強の参考までに、以下の点について先輩方のご意見をお聞かせいただきたいです。
・boolを返すメソッドが好ましくないとされる、あるいはis〜の命名が好ましくないとされるのは一般的なことですか。それとも現場やレビュアーの好みによるものでしょうか。(他の現場であってもこのような記述をするのは避けるべきでしょうか)
・boolではなくあえて判定用の文字列を返すことによるメリットはどのようなものがありますか (呼び出し側が if check_blank(hoge) == ‘error’: となるので、これが可読性を高めるとするポイントということでしょうか)
・好みの要素が強いならば、最初に学んだ言語の文化が反映されるのではないかなと思います。言語の規則等で、何か関連することがあれば教えてください。(今回はPythonで、過去にjavaでもis〜()関数を見てきました)
以上よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー