IDEがコードで実現できる最も印象的なトリックは何ですか?[閉まっている]


18

最新のIDEには、コードの記述、リファクタリング、検索を支援するための多くのトリックがあります。これらはすべて非常に役立ちますが、実際に「魔法」のように見えることはめったになく、「わあ!どうやってそれを見つけたの?」

初めて見たときに印象に残った印象的なIDEコードオートメーション(またはその他の)機能に名前を付けていただけますか?


3
良い質問ですが、もっと答えが欲しいです...賞金!
タマラウィスマン

これが答えかどうかはわかりませんが、なぜIntelliJ IDEAの言及が表示されないのですか?
マークC

5
本物のプログラマは蝶を使います。
右折

バグの作成を防止してください;)
トラビスクリスチャン

これは閉じてはいけません。ここでの完璧な質問です。私見
NimChimpsky

回答:


29

後方デバッグ

Visual Studio 2010(および2012年)では、IntelliTraceを使用して後方にデバッグできます

F10を1回押しすぎた瞬間を再び生き返らなければならず、デバッグを再開しなければなりません。


2
私はまだこれを使用していませんが、したいです。
AShelly

私もこれを使用していません(Delphi for RAD Studioを使用しています)が、夢が叶ったように聞こえます。(しかし、これはこの質問に対する有効な答えですか?それはコードエディター機能よりもデバッガー機能です。まあ、それはIDEの一部なので、多分...)
アンドレアスレイブランド

+1000:これはとても便利です。
カラムロジャース

COME FROMコマンドはありますか?:)
ジョナスプラッカ

2
問題は、あなただけ例えば、C ++でMS言語(管理)でこれを行うとことができないということです
オープン方法

16

コード補完

あなたが見たのはテキストエディタだけであるとき、これは印象的です


3
実際にはそれほど印象的ではありませんが、TAGSファイルを分析するだけでそれを行うことができます。
代替案

2
私のようなことはヒッピー拡張である...それは深くコード補完よりも私にはより有用。
ポールネイサン

2
@mathepicそして、正確に何人の人がそれを知っていますか?
TheLQ

2
メインフレーム時代からプログラミングをしてきたのは印象的です。
AShelly

4
皆さん、この回答が魅力的でない場合は、コメントに同意しないで、代わりに別の回答に投票してください。それは主観的な質問なので、与えられた答えもそうである可能性が高いです。
JBRウィルキンソン

16

ReSharperの名前が付けられた変数が欲しいものを推測する能力は、私を驚かせ続けています。これは非常に簡単な例ですが、アイデアは得られます。

代替テキスト


1
それを実際に見たことのない人(私)に例を挙げていただけますか?
serg

9
テキストエディタは、コードを書くにあなたを置き換えることができれば、私はいくつかの悪いニュース...持っている
P Shved

3
foreach(var matche in regex.Matches(str))。また、a ではなくa matcheとして設定します。あまり有用ではありません。objectMatch
カラムロジャース

1
@Callum:本当ですが、それは型付けされMatchCollectionていないコレクションだからです。適切なコレクションのために、varうまく機能します。(私はまだそれが好きではない)
コンフィギュレー

1
これもEclipseの機能です。
ニムチンプスキー

12

Eclipseのリファクタリングツールに最初に出会ったとき、私は非常に感銘を受けました。大量のコードからメソッドを抽出する機能(より良いデザインを学んでいるときはよくあることです)を処理し、すべてを処理してくれました。


12

コードバブル。http://www.andrewbragdon.com/codebubbles_site.asp

