私と私のチームは、しばらくの間、複数のツールフローに取り組んできました。TCLプロシージャを管理するにはどうすればよいですか?
同じファイルに新しい手順を追加したり、同じディレクトリに新しいファイルを作成したりします。ネストされたプロシージャもたくさんあります。誰かが他の人を呼びます。
手順の数が増え続けるだけで、フローには自分のものを好きな人が少なくとも10人はいます。
私の質問は、これらすべての手順をきちんとした方法で管理するにはどうすればいいですか?
私と私のチームは、しばらくの間、複数のツールフローに取り組んできました。TCLプロシージャを管理するにはどうすればよいですか?
同じファイルに新しい手順を追加したり、同じディレクトリに新しいファイルを作成したりします。ネストされたプロシージャもたくさんあります。誰かが他の人を呼びます。
手順の数が増え続けるだけで、フローには自分のものを好きな人が少なくとも10人はいます。
私の質問は、これらすべての手順をきちんとした方法で管理するにはどうすればいいですか?
TCLに関しては、パッケージと名前空間の作成を探すことができます。それが役に立ったら教えてください。もっと詳細を提供することができます
あなたは、とにかく詰まっていないものとして、一般的なソフトウェアエンジニアリング(ソース管理のファイルを保持するなど)に従うと仮定します。
Tclでは実際にネストされたproc
がサポートされていません。別の手順の中からproc
を呼び出すことはできますが、どのようなスコープも行いません。
コードを「一貫性のあるAPI」に分割することを検討する必要があります。正確にはアプリケーションに依存しますが、まれに単一のプロシージャに過ぎません。特定のダイアログボックスまたはスクリーンははるかに有用な単位です。それはかもしれませんは1つの手順として終了しますが、多くの場合、関連するものです。
これらの一貫性のある部分を特定すると、それらはファイルに格納された内容(通常はファイルごとに一貫性のあるピース)を形成しますが、 (おそらくそれ自身のディレクトリにあります)はかなり意味があります。同時に、各コヒーレントなピースで定義された変数とコマンドを、Tclの名前空間にすべて入れるようにしてください。これは、コードを他の世界の足元を踏むのを止めるためですコード。
これで完成しました。そして、あなたのコヒーレントな部分に安定したAPIがあると思ったら、その部分をTclパッケージにすることができます。これはちょうどより高いレベルの名前とバージョン番号を与えることによって行われます。それは、
package ifneeded YourPackageName 1.0 [list source [file join $dir yourFilename.tcl]]
です:あなたはこのような内容のpkgIndex.tcl
ファイルを作成する(通常は同じディレクトリに)、その後
package provide YourPackageName 1.0
と:あなたは、コヒーレント作品であなたのいずれかのファイルでこれを置きますTclインタプリタでYourPackageName
バージョン1.0
を取得するには、$dir/yourFilename.tcl
ファイルsource
、 $dir
は、現在のパッケージインデックスファイルを含むディレクトリを参照するパッケージインデックスファイルの便利な機能です。その後、残りのコードは「正しいファイルを読む」ことをやめ、「この定義されたAPIを使用する」という考え方で考え始めることができます。 (これはであり、その場合は、TclとC、または純粋なCコードの組み合わせを使用してパッケージを実装することを選択した場合、インデックスファイルを変更してload
を正しいものに変更することができます。それだけでエントリポイントがパッケージにコマンド)やテスト上場されている場合でも
package require YourPackageName
# Give the version if necessary, of course
を次に(自分自身にいくつかのドキュメントを書き、そしてあなたは、非常に行儀作品であることに移行した:)それは実行していることを行います確かにコード。
コヒーレント作品を作ってあなたにいくつかのケースでを助けることができるいくつかの追加の技術があります。特に、TclOO、iTcl、XOTclなどのOOシステムを使用している場合、各クラスはとほぼ確実に一致します。候補の一貫性のある部分です。また、いくつかの関連する一貫性のある断片をパッケージにまとめる方が良い場合もあります。しかし、そこには絶対に厳しいルールはありません。
最後に、Tclはパッケージを見つけるために多くの手法を使用しますが、大部分はauto_path
グローバル変数を使用して調べます。 (あなたのコードの残りの部分はほとんどlibrary
ディレクトリにある場合)、アプリケーションのメインのスクリプトでは、最初のステップの1つとして、このようなものを使用するのが最善です:
lappend auto_path [file join [file dirname [info script]] library]
ます。また、多くの内容を収集することができるpkgIndex.tcl
ファイルを1か所に配置することができます。
上記は非常に短い要約です。うまくいけば、人々が他に何もないならば、ここでもっとよく焦点を絞った質問をすることができるようになります。 –
ありがとうございました。 –
これはかなり広い質問です。あなたはSCMS(ソースコード管理システム)を使用していますか?ね、水銀、化石? –