好奇 Java 味是什么味

176 天前
 GotKiCry
我把 Time 处理相关的写到 TimeUtil 里面,File 相关写到 FileUtil 里面。这样算 Java 味吗。
一直是在用 Java 和 Kotlin 写 Android 代码,写 Python 脚本如果是长期项目我是尽量会把代码抽离出来,不知道这样的操作是不是 Java 味太重了🤔🤔🤔
6640 次点击
所在节点    程序员
70 条回复
mahaoqu
176 天前
大概就这种:

public interface Subject {
public void attach(Observer observer);
public void detach(Observer observer);
public void notifyObservers();
}

public interface Observer {
public void update(Subject subject);
}

public class HelloWorldSubject implements Subject {

private ArrayList<Observer> observers;
private String str;

public HelloWorldSubject() {
super();

observers = new ArrayList<Observer>();
}

public void attach(Observer observer) {
observers.add(observer);
}

public void detach(Observer observer) {
observers.remove(observer);
}

public void notifyObservers() {
Iterator<Observer> iter = observers.iterator();

while (iter.hasNext()) {
Observer observer = iter.next();
observer.update(this);
}
}

public String getStr() {
return str;
}

public void setStr(String str) {
this.str = str;
notifyObservers();
}
}

public class HelloWorldObserver implements Observer {

public void update(Subject subject) {
HelloWorldSubject sub = (HelloWorldSubject)subject;
System.out.println(sub.getStr());
}
}

public interface Command {
void execute();
}

public class HelloWorldCommand implements Command {

private HelloWorldSubject subject;

public HelloWorldCommand(Subject subject) {
super();

this.subject = (HelloWorldSubject)subject;
}

public void execute() {
subject.setStr("hello world");
}
}

public interface AbstractFactory {
public Subject createSubject();
public Observer createObserver();
public Command createCommand(Subject subject);
}

public class HelloWorldFactory implements AbstractFactory {

public Subject createSubject() {
return new HelloWorldSubject();
}

public Observer createObserver() {
return new HelloWorldObserver();
}

public Command createCommand(Subject subject) {
return new HelloWorldCommand(subject);
}
}

public class FactoryMakerSingleton {

private static FactoryMakerSingleton instance = null;
private AbstractFactory factory;

private FactoryMakerSingleton() {
factory = new HelloWorldFactory();
}

public static synchronized FactoryMakerSingleton getInstance() {
if (instance == null) {
instance = new FactoryMakerSingleton();
}

return instance;
}

public AbstractFactory getFactory() {
return factory;
}
}

public class AbuseDesignPatterns {

public static void main(String[] args) {
AbstractFactory factory = FactoryMakerSingleton.getInstance().getFactory();

Subject subject = factory.createSubject();
subject.attach(factory.createObserver());

Command command = factory.createCommand(subject);

command.execute();
}
}
NessajCN
176 天前
Jvav 味儿比二次元味儿都冲
如果你还需要别人来告诉你啥是 Jvav 味儿而不能靠自己一眼分辨,
那说明你自己早就腌制入味了

就好像抽烟的人旁人一闻可知,他自己却总是自我感觉良好
GotKiCry
176 天前
@NessajCN emmm 。主要我接触其他语言比较少,除了 Java 相关只接触过 Python 和稍微学习过 Go
wxw752
176 天前
你糊涂呀,这么好的话题不在上班时间发。
sagaxu
176 天前
读取某个文件,正常味道的语言
open().read()
fd = open(...); read(fd, ...);
File(...).readAll()
ioutils.read(...)

Java 味儿,来,先学一下 reader, buffered reader, inputstream, buffered input stream ,然后再研究用哪个,中间包的用完了该不该 close 。

设计时就确定只有一个 implementation ,也要强行定义 interface ,还要定义一堆一模一样的 vo/dto...,不要问,问就是业界规范,大家都这么干。
GotKiCry
176 天前
@wxw752 还在上班中,只是快下班了扫了一眼论坛😂
GotKiCry
176 天前
@sagaxu Java 这些 Reader Stream 我自己也难绷
dranfree
176 天前
Java 味就是啰嗦,代码写起来像老太太的裹脚布,又臭又长……
murmur
176 天前
@sagaxu java 也有 hutool ,别黑了,java 味就是标准的 controller bean service ,真落在业务逻辑,都是调库,谁手搓原生代码啊
murmur
176 天前
@dranfree 跟 objc 比 java 都是弟弟

java

person.fuck(personb, true, true)

obj-c

[person haveSexualIntercorseWith]:personB healthCheckBeforeYouDid: YES useSomethingToProtectYourSafety: YES

比又长又臭 java 真不配
fulln
176 天前
不懂,说分多个文件 java 味十足的, 要是看了「重构」 这个本书, 那不得气得跳脚...
retrocode
176 天前
java 味 --> 指一个简单 crud 先来个 dto/vo/cotroller/service/serviceimpl/dao/daoimpl/mapper/mapper.xml 大礼包
debuggerx
176 天前
@murmur 这不叫味儿 这是 objc 本身语法和命名规范就这样
aboutier
176 天前
huigeer
176 天前
居然没有人说 lamuda 表达式,
fox0001
176 天前
就是代码繁琐
aaniao002
176 天前
哪门语言需要 ide 来自动生成代码。
lisongeee
176 天前
搬一下我 1 坤年之前一个回复 https://v2ex.com/t/872064#r_11975008

最 java 味应该是一个项目里写 99% 都用不到的 额外的 空的 一堆什么也不干的 setter/getter
debuggerx
176 天前
我受不了的 java 味:
1. 无意义的抽象和继承,简单问题复杂化,自以为是预留扩展性,然而绝大多数情况下非但用不到,反而是增加了复杂度和项目维护成本(当然有人把这种操作当作防御式编程增加自身不可替代性,实际结果往往不过是叠屎山)
2. 滥用多线程。有些人似乎觉得 java 不写多线程很 low ,结果滥用多线程,没必要的时候也要强上,然而很多 javaer 实际的心智水平根本玩不转多线程,要么自以为提高效率的多线程实际比一般写法还慢,要么生产出现线程安全甚至死锁,纯纯又菜又爱玩自讨苦吃
3. 滥用架构。web 服务必上 redis ,设计必须拆成微服务,看似追求最近技术方案,然而却抱着 mysql5.7 、centos6 不放,整天还研究 java1.8 的 jvm 调参,就不想想守着这堆破烂搞架构的路子能走多远。
4. 把一些 java 本身缺陷导致的东西当作唯一正确性去要求别的语言和框架,比如语法贫瘠导致的各种设计模式,比如灵活性不足而不得不使用的反射技术,比如落后的线程模型催生的一堆教条,很多新的语言和框架从本身就已经解决或者规避了,有些 javaer 用的时候却还习惯性往上靠,靠的不对劲了还觉得是那些语言和框架不行,反正就是 java 祖宗之法不可变……
lisongeee
176 天前
关于我在 #18 发的评论的佐证评论 https://v2ex.com/t/872064?p=2#r_11976203

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1118514

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX