Closed kzrnm closed 2 years ago
FloorSum, InvMod などはpartialにせず、単一の Math.cs に記載する。
C++ 版とはファイルの切り方が異なりますが、C++ のファイル分けは include
の関係があるため参考にはあまりならないと考えています。
String
や Math
の1ファイルが長くなるのは可読性に欠ける上、一つのアルゴリズムで一つのファイルを使用するのは理に適っているので、わざわざ纏める意味はないのではないでしょうか?
種別ごとに分類する
最初は corefx
での実装に倣い、名前空間でディレクトリを切るべきと考えていたのでこのような構造になっています。しかし、競技プログラミングにおいて使用するという制約からこのような名前空間の切り分けになっていることを考慮に入れると切り分けた方が良いと思います。(現に Algebra
は切り分けていますし、少なくともどちらかに統一するべきではありますね。)
同様に、Internal
ディレクトリをそれぞれのディレクトリに作ることについても賛成です。競技プログラミングにおいて、内部で使っている実装を外部から参照したいというニーズがある影響で internal
アクセシビリティが使用できていないため、このような設計になっていると考えると、それぞれの直下に internal
を作るのは理に適っていると感じます。
また、Bit
については
└── Bit
└── Internal
と切った方が統一されて良いと感じます。
ディレクトリの分類については賛成いただけたのでプルリク出しますね。
Math.csなどをまとめるかは考え方の問題なので、自分はどちらでも良いと思ってます。
もはや何もかも違うので close
ディレクトリ構成について提案です。
種別ごとに分類する
https://atcoder.github.io/ac-library/document_ja/
C++ 版ドキュメントの分類と合わせて
とわける。
Internal ディレクトリをそれぞれのディレクトリに作る
Internal
ディレクトリもそれぞれのディレクトリ以下に作る。internal_bit.hpp
のような複数のファイルから呼ばれるようなファイルはプロジェクト直下のInternal
ディレクトリに作る。FloorSum
,InvMod
などはpartialにせず、単一のMath.cs
に記載する。単一の関数で済むので一つのファイルでも良いのではないでしょうか。
String.cs
も同様。現状
提案