最近,我为项目需求写了一小段代码,代码工作正常。
下面的代码是通用版本。
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 ?? .........
最佳答案
您可以创建类似以下的界面:
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());
关于java - 计算流程相同,但功能不同,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44714467/