PG日誌

受託系 PG が C# の事を書いています

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

ソフトには物理的制約が無いから云々と言うつもりはありません。
でももし本当にソフトウエアが建築と同じならこういうコードはエラーを出してほしいですね。

// 多すぎる引数を持つメソッドがあるクラス
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; // ここでコンパイルエラーが起きる。
           // 命名が適当すぎるためコンパイルできません。
}

なんてのも悪くなさそうですね。
建物の負荷 = 複雑さみたいなイメージです。

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