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 シンポジウムも沢山の学びが得られる良い会でした。
こちらを読ませていただくと、上記の名前の付け方でいいか考えちゃいますね。とても参考になりました。