我想重构一个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