まぁ、私のこだわり、になるのかもしれませんが、私自身がプログラムソース を公開するにあたって、これらのソースを書く際の考え方、方針についてざっ とまとめたいと思います。
原則として、Windowsとunix(主にFreeBSD)両方でコンパイル、実行できるように することにしています。そのため、Windows特有のルーチンは極力使わないか、 別サブルーチンにする方向でまとめています。
基本的には文字列を扱わなければUnicode対応は問題ないと思うのですが、 昔から使用してきた自作サブルーチン群(特にコマンドラインの文字列解析周辺) で、どうしても文字列を扱う必要があり、なおかつ1バイト(char型)1文字 が前提でコーディングされていることから、現時点(2010年11月)では、 「マルチバイト文字」の使用が前提となっています。
上記Unicode対応の話とも関連しますが、こちらもwchar_tのサイズがWindows(2バイト) とunix(4バイト)で異なるという現在の状況では、汎用的なソースコードを書くことが 難しいと判断し、現時点では基本的に文字列はchar型で全て処理する方向で 設計しています。
将来的にchar16_t,char32_t型が一般的に使えるようになった時点で、 対応を考えたいと思っていますが、はたしていつになることやら。 自分で定義しちゃおうかしらん・・・
基本的にWindowsではShiftJIS、unixではEUCで記述しています。 相互に使用する場合は、それぞれのソースファイルに対して漢字コードの変換を 行っています。
変数名などに全角文字を使うようなトリッキーなことはしていませんので、 基本的なところでコンパイラが対応していれば、 漢字コードに関係なく動作すると思います。 全てのソースでは確認できていませんが、 基本的にUTF-8でも問題なくコンパイルできると思います。 全角文字は、基本的にプログラム中のコメントやメッセージ表示のための文字列など に使っているだけです。
将来的には全てUTF-8で統一しようとは思っていますが、 現時点ではまだ完全ではありません。
当初よりC言語をメインに使用してきた関係で、C言語(.c)をメインにしています。 サブルーチンやAPIの関係上クラス関数を使用せざるを得ない場合や、 C言語ではうまくコンパイルできない場合 (C++との混合プログラムを書いていると良くある・・・)には、 C++を使う(.cppや.hpp)こともしていますので、微妙にC++言語が混じってます。
C#については、使いこなせればものすごく簡単になることは知識としては知って いるのですが、現状Windows専用(unixでコンパイル出来るんでしょうか・・・) なので、現時点では全く使うことを考えていません。
このファイルは、一言で言えば関数本体の定義を含むヘッダファイルとも 言うべき代物で、一般的に利用されている拡張子でないのは私も認めます。 場合によってはFORTRANで書かれたソースだと誤認識される場合もあります。
元々、何かの本 (本のタイトルが分かりましたら掲載します。C言語で便利な関数を集めた本だ ったと記憶しています)で、 いくつかの関数のソースが載っていたのですが、 簡単な(別ファイルで定義する)関数の使い方として、 Function(関数)の頭文字を取った.fファイルで記述して、 それをincludeしてしまおうという手段が取られていました。
まだ私が.libとか.a(unixの場合)とかが全然分からなくて理解できなかった頃に、 すごく便利だと感じたため、以後よく使用するようになりました。 自分で作る複数のソースファイルから参照される場合には使えない (重複宣言になってエラーになる)のですが、割と手軽に共用サブルーチンが作成 できることもあって、本当にちょっとしたサブルーチンは、 これで書くようになっています。 で、あまりにも汎用的すぎて、複数のソースから参照するようになったものは別途 .cと.hで明確にサブルーチンとして分けるようにしています。
どのタイミングでサブルーチンにするかは割と気まぐれにやってたりするので、 大規模なサブルーチンでも.fのままだったり、逆に本当にちっちゃいものでも .cにしてたりします。場合によっては、.cの中で同名の.fファイルを インクルードしちゃってることもあります。
基本的にはフリー利用にする方向で考えていますので、ソース改変は基本的にはご 自由にどうぞ。どちらかというと、私の作成したソースを理解する方が大変かもし れないです(汗)。
1点だけ、私からの要望という形でお願いしたいのは、 (あまり出るとは思わないですが)亜流バージョンが多数公開されてしまいますと、 全体として使い勝手がとても悪くなると思いますので、 そういうことが無いようにだけお願いします。 また、バグ等の修正は可能な限り私の所までフィードバックして頂ければ、 私の方のバージョンアップで対応出来ると思います。