減少if語句

2021-07-13 17:03:46 字數 1979 閱讀 6185

原文

if語句的缺點:出現if語句的**會越改越糟,變得越來越難維護。

1.函式引數中有bool變數

實際上是將兩個不同的功能繫結到了乙個函式中,解決方法是用兩個函式代替乙個函式。

1)

void foo(int arg0, bool flag)

else

}2)void foo(int arg0)

void goo(int arg0)

2.swicth case語句

增加新的型別就要增加乙個case,可以用多型來實現。

1)

#include enum type

;struct animal

;void yell(struct animal *a)

}int main()

; dog.yell(&dog);

struct animal cat = ;

cat.yell(&cat);

}

2)

#include struct animal

;struct cat

;void catyell(struct animal *a)

struct dog

;void dogyell(struct animal *a)

int main()

; dog.a.yell = dogyell;

struct cat cat = ;

cat.a.yell = catyell;

struct animal *pa = null;

pa = (struct animal *)&dog;

pa->yell(pa);

pa = (struct animal *)&cat;

pa->yell(pa);

}

3)

#include #include #define offsetof(class, member) ((size_t)&(((class *)0)->member))

#define containerof(ptr, class, member) \

()struct animal

;struct cat

;void catyell(struct animal *a)

struct dog

;void dogyell(struct animal *a)

int main()

; dog.speed = 100;

dog.a.yell = dogyell;

struct cat cat = ;

strncpy(cat.color, "red", sizeof(cat.color));

cat.a.yell = catyell;

struct animal *pa[2];

pa[0] = &dog.a;

pa[1] = &cat.a;

int i = 0;

for(i = 0; i < 2; i++)

}

3.if語句樹

使用邏輯表示式代替

1)

if(a)}2)

if(a && b)

條件語句中減少用else

條件語句是程式中的極其核心的部分。在處理一些複雜的條件語句的時候,可能會套用多層的if,在程式中也可能會用到else。但是如果你用了2層if 3層if,或者更多的時候,則不要用else,因為這樣會讓本來簡單的程式的原理,變得十分複雜。乙個月之後再來讀這段程式,自己都會讀不懂。以php以例,如果遇到這...

用State模式減少if elseif語句

注重這種模式的理解!我們在寫程式的過程中會遇到很多的邏輯判斷,一般都是用if else if.else if swith case等來做判斷,然後根據結果做一下分支處理,這樣寫雖然方便,但會增加以後的維護難度,假如有上百個if else if判斷,估計後期維護的人看到 頭都大了。像這種情況可以用st...

程式中減少使用 if 語句的策略

if語句會觸發以下問題 if 條件1 處理語句1 elseif 條件2 處理語句2 else 處理語句31 if 語句的 易越改越混亂。處理語句 越來越多,耦合越來越複雜,就會很難讀。進一步巢狀 if 語句與本地 return 的濫用情況也很常見,很難搞懂業務邏輯是選擇了哪種路徑。2 if 語句缺失...