コメントとして図を使用してソースコードに注釈を付ける


14

私は、計算幾何学やグラフィックス、およびこれらの種類のトピックに触れる多くの(主にc ++およびjavascript)コードを書くので、視覚図は問題を解決するプロセスの不可欠な部分であることがわかりました。

「ああ、手書きの図をなんらかの方法でコメントとしてコードの一部に添付できたら素晴らしいのではないか」と判断しました。これにより、私が取り組んだものに戻ることができます。数日、数週間、数か月前、そしてはるかに迅速にアルゴリズムを再作成します。

視覚的な学習者として、単純な図はあらゆるタイプの非自明なデータ構造に関する理解と推論に役立つため、これはほとんどすべてのタイプのプログラミングで生産性を向上させる可能性があると感じています。たとえばグラフ。大学でのグラフ理論の授業中、私は実際に図式表現を描くことができるグラフ関係を本当に理解することができただけでした。

そう...

私の知る限り、IDEを使用して写真をコードへのコメントとして保存することはできません。

私や他の誰かが、イメージをbase64バイナリ文字列に変換してコードに挿入できる、かなり使いやすいツールを考え出すことができると考えました。

変換/挿入プロセスを十分に合理化できれば、ダイアグラムと実際のコードの接続がはるかに良くなるため、ノートブックを時系列に検索する必要がなくなります。さらに素晴らしい:IDEのプラグインが自動的に画像を解析して表示します。理論的な観点から、これについて絶対に難しいことはありません。

私の推測では、お気に入りのIDEを拡張し、これらのプラグインを維持する方法を実際に把握するには、余分な時間がかかるので、同じ解析を行う一種のコードポストプロセッサに完全に満足し、画像をレンダリングして、コードをブラウザや何かの中に並べて表示します。私は貿易でjavascriptプログラマーだからです。

人々はどう思いますか?誰もこれにお金を払うでしょうか?私は...するだろう。しかし、私は、私またはかなりの数の同僚がそのようなものにお金を払うかどうかに関係なく、そのようなものが成功する可能性が高い唯一の方法は、オープンソースのリリースを通じてであることを指摘するでしょう。


4
別の方法:デフォルトの画像ビューアで開くローカル画像ファイルへのリンクにコメントを追加します。
Hand-E-Food

私の最大の恐怖は、システムの悪用です。確かに、それは複雑なアルゴリズムにとって意味のある図から始まりますが、誰かが薄っぺらな仕様ドキュメントをクラスのコメントにアップロードするまでにどれくらいかかりますか?あなたがそれを知る前に、プロジェクトと開発者に関連するすべてのものはコードコメントに盛り込まれています。もちろん、強力なシステムは悪用されやすい。必要性はニッチだと思いますが、もしあなたがそのニッチにいるなら、それは非常に便利なツールになるでしょう。
Snixtor

@ Hand-E-Foodナイス!コメント内のファイルURLは、そのままXcodeでクリック可能なリンクとして表示されます。これに関する私の唯一の不満は、相対パスファイルURLを作成することが不可能であるように見えるため、システムを切り替えると、クリック可能なリンクのアスペクトが(おそらく)壊れるということです。
スティーブンルー


画像を使用してHMTLを生成するjavadocを実行します。または、SimpleDocBook、個別のドキュメント、XMLベース、ビジネスルールのコードで参照できる/する必要があります。これは素晴らしい文章を提供し、ソフトウェアコンポーネントとレイヤー(クラス)の分散ではなく、すべてのビジネスロジックの観点からシステムをカバーします。すべての変更要求は、docbook + version / ticket numberへの参照としてwithを使用してコードを追加し、docbookにはchange + ticket numberのリストがあります。完全にカバーされているため機能します。それがあなたの状況にどのように適合するかはわかりません。
ジョープエッ

回答:


6

何についてのVisual Studio用画像挿入プラグインは

別のIDEを使用していて、埋め込み画像をサポートしていないか、それを拡張する時間がない場合は、コメントに画像へのリンクを配置する一方で、画像はリポジトリのどこかに存在します?


それはいいね。私は仕事でVSを使用しているので、それを試してみるかもしれません!ありがとう。画像をレポジトリに保存し、何らかの方法でリンクすることは、これを実現するための1つの方法ですが、確実に実装するにはまだまだ手間がかかりすぎると確信しています。私はかなり怠け者のプログラマーです。
スティーブンルー

レポブラウジング(例えばVCSレポWebインターフェイス)のほとんどのメソッドとレポに写真を保存するでしょうも仕事
スティーブン・呂

4

あなたがいない場合はASCIIの芸術家、あなたが使用することができました。doxygenとともに文書化ツールとしてドット/ graphvizのそれに統合します。

