今天 review 了一个 javaer 写的 Python 代码,真的是要吐了

一个 init 里面写了一百个参数,下面紧跟着一百个 self
纯属被 java 的 get set 洗脑了

纯粹就是水平问题,正常的 java 代码也不会一个构造函数塞 100 个参数啊

虽然整体上我赞同标题,但你贴的这个一点都不 Java 。

首先多参构造在 Java 里典型的做法是 Builder 模式,而不是全塞构造函数。其次就算是 Builder ,也没人会写 100 个参数的 Builder……肯定会拆成不同类型分级构造的。

另外你这里完全没有 getter/setter 相关的内容。

kotliner 表示 "?"

100 多个参数。。。。这哥们不能多创建几个类分割下吗。。纯粹水平问题+1

Javaer 不是一个空的构造方法,new 完后再 set 吗?
谁会弄个 10 个以上的参数的构造方法?

我觉得 java 味是 getter,setter, 各种 factory...

现在 Java 都是用 lombok 注解,在编译的时候自动生成这些东西, 多少年前就不用手写了。

看看你写的

这一看就是是编程助手 tab 写的啊 你们还真以为是手写的 ? 0912 年了 不太相信有人这么蠢

我们 javaer 要么就是 ,要么就是 new 然后 set 的。。

我只知道用 注解,还有什么其他写法吗

怎么感觉在黑 java

一看就是 tab 写的

这个跟 Java 味无关,纯粹是个人水平问题。

真正的 Java 味是不管要做什么功能,先定义一堆对象,建几十个类再说,然后往里面套一堆设计模式,最后每个类就几十行代码,关键是自己还认为很优雅......

java 不都传对象嘛?这和 java 没关系吧

真要写这种不会用 lombok ,写个 NoArg 和 AllArg 的注解么?

javaer 写啥都是 java 味儿这个没问题,但是截图这个不是 java 味儿,我体会到的 java 味是各种包装,各种抽象,各种继承
javaer 切换到其他语言确实很难改变这些习惯,因为 java 纯面向对象,虽然后面有了 lambda 表达式,但是用起来和 rust 里的闭包 match 等功能不是一个级别

#2 Builder 模式也是屎一样的代码

没见过这种 Java 代码,Java 味儿是搞一个 fluent builder

Foo foo = Foo.fooBuilder()
.setA("XXX")
.setB("XXX")
setC(1)
.build()

这种 java 得搞个 builder 或者叫 factory,反正怎么复杂怎么来

歪个楼,我理解的 Java 味:

  • 所有东西建对象,还没开始写代码先在 model 目录下铺几十个 Java 文件
  • 所有对象不用 public 成员,全部重写 setter 、getter
  • 不管用什么语言,一定要用 Java 的命名风格(文件和类名一致,类名大写驼峰,变量名小写驼峰),即使这语言里的标准风格根本不是这样
  • 先抽象出 Beans 、Adapter 、Factory 、Manager 、Builder 、Delegate 、Runner 、Visitor… 即使是根本没有必要的小项目。然后把本来紧凑的几十行代码掰成几百行,再分散到二十个不同功能的文件里
  • 到处用框架提供的注解,但实际上又不懂 JSR 里的注解

    这和 java 有啥关系? 这不就抽象能力不足

    这也能打上靶啊,你去写 Java 不也是一股 py 味