kzrnm / ac-library-csharp

41 stars 5 forks source link

McfGraphなどのグラフのクラスの命名について #70

Closed universato closed 2 years ago

universato commented 3 years ago

本題

最大流はMFGraph、最小費用流はMcfGraphというクラス名になっています。
この2つでクラス名の規則が異なっていて、気になったのでIssueを立てました。 他のDSUやSCCGraphを考えると、最小費用流をMCFGraphに変更するとスタイルが整合します。

なお、本家AtCoderのC++ライブラリの命名の影響でMFGraphのような名称になっていると思いますが、
本家のC++と異なり、アンダースコアのないキャメルケースは区切りがわかりにくく、略語が何なのかもわかりにくいです。
以上を踏まえて、いっそクラス名とファイル名をSCC, MaxFlow, MinCostFlow等に統一してしまった方が、いいかもしれません。

Lang class file
C# DSU DSU URL
C# SCCGraph SCCGraph URL
C# MFGraph MaxFlow URL
C# McfGraph MinCostFlow URL
C# Segtree Segtree URL
C# LazySegtree LazySegtree URL
C# TwoSat TwoSat URL
C# ModInt ModInt URL

参考

参考までに、他の言語の命名状況を貼っておきます。

Lang SCC MaxFlow MinCostFlow
C++ scc_graph mf_graph mcf_graph
C# SCCGraph MFGraph McfGraph
Python SCCGprah MFGraph MCFGraph
Rust SccGraph MfGraph MinCostFlowGraph
Go SccGraph --- ---
D SccGraph MfGraph McfGraph
Java SCC MaxFlow MinCostFlow
Kotolin SCC MaxFlow MinCostFlow
Ruby SCC MaxFlow MinCostFlow
Crystal SCC MaxFlow MinCostFlow

追記

大文字の使用規則 - Framework Design Guidelines | Microsoft Docs

パラメーター名を除くすべての識別子に使用される PascalCasing (パスカル ケース) 規則の場合、次の例に示すように各単語の最初の文字 (2 文字を超える頭字語を含む) を大文字にします。 PropertyDescriptor HtmlTag

2 文字の頭字語には、特別な大文字と小文字の区別が使用され、次の識別子に示すように、両方の文字を大文字にします。 IOStream

もし名称変更するなら早めにIssue立てた方がいいかなって思ったのもあって、無知に色々と雑にIssueを立ててしまいましたが、こういったルールをとるものもあるんですね。

kzrnm commented 2 years ago

パスカルケースに変更済みなのでclose