自由気ままにブログ

地方零細企業プログラマがひっそりとなにかしています。

関数の引数・戻り値が多い場合は、メソッドを使おう

f:id:nono138:20200421225921p:plain

こんにちは、こんばんは、138nonoです。

goを作る時に、ついつい引数・戻り値が多くなってしまう時はありませんか?
若輩の私はよくあります。

そんな時、使うのがメソッドです。
メソッドの使い方は、こんな感じです。

package main

import "fmt"

type something struct {
    num        int
    characters string
}

func main() {
    something := new(something)
    something.num = 5
    something.characters = "Gopher"
    fmt.Println(something.num, "\n", something.characters)
    something.do()
    fmt.Println(something.num, "\n", something.characters)
}
func (anything *something) do() {
    anything.num *= 2
    anything.characters = "Hello World"
}


結果

10 
Hello World



関数の前に構造体を渡してあげるだけで、結果も戻ってくれます。
構造体を使うことによって、簡単にオブジェクト指向になります。
勿論、引数・戻り値も設定してあげることが出来ます。

関数だけでもシステムとしては成り立ちますが、コードの可読性、つまり、保守・運用性に欠ける場合があります。
場合に合わせて、関数かメソッドを使うかを適切に決めましょう。

1人で全てやってしまう、システムなら、良いですが、現在はチームで作るシステムが普通になっています。
また、少し時間が経つと、自分のコードを忘れてしまうこともよくあります。
(私自身、見返すとクソコードやなぁとよく思います…)
最初は難しいですが、慣れて来たら、誰かに見せる意識でコードを書くを書くのが良いと思います。