V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
GotKiCry
V2EX  ›  程序员

好奇 Java 味是什么味

  •  
  •   GotKiCry · 11 小时 25 分钟前 · 1814 次点击
    我把 Time 处理相关的写到 TimeUtil 里面,File 相关写到 FileUtil 里面。这样算 Java 味吗。
    一直是在用 Java 和 Kotlin 写 Android 代码,写 Python 脚本如果是长期项目我是尽量会把代码抽离出来,不知道这样的操作是不是 Java 味太重了🤔🤔🤔
    40 条回复    2025-03-15 02:36:24 +08:00
    mahaoqu
        1
    mahaoqu  
       11 小时 20 分钟前   ❤️ 6
    大概就这种:

    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
        2
    NessajCN  
       11 小时 16 分钟前 via Android
    Jvav 味儿比二次元味儿都冲
    如果你还需要别人来告诉你啥是 Jvav 味儿而不能靠自己一眼分辨,
    那说明你自己早就腌制入味了

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

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

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

    java

    person.fuck(personb, true, true)

    obj-c

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

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

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

    jeesk
        22
    jeesk  
       10 小时 18 分钟前 via Android
    @fulln

    你把每个 class 都写一个文件,有人要骂你。
    如果你把一个文件写了多个 class 也有人要骂你。

    我就问问怎么才不挨骂?
    sthwrong
        23
    sthwrong  
       10 小时 14 分钟前
    特性啊,啰嗦啊,套娃啊什么的都好改,毕竟也不是没改。最恶心的其实是守旧,他发任他发,我用 java8.
    buffzty
        24
    buffzty  
       10 小时 14 分钟前
    @mahaoqu 你是 javer 届的叛徒, 罚你以后 Xmx16g
    mmdsun
        25
    mmdsun  
       9 小时 22 分钟前
    上次我看到这词的时候还是吐槽说:go 语言 sdk java 味:
    https://www.v2ex.com/t/1036033
    iorilu
        26
    iorilu  
       9 小时 18 分钟前
    就是一看几十个文件, 实际上核心代码就几十行
    NessajCN
        27
    NessajCN  
       8 小时 51 分钟前 via Android
    对了,想了解啥叫其他语言里透出 jvav 味儿的可以去看看 NestJS
    体会一下啥叫扑鼻的 Jvav 恶臭
    0312birdzhang
        28
    0312birdzhang  
       8 小时 36 分钟前
    没喝过咖啡吗?当然是咖啡味了 (doge
    Lightbright
        29
    Lightbright  
       8 小时 26 分钟前 via Android   ❤️ 2
    用 ai 都更浪费 token
    zed1018
        30
    zed1018  
       8 小时 18 分钟前
    @zwzwzwzwzxt 长命名不是 OC 味吗
    pikko
        31
    pikko  
       8 小时 8 分钟前
    @zwzwzwzwzxt #21 这个类名比我命还长
    kneo
        32
    kneo  
       8 小时 3 分钟前 via Android
    @pikko 别说不吉利的话。
    gowk
        33
    gowk  
       7 小时 16 分钟前
    httpDispatcherDecoratorHandlerAdapterStrategyConfigObserverFactory

    https://x.com/cholf5/status/1900033963290448223
    ikas
        34
    ikas  
       7 小时 12 分钟前
    味道在于人,就算 java 现在也不需要什么 FileUtils,TimeUtil,都是什么年代的了..nio 的 Files,time 的 Instant 等不够用?
    ajaxfunction
        35
    ajaxfunction  
       6 小时 57 分钟前
    典型的又臭又长。 虽然是 ide 可以生成,getter setter 一大堆。
    其他语言 30 行代码就够,他的 100 行
    sagaxu
        36
    sagaxu  
       5 小时 50 分钟前
    @murmur Java 有各种 XXTool 是 JVM 生态好,不是 JRE 标准库好,主流语言有几个连 JSON 库都要第三方提供的?
    xausky
        37
    xausky  
       5 小时 48 分钟前
    java 确实有味,ide 自动生成的代码能占 80%
    james122333
        38
    james122333  
       5 小时 6 分钟前 via Android
    就是过度封装 一串代码内只有少数几行真正起关键作用 当然现在都不只 java 这样...
    这样封装他们觉得很灵活 会以生物学角度看待 oop
    但就我来看就是奇美拉 透过继承等特性合成对象 这一串看起来是灵活了 看来是个战力高的生物 但很难与其它类相容 不是不行 但得绞尽脑汁 必需得经过生物演化痛苦的过程
    java 还是可以写不那么 oop 类与命名空间我觉得雷同
    但很少人写的简洁
    SeaTac
        39
    SeaTac  
       3 小时 32 分钟前
    讲道理这是菜味不是 java 味
    levelworm
        40
    levelworm  
       3 小时 0 分钟前 via Android
    无穷多的 getter setter
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   964 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 21:37 · PVG 05:37 · LAX 14:37 · JFK 17:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.