为什么一些大型项目编译成小型程序集?

JDE*_*JDE 7 .net c#

例如,着名库HtmlAgilityPack源的最后一个版本类似于110 000行C#,并且程序集为132 KB.

https://www.openhub.net/p/htmlagilitypack

我的项目大约是6500行,编译成300 KB的程序集.

我没有广泛关注源代码,但显然不是100K loc可用类.那么大量的代码在做什么呢?

D S*_*ley 3

除了调试与发布模式等差异之外,我怀疑将您的 6,500 行与源代码中的“110,000”行进行比较是有误导性的。

代码行数是一个奇怪的指标。如果您查看按语言进行的细分,您会发现所有项目的 C# 中只有大约 55 个 KLOC (其中只有一个是实际的 Agility Pack 程序集),其中大部分是(我怀疑)大括号和其他“空白”这不会直接在二进制文件中表示。此外,仅浏览一下它,它就不会使用大量自动实现的属性,这些属性使用更少的代码行来实现相同的功能。例如:

internal int _lineposition;

public int LinePosition
{
    get
    {
        return this._lineposition;
    }
    internal set
    {
        this._lineposition = value;
    }
}
Run Code Online (Sandbox Code Playgroud)

相对

public int LinePosition {get; internal set;}
Run Code Online (Sandbox Code Playgroud)

12 行代码与相同数量的编译代码的1 行代码相比。

综上所述,使用代码行数作为程序“大小”的度量有很多注意事项。