ソフトがよく建築に例えられるけど

ソフトには物理的制約が無いから云々と言うつもりはありません。

でももし本当にソフトウエアが建築と同じならこういうコードはエラーを出してほしいと思うことがあります。

// 多すぎる引数を持つメソッドがあるクラス
public class ManyArgs
{
    public void Sample(string p1, string p2, string p3.. string p15) { }
    // コンパイルエラーになる
    //  → Error : 引数が多すぎます
}

とか、

// 複雑すぎるメソッドを持つクラス
public class Complexity
{
    public void Sample(string str)
    {
        if(... || ... || ... || ... && ...)
        {
            if(... || ... || ... && ... || ...)
            {
                if(!...)
                {
                // (以下省略)
    // これもコンパイルエラーにしてほしい
    //  → Error : 複雑すぎます
        
// 利用者側コード
public void Main(string[] args)
{
    try
    {
        var comp = new Complexity(); // ここで例外発生
    }
    catch(ImplementationTooComplexityException ex)
    {
        Console.WriteLine(ex.ToString());
        // 万が一そういった外部資源へアクセスしてしまった場合
        // Complexityには複雑すぎるメソッドが含まれているため
        // インスタンス化に失敗しました。と例外が発生する。
    }
}

なんて。あとは、

public void Main(string[] args)
{
    int a; // ここでコンパイルエラーが起きる。
           // 命名が適当すぎるためコンパイルできません。
}

なんてのも悪くなさそうですね。

構造物への負荷 = 複雑さみたいなイメージです。

最近はこの手のものはほぼ程度検出できますが、いちいち指摘するのが面倒ですもんね。