これにより、グラフのテキスト記述を作成し、ドキュメントでレンダリングできます。

たとえば、この説明:

digraph finite_state_machine {
    rankdir=LR;
    size="8,5"
    node [shape = doublecircle]; LR_0 LR_3 LR_4 LR_8;
    node [shape = circle];
    LR_0 -> LR_2 [ label = "SS(B)" ];
    LR_0 -> LR_1 [ label = "SS(S)" ];
    LR_1 -> LR_3 [ label = "S($end)" ];
    LR_2 -> LR_6 [ label = "SS(b)" ];
    LR_2 -> LR_5 [ label = "SS(a)" ];
    LR_2 -> LR_4 [ label = "S(A)" ];
    LR_5 -> LR_7 [ label = "S(b)" ];
    LR_5 -> LR_5 [ label = "S(a)" ];
    LR_6 -> LR_6 [ label = "S(b)" ];
    LR_6 -> LR_5 [ label = "S(a)" ];
    LR_7 -> LR_8 [ label = "S(b)" ];
    LR_7 -> LR_5 [ label = "S(a)" ];
    LR_8 -> LR_6 [ label = "S(b)" ];
    LR_8 -> LR_5 [ label = "S(a)" ];
}

次のようにレンダリングします:

ここに画像の説明を入力してください


それはクールだ!Java環境をサポートするツールはありますか?私は、例えば、このモジョにこれのために何に似ているのサポートを参照することはできません。graphviz-maven-plugin.bryon.us/dot-mojo.html。他のすべても.dotファイルをサポートしているだけです。
オリゴフレン

2

emacsアーティストモードを試すことができます。画像そのものではなくアスキーアートを行うので、探しているものとそうでないものがあります。特に、IDEが固定幅フォントを実行しない場合、役に立ちません。プレーンテキストなので、バージョン管理で非常にうまく機能します。

使用されているアーティストモードのスクリーンキャスト以下に示します。興味があるかどうかにかかわらず、アイデアを得ることができます。

emacsでアーティストモードを起動するには、Alt-xを実行し、artist-modeと入力してReturnキーを押します。マウスの中ボタンでメニューが表示されます。カットアンドペーストのキーバインドは、デフォルトでは通常のウィンドウのキーバインドではありませんが、CUAモードをオンにして変更できます。


すごい...印象的です。私のコードには、実際にはASCIIダイアグラムスタイルのコメントがいくつかあります。時間がかかりすぎます。テクノロジーはすでに存在しているため、より優れたツールを使用したいと思います。私は時々Vimでコードを記述していましたが、実際のIDEと比較してコード認識スクリプトが不足していました。しかし、この古い学校のテクニックを見せてくれてありがとう!
スティーブンルー

数年後に訪れて以来、私は箱型図を素早く組み立てるのを助けるためにいくつかのVimグッズを集めました。ASCII文字でもユニコードボックス文字でも、これはクールで便利なコメントでコードを装飾する非常にクールな方法です。ただし、Vimにはすぐに使用できるものはありません。
スティーブンルー

1

人々はどう思いますか?誰もこれにお金を払うでしょうか?私は...するだろう。

ZOMG、私はあなたと同様のカテゴリーに属し、IDEでそのような機能を直接好きになります。

今のところ、私はこのような多くのASCII「アート」を行う傾向があります。

// ******************************************************
// *v3            |e5          v4*           |e6      v6*
// *              |              *           |          *
// *              |              *           |          *
// *              |              *           |          *
// *              |              *           |p1        *
// *              |            e1*-----------~----------*
// *              |              *           |          *
// *              |              *           |          *
// *              |              *           |          *
// *              |              *           |          *
// *cen           |p0          v0*           |        v5*
// *--------------~--------------************************
// *e4            |              *           |e7        *
// *              |              *           |          *
// *              |              *           |          *
// *              |              *           |          *
// *              |              *           |p2        *
// *              |            e2*-----------~----------*
// *              |              *           |          *
// *              |              *           |          *
// *              |              *           |          *
// *              |              *           |          *
// *v2            |e3          v1*           |e8      v7*
// ******************************************************

私が見つけた主な価値は、特に新しいメッシュアルゴリズムにメッシュなどの複雑なトラバーサルを使用している場合に、ビジュアルダイアグラムに対応する変数名を見ることです。回答の1つに示されているこのdoxygenグラフを生成するトリックは非常にクールです-もっと試してみるべきです。

視覚的にも通信しやすいものがたくさんありますが、必ずしもグラフを使用しているわけでもありません。例:

ここに画像の説明を入力してください

...またはこれ(Pixarで使用されている標準のCCサブディビジョンと「フックサブディビジョン」を呼び出しているアルゴリズムの比較):

ここに画像の説明を入力してください

