ソースコードのドキュメント

5 件のメッセージ AndrewBuck, サトシ・ナカモト 2010年7月15日 — 2010年7月18日
AndrewBuck 2010年7月15日 原文 · 個別ページ

他の開発者の皆さん、こんにちは。ようやくUbuntuマシン上でビルド環境を構築でき、ソースコードを少し読んでみました。今のところ気に入っています。プログラムは標準テンプレートライブラリを活用して煩雑なデータ構造コードを避けており、クラス構造もpublic/privateアクセスをうまく使ってモジュール性を促進しているようです。

しかし、本当に不足していると思われるのは、.hファイルと.cppファイル間の適切な構成、そして関数のドキュメントです。Doxygenドキュメントシステムを使って、関数のドキュメントを書き始めたいと思います。私が開発リーダーを務めているゲームOpenDungeonsでもこれを使用しており、大変役立っています。

Doxygenに馴染みのない方のために説明すると、Doxygenはソースファイルを読み取り、自動的に収集する情報(関数のパラメータ、クラスの構成と継承など)と、自分で追加する情報(関数の説明、変数の用途など)を抽出します。すべてのコードを解析した後、相互リンクが充実し閲覧しやすいHTMLファイル群を含むディレクトリを生成します。また、各関数からどのサブ関数が呼ばれるかを示すコールグラフの自動生成も設定できます(依存関係やバグの追跡に役立ちます)。

全体として、Doxygenは優れたシステムであり、セットアップして関数のドキュメント(少なくとも私が理解できるもの)を書き始め、パッチを提供してSVNにアップロードできるようにしたいと考えています。ただし、他の開発者が反対するのであればやりたくないので、始める前にここに投稿しました。やってほしいかどうか教えてください。

編集:既存システムのドキュメントがどのようなものか見たい方のために、OGRE 3Dレンダリングシステムのドキュメントへのリンクを掲載します。ドキュメントの雰囲気をつかむには、上部の「Classes」リンクをクリックして、いくつかのクラスのページを見るのが最良です。

-Buck

外部APIのライブラリではそれが好きだが、コードから察せるように、内部関数に対しては好みではない。各関数の大きな義務的コメントヘッダーはコードを間延びさせ、コメントヘッダーが関数より大きくなるような小さな関数の作成をためらわせる。メンテナンスの手間もかかり、関数の変更にはコメントヘッダーの重複した変更が必要になる。コードをコンパクトに保ち、画面上でより多くのコードを一度に見られるようにしたいのだ。

今の段階でそれらを追加しても、関数を見れば明らかなことしか書かれないだろう。

外部APIはrpc.cppにあり、使用方法のドキュメントはヘルプ文字列に記載されている。

せっかくの提案に水を差してすまない。

init.cppにある。

wxWidgetsアプリなので、main()関数はない。もうすぐあるかもしれない。bitcoindをwxBaseなしでビルドできるようにするのがかなり近いところまで来ている。(init.cppに入る予定だ)

ファイル名を「main.cpp」にしてしまい申し訳ない。別の選択肢としては「core.cpp」がありえた。今さら変更するには遅すぎる。個人的にはまだmain.cppが好みだ。

JSON-RPC関数の推奨使用方法を示すサンプルコード、例えば典型的なオンラインショップのウェブサイトにおける基本的なアカウントシステムの実装が非常に必要だ。ユーザー名をラベルとして使用するgetreceivedbylabel、そのアカウントに保存されたアドレスが使用済みになったら新しいビットコインアドレスに変更する方法などだ。以前フォーラムでサンプルコードの断片を投稿した。(getreceivedbylabalまたはgetnewaddressで検索してほしい)サンプルコードは、入金と支払い送信ができるプレーンなバニラ銀行サイトにできるだろう。

意図的にドキュメント化していないすべてのコマンドをドキュメント化するつもりだとは思わなかった。それらはサポート対象外であり、ユーザーが使用することを想定していない。

ユーザー向けのすべてのコマンドは -? ヘルプに一覧表示されている。

それらはソースコードを読む勇敢なプログラマーだけを対象としている。