我想重構一個if語句與多個子條件。從我目前的嘗試中,我要麼寫兩次條件,要麼寫兩次。我想要一個更清潔的方式。更好的設計爲分支如果語句子條件
這裏是最初的代碼我曾寫道:
if((s[i] >= 'A' && s[i] <= 'Z') || (s[i] >= 'a' && s[i] <= 'z')){ // cipher uppercase letters
bool uppercase = true;
if (s[i] >= 'a' && s[i] <= 'z') { // cipher lowercase letters
bool uppercase = false;
}
printf("%c", cipher_letter(s[i], true, k));
}
else { // do nothing on non-alphabet letters
printf("%c", s[i]);
}
的更清潔的方式,我發現現在是這樣的:
if(s[i] >= 'A' && s[i] <= 'Z') { // cipher uppercase letters
printf("%c", cipher_letter(s[i], true, k));
}
else if (s[i] >= 'a' && s[i] <= 'z') { // cipher lowercase letters
printf("%c", cipher_letter(s[i], false, k));
}
else { // do nothing on non-alphabet letters
printf("%c", s[i]);
}
但後來我不得不重複cipher_letter功能。
什麼樣的設計更好?
你想要做什麼?可能不是關於優化你的解決方案,而是尋找一個完全*新的解決方案。 – Downvoter
@Downvoter我完全贊成。代碼起作用,我只是尋找更好的風格,或者你說整體上更好的解決方案。第二個版本應該明確我在做什麼。 –
如果有人問他們的解決方案是否正確,我不相信他們的解決方案。我不知道你的解決方案是否正確。所以,我會很感激你先說明你的問題,然後展示一個實現。無論如何,你的問題看起來更適合[Code Review](https://codereview.stackexchange.com)。 – Downvoter