これらの操作が何をするのか、そしてコード内でどのように異なるのかを見るだけで、コードに非常に多くのコンテキストが与えられ、いくつかの事柄が視覚的に最もよく示されるためです。写真は本当に千の言葉を捉えることができます。

そのため、コードと画像を並べて表示できるIDEがあり、ソースコードに画像を埋め込むことができるのは夢のようです。

特に、新しいアルゴリズムを発明するとき、アルゴリズムのステップに直接入るのではなく、アルゴリズムのステップに入らずに、非常に正確に(技術的な観点から、正確にユーザーの観点から)それらを記述する良い方法を見つけることは困難です。これらの種類の前後の画像は、アルゴリズムからすぐに期待できるものを完全に示す傾向があります。

私が夢見るもう1つのことは、コードをステップ実行してアルゴリズムを確認しながら結果を視覚的に確認するなど、一部のデータ型をデバッガーに出力できるようにプログラムできるビジュアルデバッガーです。私が発明しようとしているのは、すべてのステップで正しく動作し、紙の上にそれを描いた方法を一致させることです。たとえば、デバッガのウォッチウィンドウでメッシュデータ構造の出力にレンダリングイメージを作成します。ビューなどをその場で回転させることさえできれば理想的です。

また、1000のプラグインを持つゆるいチームによって書かれた非常に大規模なコードベース(数千万のLOC)で作業する場合、時々、目立たないように探しているコードを実行する方法を見つけるだけで悪夢になります。 UIからはめったに使用されないプラグイン。そのような場合、コードがユーザーインターフェイスからそのコードを実際に呼び出す方法を示すミニチュアスクリーンショットを埋め込むことができれば素晴らしいでしょう(時々、時代遅れになる傾向がありますが、通常、UIはそれほど不安定ではありません)以前のスクリーンショットを役に立たないようにバージョン)。

誰もこれにお金を払うでしょうか?私は...するだろう。

とにかく、そう、完全に!それが欲しいです!!!


1
恐ろしい写真と記事のおかげで(おそらく答えよりもコメントの方が多いかもしれませんが)!私は最近、クールなグラフィックやシミュレーションから完全に休憩し、次世代のデバッグおよびトレースツールを構築することにしました。あなたの夢は、約....私が夢見るものと非常に似ている
スティーブン・呂

1
@StevenLuビジュアルデバッガーで提案しているこの種のIDEを作成することをよく夢見ていました(ただし、デバッガー側をうまく実行するプラグインソリューションを想像できなかったため、ゼロから行うことを考えていました)。ええ-その答えは一種のコメントだったと思います...しかし、私は他の誰かがそれを望んでいるのを見てとてもうれしかったです。過去の私の同僚はより技術的で数学的なタイプでした-彼らはすべてを視覚的に伝えたいという私の欲求を十分に理解していませんでした。

1
おそらくそれを見るための擬似科学的な方法の1つは、視覚システムが人間として持っている最高の帯域幅のインターフェースから遠く離れていることであり、入力としてのみ使用できることは残念ですが、脳のメモリアクセスにより、視覚的な形式は、文書化と抽象的な概念の普及に明確な利点をもたらします。...そのために、コンパイルされたアプリケーションが内部の構造化された視覚的表現を自動生成できるように、IDEに依存しないツール(Unixの哲学に従って)に取り組んでいます。
スティーブンルー

0

図やその他のものをドキュメントに追加できるLiterate Programmingのユースケースのように聞こえます。


なぜ下票なのか?
モニカを回復-M.シュレーダー

私はあなたを支持しました。これは非常に良い観察であり、私が議論していることはほぼ完全にその傘下にあります。
スティーブンルー

1
これは実際には答えを提供しないので、私も投票しました。彼は明らかに、プログラム全体をリテラシープログラミングスタイルに切り替えたくないのです。リテラシープログラミングは、たとえプログラミングを行ったとしても、プログラミングへのアプローチに過ぎません。必ずしも図や写真がサポートされているわけではありません。
-Timmmm

0

Doxygenでは、次のようなコメントに画像を挿入できます。

  /*! Here is a snapshot of my new application:
   *  \image html application.jpg
   */

残念ながら、これらの画像をインラインで表示するIDEはありませんが、たとえば、VSCode拡張機能を作成してそれを行うのはそれほど難しくないと思います。

また、私はすでに別の構文でこれをサポートする1つのVSCode延長見つけたcommentimgを。これはホバーを介してそれを行います:

VSCodeは、インラインイメージを許可する機能(「コードインセット」)を追加していますが、まだ準備が整っていないようです。

サンプル拡張機能のスクリーンショットです(実際には見つかりませんでした-コードインセットAPIがまだリリースされていないため、おそらくまだリリースされていません)

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