Swift

Swiftの関数名と外部引数名の付け方メモ

More than 3 years have passed since last update.

Swiftの関数名(メソッド名)ってどうやってつけてますか? と聞かれた時に話したメモ。ふたりとも同じようにつけていたので、おそらく無難な付け方。

以下はSwift 1.2を対象として 関数 で説明しています。

メソッド(クラス内の関数)とinit(イニシャライザ)では # の使い方が異なりますのでご注意ください。

内部引数名を外部引数名にも使う場合、メソッドなら第一引数に#を付けます(第二引数以降は自動で使われる)。
initなら#は全て不要となります(全て自動で使われる)。

関数名だけで機能を説明する

OK

func setSize(size: CGSize) {
}
setSize(size)

NG

// 関数名 + 外部引数名で機能がわかるような付け方はしない
func set(#size: CGSize) {
}
set(size: size)

追加要素には外部引数名をつける

OK

func setSize(size: CGSize, #animated: Bool) {
}
setSize(size, animated: true)

関数名と引数が1対1で対応しない場合、外部引数名を使用する

OK

func setSize(#width: CGFloat, #height: CGFloat) {
}
setSize(width: 640, height: 480)

NG

// 内部引数名で意図がわかるとしても、内部引数名だけにはしない
func setSize(width: CGFloat, height: CGFloat) {
}
setSize(800, 600)

NG

// Objective-Cっぽくしない
func setSizeWithWidth(width: CGFloat, #height: CGFloat) {
}
setSizeWithWidth(320, height: 240)

Swift 2では第一引数に # が使えないらしいとか、Objective-Cっぽい名前を目指している? といった情報がありました。
第2回目の Swift 2 シンポジウムも沢山の学びが得られる良い会でした。

こちらを読ませていただくと、上記の名前の付け方でいいか考えちゃいますね。とても参考になりました。