タグ付けされた質問 「code-completion」

12
Objective-Cでクラスのプライベートメソッドを定義する最良の方法
私はObjective-Cのプログラミングを始めたばかりで、Javaの経験があるため、Objective-Cプログラムを書く人々がプライベートメソッドをどのように扱うのか疑問に思います。 私はいくつかの慣習や習慣があるかもしれないことを理解しており、Objective-Cでプライベートメソッドを扱うために人々が使用する最高のテクニックのアグリゲーターとしてこの質問について考えます。 投稿するときは、アプローチの引数を含めてください。なぜそれが良いのですか?(あなたが知っている)どの欠点があり、どのようにそれらに対処しますか? これまでの私の調査結果についても。 MyClass.mファイルで定義されたカテゴリ [eg MyClass(Private)] を使用して、プライベートメソッドをグループ化することができます。 このアプローチには2つの問題があります。 Xcode(およびコンパイラ?)は、対応する@implementationブロックのプライベートカテゴリのすべてのメソッドを定義しているかどうかをチェックしません MyClass.mファイルの先頭にプライベートカテゴリを宣言する@interfaceを配置する必要があります。そうしないと、Xcodeは「自分はメッセージ「privateFoo」に応答しない可能性があります」などのメッセージを表示します。 最初の問題は、空のカテゴリ [MyClass()]などで回避できます。 二つ目は私をとても悩ませます。ファイルの終わり近くにプライベートメソッドを実装(および定義)したいのですが。それが可能かどうかわかりません。

5
PyCharmに、パラメーターが期待される型をどのように伝えることができますか?
コンストラクター、割り当て、およびメソッド呼び出しに関しては、PyCharm IDEは私のソースコードを分析し、各変数の型を理解するのに非常に適しています。コード補完とパラメータ情報が得られ、存在しない属性にアクセスしようとすると警告が表示されるので、それが正しいときに気に入っています。 しかし、パラメータに関しては何も知りません。コード補完のドロップダウンでは、パラメーターのタイプがわからないため、何も表示できません。コード分​​析は警告を探すことができません。 class Person: def __init__(self, name, age): self.name = name self.age = age peasant = Person("Dennis", 37) # PyCharm knows that the "peasant" variable is of type Person peasant.dig_filth() # shows warning -- Person doesn't have a dig_filth method class King: def repress(self, peasant): # PyCharm has no …

2
clangによるコード補完の高速化
clangのコード補完メカニズムを使用しながら、コード補完の潜在的なスピードアップを調査しています。以下に説明するフローは、rtagsで見つけたものです、Anders Bakkenによるでです。 翻訳単位は、変更を監視するデーモンによって解析されます。これは、呼び出されたclang_parseTranslationUnit関数と関連する関数(reparse*、dispose*)によって行われます。ユーザーがソースファイルの特定の行と列で完了を要求すると、デーモンは、最後に保存されたバージョンのソースファイルと現在のソースファイルのキャッシュされた変換単位をに渡しますclang_codeCompleteAt。(Clang CodeComplete docs)。 clang_parseTranslationUnit(CompletionThread :: process、行271から)に渡されるフラグはCXTranslationUnit_PrecompiledPreamble|CXTranslationUnit_CacheCompletionResults|CXTranslationUnit_SkipFunctionBodesです。clang_codeCompleteAt(CompletionThread :: process、行305から)に渡されるフラグはCXCodeComplete_IncludeMacros|CXCodeComplete_IncludeCodePatternsです。 への呼び出しclang_codeCompleteAtは非常に遅くなります。完了場所が正当なメンバーアクセスコードである場合でも、完了を取得するのに約3〜5秒かかりますclang_codeCompleteAt。これは、のドキュメントで言及されている使用目的のサブセットです。これはIDEのコード補完標準では遅すぎるようです。これをスピードアップする方法はありますか?

3
コード補完はどのように機能しますか?
多くのエディターとIDEにはコード補完があります。それらのいくつかは非常に「インテリジェント」であり、他は実際にはそうではありません。よりインテリジェントなタイプに興味があります。たとえば、a)現在のスコープで使用可能であるb)戻り値が有効である場合にのみ関数を提供するIDEを見てきました。(たとえば、「5 + foo [tab]」の後では、正しいタイプの整数または変数名に追加できるものを返す関数のみが提供されます。)また、より頻繁に使用されるオプションまたは最長のオプションが優先されることも確認しました。リストの。 コードを解析する必要があることを理解しています。ただし、通常、現在のコードの編集は無効ですが、構文エラーがあります。不完全でエラーが含まれているものをどのように解析しますか? 時間の制約もあります。リストを作成するのに数秒かかる場合、完了は役に立ちません。完了アルゴリズムが数千のクラスを処理する場合があります。 これに適したアルゴリズムとデータ構造は何ですか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.