EN:
セミコロンがないと、xcodeはSwiftコードと文法のロード/インデックス作成/分析にCPUを浪費しすぎます。
これにより、Xcodeがより頻繁にクラッシュ/無応答になります。
したがって、セミコロンなしは、Swiftでのコーディングには適していません。
中国語:
セミコロンがないと、XcodeはSwiftコードと構文のロード、インデックス作成、分析を処理するためにより多くのCPUリソースを消費します。結果として生じる問題は、Xcodeがより頻繁にクラッシュ/応答しなくなることです。
したがって、Swiftでは、セミコロンを使用しないことは良い選択ではありません。
もっと:
著者がSwiftで開発しているときに、セミコロンを使用しなかった場合、Xcodeは1日に平均10回以上クラッシュし、開発効率に大きな影響を与えました。
セミコロンなしでSwiftをコーディングすると、xcodeがクラッシュするか、毎日10回以上応答がありません。
これを証明するソースまたはベンチマーク?
より広いSwiftコミュニティ(ほとんどすべての人気のあるSwiftオープンソースライブラリを参照)はセミコロンを使用していません。
さらに、Appleは意図的にCスタイルのプログラミング手法から離れました... Cスタイルのforループ、++演算子などを削除しました。
言語の将来のバージョンでセミコロンも削除されても驚かないでしょう。
これらの理由から、コンパイル時にわずかなパフォーマンス上の利点があったとしても、私は個人的にこの変更に強く反対しています。
let obj = NSObject()
// Type `if` here, you can not find the `if` statement in the completion suggestions list.
// But if add a semicolon to the previous line or write a blank line between the previous line, the `if` statement completion suggestion will be in the list.
この簡単な例は、xcodeが文法を処理するためにCPUを浪費する可能性があるが、間違った結果をもたらす可能性があることを意味します。
そして、xcodeのクラッシュのほとんどは、ステートメントを編集した後の文法の再構築時に発生することがわかりました。
代わりに、このバグをAppleに転送します。 恐竜が地球を歩き回ってから(Objective-C日)、セミコロンを使用しておらず、あなたが説明している問題を認識していません。
ベンチマークが必要で、このバグをAppleに報告する必要があります(できるだけ早く実行し、RDAR番号を投稿します。複製してください)が、trueの場合、Appleが修正を行わなかった、または修正できなかった場合は、Swift5または6がに戻らないと言います。より多くのセミコロンを使用することは、専門家の会議ではほとんど説明できない生産性の低下ではなく、ソフトウェアの熱意の表れです。
これを持ってきてくれてありがとう。 コード補完の問題をhttps://bugs.swift.org/browse/SR-6454として報告しました
うまくいけば、Swift4.1で修正できます。 Appleは、すべてのSwiftで記述されたまったく新しいツールフレームワークlibSyntaxを作成する取り組みを主導しています。 オープンソースでもあるので、参加することができます。
オートコンプリートが機能しなくなる具体的なケースが他にある場合は、聞いておくと便利だと思います。
ツーリングの問題はさておき、セミコロンと余分な句読点は認知的負荷を増やし、要件としてそれらを削除する本来の動機である明確さのために何もしません。 WWDC2014トークのAdvancedSwiftで、セミコロンに対するDaveAbrahamsの賛辞を参照してください。
Swiftコミュニティに大きな海の変化がない限り、セミコロンは戻ってきません。 そのため、私はこの問題を解決します。 ただし、必ず、見つけたバグを報告してください。 それはコミュニティ全体が前進するのを助けます! 😄