最近我为我的项目需要编写了一小段代码,代码工作得很好......
下面的代码是一个通用版本....
if (someConditionX)
{
if (Utils.nullOrEmpty(string1))
{
Config config = getConfig();
if (config != null)
{
doA();
}
}
else
{
doB();
}
if (Utils.nullOrEmpty(string2))
{
Config config = getConfig();
if (config != null)
{
doC();
}
}
else
{
doD();
}
}
else if (someConditionY)
{
if (Utils.nullOrEmpty(string1))
{
Config config = getConfig();
if (config != null)
{
doE();
}
}
else
{
doF();
}
if (Utils.nullOrEmpty(string2))
{
Config config = getConfig();
if (config != null)
{
doG();
}
}
else
{
doH();
}
}
我不相信它的编写方式,我觉得有一个改进的余地可以让它变得更好........
请给我一些建议让它变得更好......是否有使用lambdas的范围?? .........
答案 0 :(得分:1)
您可以创建一个界面:
interface Do {
void doSometing();
}
实施它:
class DoA implements Do {
void doSometing() {/* do A */}
}
class DoB implements Do {
void doSometing() {/* do B */}
}
(DoC
....... DoD
......等等)
并使用它:
if (someConditionX) {
process(string1, new DoA(), new DoB());
process(string2, new DoC(), new DoD());
}
其中流程由:
定义void process(String string, Do doA, Do doB) {
if(nullOrEmpty(string)){
if (getConfig() != null) {doA.doSometing(); }
}else {
doB.doSometing();
}
}
至于使用Lambda表达式,您可以使用Lambda实现该接口:
process (string1, ()->{/* implement doSomething */;}, new DoB());