当前位置: 首页 > 知识库问答 >
问题:

Java编码风格更加简洁

毕嘉
2023-03-14

如何在不创建其他对象的情况下用Java压缩这些代码?

myObjectNumberOne.setTitle("title");
myObjectNumberOne.setBody("body");
myObjectNumberOne.setAutostart(true);
myObjectNumberOne.mySubObject1.setProp1("prop1");
myObjectNumberOne.mySubObject1.setProp2("prop2");
myObjectNumberOne.setFooter("footer");

和其他语言一样

with (myObjectNumberOne) {
  setTitle("title");
  setBody("body");
  setAutostart(true);
  with (mySubObject1) {
    setProp1("prop1");
    setProp2("prop2");
  }
  setFooter("footer");    
}

无需修改任何类或使用任何模式(生成器或构造函数)。我的意思是为了写更少的代码

共有3个答案

淳于坚壁
2023-03-14

也许可以为mySubObject创建多个构造函数

 public MySubObject(String prop1){
     this.prop1 = prop1;
 }

 public MySubObject(String prop1, String prop2){
     this.prop1 = prop1;
     this.prop2 = prop2;
 }
 .
 .
 .

然后你可以替换

  with (mySubObject1) {
    setProp1("prop1");
    setProp2("prop2");
  }

用类似的东西:

with (myObjectNumberOne) {
  setTitle("title");
  setBody("body");
  setAutostart(true);
  setMySubObject(new MySubObject("prop1", "prop2"));
  setFooter("footer");    
}

您还可以签出varargs:https://www.baeldung.com/java-varargs

戚兴思
2023-03-14

在类中创建一个内部类并将其命名为Builder以下是一个简单的示例:

public class Car {

    private  String name;
    private int minSpeed;
    private int maxSpeed;
    private int mileAge;
    private String owner;


    public String getName(){
        return name;
    }
    public String getOwner(){
        return owner;
    }


    public int getMaxSpeed(){
        return maxSpeed;
    }
    public int getMinSpeed(){
        return minSpeed;
    }
    public int getMileAge(){
        return mileAge;
    }

    public static CarBuilder create(){
        return new Car().new CarBuilder();
    }

    public class CarBuilder {
        public CarBuilder setName(String name){
            Car.this.name = name;
            return this;
        }

        public CarBuilder setOwner(String owner){
            Car.this.owner = owner;
            return this;
        }

        public CarBuilder setMileAge(int mileAge){
            Car.this.mileAge = mileAge;
            return this;
        }

        public Car build(){
            return Car.this;
        }


    }


}

然后你可以使用它:

Car car = Car.create()
.setName("Audi")
.setMileAge(200)
.setOwner("John")
.build();
壤驷华美
2023-03-14

让所有设置器返回对象本身。例如:

MyObject setTitle(String s){
    this.title = s;
    return this;
}

这里我假设您的类名为MyObject。在对所有其他方法也执行此操作后,请改为执行此操作:

myObjectNumberOne.setTitle("title")
.setBody("body")
.setAutostart(true)
.mySubObject1.setProp1("prop1")
.mySubObject1.setProp2("prop2")
.setFooter("footer");

编辑:这叫做方法链接。

 类似资料:
  • 如果有人问起 Python 程序员他们最喜欢 Python 哪一点,他们一定会提到 Python 的高可读性。确实,对于 Python 来说,其高可读性一直是 Python 这门语言设计的核心。一个不争的事实是,相对于写代码而言,读代码才是更加平常的事情。 Python 代码有高可读性的一个原因就是其有着相对而言更加完善的编码风格准则和 「Python化」习语。 当 Python 老手(Pytho

  • 语法 UTF-8编码 Unix换行符,每行120字符 缩进符用4个空格,需要设定编辑器tab转4空格 花括号独占一行 函数与函数间使用一个空行分割 能使用静态内联(static sw_inline)就不要用宏 能用enum枚举就不要用宏 代码可读性比性能更重要 标签 label必须以下划线开头,用于goto语句 label必须独占一行 枚举 命名必须为sw{模块名称}_{作用},如:swServe

  • 这些是 Electron 编码风格指南。 您可以运行 npm run lint 来显示 cpplint 和eslint 检测到的任何样式问题。 通用代码 用换行符结束文件。 按照如下顺序排列 node 模块的 require 代码 内置Node模块(如 path) 内置Electron模块(如 ipc、app) 本地模块(使用相对路径) 按照如下顺序排列类的属性 类方法和属性 (开始于 @ 的方法

  • 问题内容: 我发现阅读编码风格指南是了解某种语言及其特性的最佳方法。我一直在努力寻找Java的良好文档,并立即回答一些问题。 首先,长行的惯例是什么?用Java和C / C ++编写都使我在这一点上产生很多困惑。 其次,创建自定义异常类的准则是什么?我通常会抛出一个现有的异常,而不是创建自己的异常。通常执行自定义异常创建吗? 问题答案: 查看Java TM编程语言 的官方代码约定。

  • 良好的编码风格,有助于代码的阅读、调试和修改。虽然 Verilog 代码可以在保证语法正确的前提下任意编写,但是潦草的编码风格往往是一锤子买卖。有时回看自己编写的代码,既看不出信号的意义,也不了解模块的功能,还得从逻辑上一步步分析,就会消耗大量的时间和精力去消化,严重影响设计进度。 为了不让别人或自己由衷的感叹出:这特喵的是哪个"小傻宝"写的代码!下面对编码风格进行一定意义上的建议。 关于命名 信

  • 问题内容: Python教程说:“在运算符周围和逗号后使用空格,但不要直接在括号结构内使用:a = f(1,2)+ g(3,4)”。“不直接在包围结构内”到底是什么意思? 问题答案: 这可能来自PEP 8-Python代码样式指南 。具体来说,请参见“表达式和语句中的空白”部分。 从该部分: