

自然言語文中にメソッド名を記述するときに、Objective-Cでは+[Foo bar]や-[Foo
baz:qux:]の様に書いたと思いますが、Swiftではどのように書くのが一般的でしょうか？


CC BY-SA 3.0
2015-10-21T06:03:21.327
17890
2020-02-08T18:32:21.887
2015-10-21T07:33:59.993
238
238
question
swift
Swiftのメソッドの自然言語文中での表記法


私自身は、「自然言語文中」にこのような表記はしたことないですが、質問者さんのおっしゃる「スタックトレース」中では、下図のように、Swift環境では表示されます。

[![画像の説明をここに入力](https://i.stack.imgur.com/wz0wt.png)](https://i.stack.imgur.com/wz0wt.png)

クラスメソッドは、`static Hoge.fuga() -> ()`とあるように、`static`で、インスタンスメソッドと区別するようです。


CC BY-SA 3.0
2015-10-21T10:14:16.520
17898
2015-10-21T10:14:16.520
7362
17890
answer


Rubyだとインスタンスメソッドは`Range#each`のように「#」で繋いで書き、クラスメソッドは`Range.new`のように「.」で繋いで書きます。このようなドキュメントや本を書く上で標準化された表記法のルールがあるか、という質問ですよね？

Objective-Cでは`+[Foo bar]`や`-[Foo
baz:qux:]`のように「+」と「-」で区別し、あるいは文脈でレシーバが明らかなら、`-objectsForKeys:notFoundMarker:`などと書くのが慣例的に行われてきたと思います。

Swiftは今のところはっきりと決まったものは無いと思います。

強いていえば単体のメソッドやfunctionはアップルのドキュメントに倣って`drawRect(_:)`のように書いている本やサイトが多いと思います。

Rubyのようにクラスメソッドとインスタンスメソッド（あるいはStaticメソッド）をうまく区別する表記法は無くて、区別なく`Array.append(_:)`のように単にドットで繋げて書いていることが多数のようです。


CC BY-SA 3.0
2015-10-21T16:45:24.173
17913
2015-10-21T16:45:24.173
5519
17890
answer


Swiftではありませんが、Javaはドキュメント中で`ClassName.methodName()`と表記することが正式となっています。オーバーロードを区別するための引数リストは`ClassName.methodName(Type1,
Type2, ...)`のように型名のみだったり、`ClassName.methodName(Type1 arg1, Type2 arg2,
...)`のようにパラメータ名を含めたりすることもあります。静的メソッド（クラスメソッド）と非静的メソッド（インスタンスメソッド）で区別する記法はありません。

  * [javadoc - Java API ドキュメントジェネレータ](https://docs.oracle.com/javase/jp/1.5.0/tooldocs/windows/javadoc.html#@see)

Javadoc形式のコメント内では`ClassName#methodName()`と表記しますが、ドキュメントジェネレータに処理させた結果として出力される文書では、`#`は`.`に置換されるようになっています。  
※個人のブログ記事などでは文章中でも`ClassName#methodName()`と表記されていることが多いですが、おそらくJavadoc中の表記をそのまま（間違って）使っているのだと思われます。

C#も`ClassName.MethodName()`の形式です。

  * [<see> \- C# プログラミング ガイド | Microsoft Docs](https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/xmldoc/see)

C++はスコープ解決演算子`::`を使った`ClassName::MemberFuncName()`の形式です。規格書にも頻出します。

  * [ISO/IEC 14882:2014, N3797 (draft)](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3797.pdf)


CC BY-SA 4.0
2019-02-07T16:29:05.650
52632
2020-02-08T18:32:21.887
2020-02-08T18:32:21.887
15413
15413
17890
answer