コードを変更するためのツールとしてVisual StudioとEclipseが大好きですが、Code Bubblesはコードをナビゲートして表示できることに本当に興奮しています。残念ながら、公開されていない=-{


2
ワオ。そのビデオ...私はよだれを垂らしています。C ++でこれを入手できますか?
sbi

すごいことしか言えません。
Icode4food

1
1私は現在のGUIのようなものではないが、コンセプト自体はかなり素晴らしいです...
タマラWijsman

それは本当に機能しますか?コードの一部を含む小さなボックス。それを使用するには、壁のサイズを持つモニターが必要になります。
IAdapter

これがEmacsに実装されないことを願っています。私の左の小指はそれが好きではありません。
右折

7

私が聞いた中で最も印象的なプログラミング環境は、Generaオペレーティングシステムです。

ウィンドウシステム内の任意のウィジェットをクリックすると、ソースコードの完全な読み出しとアイテムのドキュメントを取得できます。動的プログラミング言語(Lisp)であるため、ウィジェットのソースをその場で編集できます。

Lisp Machineの世界のZMACSは、Emacsより優れたエディターであると言われています。Emacsは、ピアのないエディター環境です。


大学卒業後の私の最初のコンピューティングの仕事は、シンボリックワークステーション(属を使用)で働いていましたが、それが受け入れられなかった理由があると信じています!
FinnNk

3
ああ、手の込んだこと!
マークC

はい、同上属も同様にキャッチしていない理由を知りたい
Yazz.com

@FinnNk:おそらく、あなたは詳しく説明できますか?
ポールネイサン

6

プログラムの構造を視覚的に示す(プログラム/関数/ルーチン/ ...)

代替テキスト


それはどのエディターですか?
ポールネイサン


不運...(スクリーンショットを撮った瞬間にメールを受け取りました。)しかし、これはあまり高度な機能ではありません。確かに、おそらく非常に便利ですが、あまり「印象的」ではありません。
アンドレアスレイブランド

@Andreas Rejbrand-申し訳ありませんが、アンドレアス、メールは何ですか?どのスクリーンショット?私はあなたが何について話しているのか理解できないのではないかと心配しています。
ルーク

@Rook:彼はあなたの答えの画像とOutlookからのメール通知のように見える右下の小さな青いボックスについて話している。。。
ティムグッドマン

4

ReSharperのリファクタリング機能。完全な開示では、Eclipseを使用したJavaにはしばらくの間このタイプの機能があったと思いますが、私はJavaを定期的に使用していません。

ReSharperがVisual Studioに追加する機能の差は非常に大きいため、信じられません。広告のように聞こえるかもしれませんが、ReSharperを使用せずにVisual Studioのストックインストールに戻ることはできないと思います。

より一般的には、コードのセマンティックな理解は、いつでも普通の古いテキストエディタのズボンを打ち負かすでしょう。これは、「変数の使用法を見つける」や「インライン関数」、「慣用的なパターンを使用する機会」などにつながります。


私はかつて職場で「友達はReSharperなしでは友達をプログラムさせない」と言われました。
フランク・シーラー

4

Smalltalkのデバッガー:

  • コールスタック全体へのフルアクセス(そのオブジェクト3のスタックの送信者のインスタンス変数は何でしたか?)
  • デバッガでテスト対象のコードを編集し、再起動して、何も起こらなかったようにプログラムの実行を続行します。

Smalltalkでは、ほとんどの時間をデバッガ内からコードを記述するのに費やすことは完全に普通です。

(VA4JはVisual Age for Smalltalkで作成されているため、メソッドを実行し、何か間違っているのを見つけて変更し、Visual Age for Javaでアプリケーションを再起動せずにメソッドを再実行することで吹き飛ばされたことを覚えています)

Smalltalkのメソッドファインダー

Method Finderを使用すると、「これらのパラメーターを取得してこの結果を取得するために、どのメッセージを送信できますか?」聞いてみ'abc'. 'def'. 'abcdeb'.てください'abc' , 'def' --> 'abcdef'。聞いてみ#(0 1 2 3)てください#(0 1 2 3) sum --> 6。*メッセージのすべて(*)の送信者、またはそのメッセージを実装するすべてのオブジェクトを見つけるための、すべての送信者、実装者。

(*)実行時にメッセージ名を作成するようなことをする場合を除いて:self perform: (#foo, #bar)自分にメッセージを送信する#foobar-この場合、あなたは何をしているのかを知っており、自分のペタードで自分を持ち上げる可能性を気にしません。


4

Whyline

Whyline for Javaは、見たときに本当に感銘を受けました。これは、テキストだけでなくグラフィックスなど、プログラムの出力に関する質問をすることができる動的分析ツールです。たとえば、「なぜその行は赤だったのか」と尋ねることができます。または「なぜpaintメソッドが呼び出されなかったのですか?」

プログラムをインストルメントし、実行を記録することで機能します。たとえば、再現可能なバグがあるとします。Whylineでプログラムをインストルメントし、Whylineでプログラムを実行してバグを再現します。その後、プログラムを終了すると、Whylineを使用して実行履歴を検査できます。

この録音と再生は新しいものではありませんが、Whylineの実装方法は非常に洗練されています。特定のイベントに応じて履歴を表示できます(たとえば、マウスドラッグイベントのみ、またはキーダウンイベントのみに焦点を合わせます)。また、出力をプログラムのどの部分で印刷したかと関連付けます。そのため、出力からコードにナビゲートできます。

動作させるために、プログラムのスライスを使用するため、実際に関連するコードの部分に集中できます。CMUは現在、特許を取得しており、その計画が何であるかはわかりませんが、生産段階でもっと多くのことがわかることを願っています。それは記憶を食うものですが、それはおそらくプロトタイプであり、改善できるからです。

オンラインでデモを見る必要がありますが、完全な体験を得るために自分で試してみる必要もあります。どちらかといえば、オンラインデモがそのアイデアを裏付けています。


3

私が見た中で最も印象的なIDE機能はSyncEditであり、これはDelphiでのみ利用可能です。


これはメンバーの名前を変更するだけではありませんか?Eclipseはこれをインプレースで実行します。編集:ああ、なるほど、選択範囲内でそれを行うことができます。
マットオレニック

1
Eclipseも同様です(常に使用してください)。有用-非常に。魔法-よくわからない。
セルグ

@セルグ:ああ、Eclipseにもありますか?知りません。Javaは使用しません。VSにはないことを知っています...
メイソンウィーラー

@Matt:選択範囲内で実行できます。選択範囲内で実行できるため、必要なだけファイル全体で実行できます。リファクタリングパーサーがメンバーの名前変更にかける範囲やその他の制約によって制限されません。
メイソンウィーラー

Netbeansにもこれがあります。通常、ctrl-r。
アラン・ピアース

2

IDEで見たいのは次の機能です。

  • 私が慣れている方法でコードを表示する(実際にフォーマットされている方法とは無関係)
  • sheet[A3]コード(およびセル値を読み取ることができるExcelスプレッドシートなど)と図面内のテーブルを埋め込み、変数と同様にアクセスできます。
  • 解析を満足させるために、そこにある中括弧やその他の不要なコードを省略できます。
  • Googleのようなエンジンを使用してコードを検索する(特に35ミリ秒以内に検索結果を取得する)
  • 複雑なif条件を表のように表示します(リンクを引き続き検索します)。
  • 同様のコードを見つけ、違いを抽出し、それらを最大限に減らすことができるリファクタリングツール。
  • 言語ルールに従ってコードを生成するためのサポート(同じ名前のメソッドが既に存在するか、注釈に依存していない限り、Javaクラスのすべてのゲッターとセッターを作成することを考えてください)

...私は日食がそのないと思う「と同じ名前のメソッドが既に存在しない限り、Javaクラスのすべてのgetterとsetterを作成する」
ヒラ

「今までの方法でコードを表示する」と「中括弧を省略できるようにする」互換性のある目標はありますか?
TRIG

@Hila:はい。ただし、コードは表示されます。私が望むのは、コンパイラがJavaソースをコンパイルするときにそれらを生成するだけです。ソースを乱雑にしたくない。
アーロンディグラ

@TRiG:私見、2つの間に大きな重複があります。すべてのコードをインデントします。中括弧はまったく役に立ちません。
アーロンディグラ

おそらく、IDEがブレースを保存しても表示しない場合は、動作する可能性があります。
TRIG

2

動的言語の型チェック

コードが「メタ」になりすぎない限り、RubyまたはPython用のIDEは次のバックグラウンドタスクを実行できるはずです。

  • 特定の関数について、引数として渡されるすべての可能なクラスを決定します
  • これらのクラスの場合、それらのクラスがその関数によって呼び出されるすべてのメソッドに確実に応答するようにします
  • 実装する必要のあるメソッドが欠落している互換性のないクラスのリストを提示します

これを行うIDEはまだ見ていません。


これを実行するR / P IDEまたは一般的なIDEを見たことがないということですか?
マークC

私はこれをどこでも見たことがありませんが、私も本当に一生懸命に見ていません。
AShelly

Roel WuytsのRoelTyperとLex SpoonのChuckは、Squeakに対してこの種の分析を行いました。
フランクシェラー

これは、おそらく、型推論のために設計されたことのない言語で、ある種の型推論システムで構築する必要があります。
ライライアン


2

EclipseのAuto Buildは、私が最も賞賛する機能です。...7年前。今私はそれを当たり前だと思っています。


intellijは、v12でこれを取得するだけです。日食が良くなる唯一のこと
NimChimpsky

2

Xcode 4はセミコロンとタイプミスを修正し、矢印を使用してエラーの発生方法を示します。

例えば:

NSString *a = [[NSString alloc] init];
[a release];
int l = [a length];

を使用できない理由を示す矢印が[a release]to [a length]から描画されます[a length]


この動作は、clang静的アナライザーに依存します。個別のコマンドとして実行し、ブラウザで出力を表示できます。派手な矢印はありません。
ウィル

1

DevExpressのCodeRushなどのコードテンプレートと拡張。C#ではDependencyProperty、構文は冗長になる可能性があるため、aを作成するのが大変です。ただし、「dp」と入力するだけで、タイプ、名前、デフォルト値を入力するスニペットに似たものが表示されます。必要な「使用」ステートメントを追加し、メモリが提供される場合はプロジェクト参照を追加します。

利点は、使用するINotifyPropertyChangedプロパティの単純な実装など、テンプレートにプロパティの名前とタイプを単純に与える(別のエキスパンダーがそれを処理しなかった場合)、頻繁に再利用または書き換えるコード用に独自のテンプレートを作成することです、バッキング変数の作成など、残りを処理します。


1

Pexは、かなりクールな自動化された単体テストの生成を行います。コードをトレースし、分岐点を決定し、条件付きソルバーを使用してすべての可能な分岐にヒットする入力を生成し、結果を繰り返し可能な単体テストとしてエクスポートします。複雑な文字列処理コードに屈辱を与える可能性があります。


いいね!ただし、完全なテストケースではなく、テストデータの生成により多く使用されることを願っています。[テストデータ+期待される出力=テストケース。]つまり、期待される出力を自動的に生成するということは、実際にあなたが考えているものをテストしていないことを意味します。仕様を知っている人が検証する必要があります。
マクニール

1

EclipseでSEttersとgetterを自動的に生成し、同様にインターフェースからimplementsクラスにメソッドを作成します


1

IntelliJ IdeaによるJPAのサポート

DatabaseEntityがあることを述べてください:

@Entity
public class Customer{
[...]
String lasName;
[...]

今、あなたはいくつかのJPAクエリを持っています

Query q = "selecct s from Customer c where c.lasName=:lastName"

しばらくしてから、エンティティ内でタイプミスをして、lasnamelastNameにリファクタリングすることにしました。

そのIDEはJPAクエリもリファクタリングします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.