Go言語の関数の可読性を高める書き方と命名規則を解説!初心者でもわかる読みやすい関数の作り方
生徒
「Go言語で関数を作るときに、名前ってどう付ければいいんですか? 何かルールはありますか?」
先生
「とても大事なポイントだね。関数の名前は、コードを読む人にとって意味が伝わるように付ける必要があるよ。Go言語には命名規則があるから、今日はそれをわかりやすく説明するね。」
生徒
「よろしくお願いします!」
1. 関数の可読性とは?
可読性(かどくせい)とは、「読みやすさ」のことです。プログラムは自分だけでなく、他の人も読むことを考えて書く必要があります。関数の可読性を高めることで、バグを減らす、修正しやすくするなど、メリットがたくさんあります。
2. 関数名は動詞から始めよう
Go言語では、関数の名前を動詞+目的語の形にするのが一般的です。たとえば、数値を加算する関数なら、次のように名前を付けます。
func addNumbers(a int, b int) int {
return a + b
}
addNumbersのように、add(加える)という動詞で始まり、何を加えるかを明確にすることで、関数の役割がすぐに分かるようになります。
3. キャメルケースで命名しよう
Go言語の関数名にはキャメルケース(camelCase)を使います。キャメルケースとは、複数の単語をつなげるときに、2単語目以降の頭文字を大文字にする書き方です。
例:
calculateTotal(合計を計算する)printMessage(メッセージを表示する)
4. 意味のある関数名を付ける
たとえば、func x()やfunc doSomething()のように、何をするか分からない名前は避けましょう。代わりに、具体的な名前にします。
NGな例:
func doSomething() {
// 何をする関数なのか分かりません
}
OKな例:
func sendEmail(to string) {
// メールを送信する処理
}
関数の中身が見えなくても、名前だけで「何をするのか」が分かるようにしましょう。
5. 短くても意味が通じる名前にする
関数名は短すぎても長すぎても良くありません。「簡潔だけど意味がある」が理想です。
例:
calcSum(短くて意味が分かる)sumOfAllIntegerValues(長すぎて読みづらい)
6. 公開・非公開の関数は名前の頭文字で区別
Go言語では、関数名の最初の文字が大文字なら外部に公開、小文字なら非公開になります。これは非常に重要なルールです。
公開関数の例:
func PrintMessage() {
fmt.Println("Hello")
}
非公開関数の例:
func printMessage() {
fmt.Println("Hello")
}
パッケージ内だけで使いたい関数は小文字で始め、他のファイルやプログラムから呼び出したいときは大文字で始めましょう。
7. パラメータや戻り値にもわかりやすい名前を
関数本体だけでなく、引数(ひきすう)や戻り値にもわかりやすい名前を使うと、より可読性が高まります。
func calculatePrice(basePrice int, taxRate float64) (finalPrice float64) {
finalPrice = float64(basePrice) * (1 + taxRate)
return
}
basePriceやtaxRateという名前を見るだけで、何の値かすぐに想像できます。
まとめ
Go言語の関数設計では、読みやすく誤解のない名前を付けることがとても大切です。とくに、動詞から始める命名やキャメルケースの使い方、短くても意味を失わない表現、公開と非公開の関数を大文字と小文字で区別する仕組みなどは、どれも日常的なコーディングで役立つ基本的な考え方です。さらに、引数や戻り値にもわかりやすい名前を付けることで、最初に書いたときだけでなく、数日後や数か月後に振り返るときにも読みやすさを保つことができます。こういった小さな工夫が積み重なることで、全体として理解しやすい構造になり、機能の変更や改善にも強いコードになります。実際の開発では、関数名の意味を瞬時に把握できることが作業効率にそのまま影響し、プログラム全体の信頼性にも直結していきます。
また、単にルールを覚えるだけでなく、「他の人が読んで理解しやすいか」という視点を持つことで、より自然で使いやすい関数名を考えられるようになります。関数はプログラムの部品として日常的に利用されるため、一つひとつが小さくても、積み重なると読みやすさに大きな差が生まれます。実際のプロジェクトでは、似たような処理を他のファイルから呼び出す場面が多いため、関数名やパラメータ名の意図がわかりやすいかどうかは、やり取りの質にも影響します。特に初心者の方は、短い名前をつけがちですが、短ければ良いというものではありません。簡潔でありながらも役割が分かる名前を意識すると、コード全体の雰囲気がぐっと良くなります。
実際の書き方を確かめたい場合は、簡単なサンプルコードを試しながら、自分なりの命名の癖を見つけていくと良いでしょう。命名の基準をある程度そろえると、初めて読む人にとっても迷いにくい構造になり、関数ごとの責務も自然とはっきりしてきます。ここでは、読みやすい関数名とパラメータ名を意識した例をひとつ紹介します。
package main
import "fmt"
func formatUserMessage(userName string, age int) string {
return fmt.Sprintf("%sさんは%d歳です。プロフィールが更新されました。", userName, age)
}
func main() {
message := formatUserMessage("田中", 28)
fmt.Println(message)
}
このように、関数名・変数名が具体的であれば、コードの動きが自然と読みやすくなります。プログラムを書き慣れてくると、関数名をどう付ければ分かりやすくなるかが徐々に感覚として分かってくるため、日々の練習の中で「読みやすいかどうか」を意識してみてください。読みやすいコードは保守性にも優れ、チーム開発でも大きく役立ちます。
生徒
「今日の内容で、関数名ってただの名前じゃなくて、意味を伝える大事な役目があるって分かりました。短くても役割が伝わるように工夫しないといけないんですね。」
先生
「そのとおりだよ。読む人が迷わないようにすることは、とても大切な考え方なんだ。関数名が分かりやすいだけで、プログラム全体の理解が一気に楽になるからね。」
生徒
「公開・非公開の区別が大文字と小文字で決まるのも面白かったです。気を付けていないと、意図せず外部から呼ばれてしまいそうですね。」
先生
「そうなんだ。特にパッケージを分けて作業するようになると、この仕組みの重要性がよく分かるはずだよ。意図しない公開はバグの原因にもなるから、頭文字の扱いは慎重にね。」
生徒
「これからは、関数名を付けるときに『読みやすいかどうか』を意識してみます! 自然な名前にすると、自分でもあとで読みやすいし、他の人にも分かりやすいですし。」
先生
「その姿勢がとても大切だね。今回学んだ命名の考え方は、どんな言語でも役立つ基礎だから、ぜひ普段の練習の中で意識してみてほしい。」