V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
optk
V2EX  ›  Java

大家好,请大家帮我分析一下我的 Java 水平

  •  
  •   optk · 2022-09-07 19:54:23 +08:00 · 4104 次点击
    这是一个创建于 806 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大家好,我是一名不那么纯粹的 coder ,平常也会使用 Java 开发时,做过几个网站,对 spring boot 、tomcat 的使用基本熟悉,数据库什么的也都会用。

    今年自己独立开发一个网站的时候,在对某个功能点进行实现时,成功使用工厂策略模式把这个功能模块的逻辑给抽象出来了,好像这是我第一次使用设计模式优化自己的代码。所以想来 V 站请教一下大家能够将功能抽象成设计模式这一能力在 Java 开发中算是什么水平?

    最后,感谢大家的指点。

    34 条回复    2022-09-09 09:23:23 +08:00
    cmdOptionKana
        1
    cmdOptionKana  
       2022-09-07 19:57:28 +08:00
    想问一下,你问这个的目的是什么,如果是找工作,那真正能力其实权重不高,学历、工作经验之类的反而影响更大。
    sun2920989
        2
    sun2920989  
       2022-09-07 19:59:13 +08:00
    刻意练习一招一式,随手使出一招一式,不局限于一招一式.
    sadfQED2
        3
    sadfQED2  
       2022-09-07 20:01:03 +08:00 via Android
    刚毕业水平
    fzdwx
        4
    fzdwx  
       2022-09-07 20:03:02 +08:00
    有手就行?
    zzzzz001
        5
    zzzzz001  
       2022-09-07 20:04:07 +08:00
    工作 5 年+ 从来没刻意搞过设计模式,可能我太菜了
    wanacry
        6
    wanacry  
       2022-09-07 20:05:15 +08:00 via iPhone
    培训班水平
    dwlovelife
        7
    dwlovelife  
       2022-09-07 20:05:25 +08:00
    工厂模式很简单,难的不是抽象成工厂模式,难的是在什么场景应该抽象成什么样的模式,这样的抽象能力一时半会拥有不了,得有大量的项目试错,还得有人教和带,你要非要问我是什么水平 初级吧
    sun2920989
        8
    sun2920989  
       2022-09-07 20:07:30 +08:00
    不扯淡了,说点正经的.仔细思考以下问题:
    是否严格按照设计模式的规范进行了实现.
    实现后,整体的层级发生了哪些变化.抽象之后在什么场景下会得到哪些好处.
    与此同时,又有哪些缺点.
    所以本次抽象是否是适合当前项目的.要不要改回去.
    所以这个设计模式的规范标准里为何是这样定义的,进行了哪些取舍.
    我以后应该在什么场景下使用这个,什么场景下不适合使用.
    然后将类似上面这些思考推广到其他的点上.
    LeegoYih
        9
    LeegoYih  
       2022-09-07 20:27:09 +08:00
    有代码参考吗
    optk
        10
    optk  
    OP
       2022-09-07 20:28:21 +08:00
    @cmdOptionKana 问这个的目的是想知道自己 Java 学习的怎么样,有没有走错路子,想更深入的吃透 Java 编程,只是对编程比较热爱。

    @sun2920989 sun 大佬说的感觉很好,我之前都没有抽象的经验,但是也没有刻意练过设计模式,网上也有很多的教程,汽车工厂之类的抽象。我这次在编码的过程中,感觉必须要有一种设计把这些冗余的代码给消除掉,然后我就查询有哪些设计模式刻意为我所用,有点像套公式一样,最终感觉抽象工厂+策略能很好地解决我的问题,既解决了代码臃肿的问题,又使得这个功能模块具备良好的扩展性。所以我对这次的抽象印象比较深刻。
    optk
        11
    optk  
    OP
       2022-09-07 20:29:37 +08:00
    我本人是对编程比较热爱,没有找工作的压力,所以非常感谢大家的赐教。
    securityCoding
        12
    securityCoding  
       2022-09-07 20:47:19 +08:00
    多看看相关的开源项目,看多了自然就知道如何抽象代码了
    lostberryzz
        13
    lostberryzz  
       2022-09-07 20:57:59 +08:00
    大概是斗宗强者的水平吧
    mango88
        14
    mango88  
       2022-09-07 21:12:20 +08:00
    show me the code
    Leviathann
        15
    Leviathann  
       2022-09-07 21:25:10 +08:00
    如果是热爱
    那建议直接 Rust
    cmdOptionKana
        16
    cmdOptionKana  
       2022-09-07 22:23:43 +08:00
    @optk

    编程没有统一的发展方向,比如深耕算法,就足够耗尽全部时间精力,如果做一些基础库,算法方面就不用学太深,但要读各种标准细节,如果做应用 App ,就变成要花时间学人机交互、相关行业的业务,另外还有游戏、安全攻防等等……

    一般来说,一个人研究不了太多个方向,选择一个方向,去尝试做做,自然就知道缺什么、要学什么。
    RedBeanIce
        17
    RedBeanIce  
       2022-09-07 22:24:16 +08:00
    个人理解,对于很多业务 Javaer 来说,很少沉下心去研究设计模式与业务的结合。
    很多时候是没时间,也是没必要,,楼主和工作的 javaer 来说是不同的路,,,
    如果光说设计模式,不说其他的基本功的话,感觉是中级水平?
    但是水平这个东西,无法很好的进行评价,不喜轻喷
    11232as
        18
    11232as  
       2022-09-07 23:24:21 +08:00
    初级工程师阶段吧,推荐看一下《 Effective Java 》,我想对你会有很大帮助。设计得话我推荐可以看一下《企业应用架构模式》和《 Unix 编程艺术》,个人觉得两本都很棒。
    optk
        19
    optk  
    OP
       2022-09-07 23:32:10 +08:00
    非常感谢大家,show me the code 没法实现了,也不是什么好代码,没有值得看的,这篇帖子主要想说一下自己第一次使用设计模式优化了代码的体会。


    @securityCoding 开源项目代码也看了一些,天天都是瞪眼大法,就像 @sun2920989 说的,没有办法做到实际写的时候信手拈来。


    @Leviathann 我目前还是想等把 cglib 、aspectJ 这两块啃下之后,再去学习新的编程语言,我希望自己在编程这块,不仅仅做到会用。


    @cmdOptionKana 老哥说得很好,想要全能比较难,不是人人都是稚晖君,软硬件通吃的是个狼人,我的想法比较简单就是我既然学习 Java 学习几年了,多少把 Java 这门语言吃透。但是如果说一个方向的话,我认为 Java 不应该属于一个方向,它顶多算一个方向的工具。方向的话是希望自己在开源领域能够有所建树。

    @RedBeanIce 非常感谢 readbeanice 对我的评价,我最后写这个什么水平也有点虎扑搞笑的梗在里面,对于我而言什么中级初级这些都不是关键的,能够写出来高质量的代码是我比较追求的事情。(笑哭
    Leviathann
        20
    Leviathann  
       2022-09-08 00:00:59 +08:00
    @optk
    cglib 除了写某些大量依赖反射的库用到的时候翻一下 api ,正经人谁没事看这个玩
    而且现在已经不维护改用 bytebudy 了
    事实上现在的趋势是非必要不反射,尤其是后 graalvm 时代,高版本 jdk 增加了各种反射的限制,强化封装性
    另外如果真的有心开源,认真的说好久没见过有什么 java 相关的值得一提的开源作品了
    都是 rust go js/ts python
    java 在国外的定位很明确,就是给大公司搬砖的
    个人作品没见几个人用 java 的
    cmdOptionKana
        21
    cmdOptionKana  
       2022-09-08 00:18:41 +08:00
    @optk 业余玩编程没必要花几年吃透 Java ,性价比太低了,还不如早点找个开源项目做(新开或参与都行),有了更具体的任务,学习效率会高很多。

    其他语言也可以学一学,收获会比死磕 Java 更大。
    tonymua
        22
    tonymua  
       2022-09-08 09:18:24 +08:00
    出去面试看下 就知道了
    goalidea
        23
    goalidea  
       2022-09-08 09:20:46 +08:00
    Talk is cheap. Show me the code.
    DefoliationM
        24
    DefoliationM  
       2022-09-08 09:49:35 +08:00
    谢邀,应届生水平
    q474818917
        25
    q474818917  
       2022-09-08 10:23:02 +08:00
    写 java 不需要动脑子,在座的所有 javaer 水平都一样
    someonedeng
        26
    someonedeng  
       2022-09-08 10:29:22 +08:00
    不用去培训班的水平
    yeyuefeng
        27
    yeyuefeng  
       2022-09-08 11:53:31 +08:00
    境界水平由低到高,依次可划分为:
    初学乍练——初窥门径——登堂入室——融会贯通——炉火纯青——登峰造极——极境之上——神乎其神——摩柯无量.

    初步判定你已经到达 "融会贯通" 境界水平了
    optk
        28
    optk  
    OP
       2022-09-08 12:47:39 +08:00
    @cmdOptionKana @Leviathann 你们说的有道理,用具体的业务去引领学习应该会快一点,还有想请教一下,开源项目如何更好的参与进去,之前也看了一些项目,但是不知道从哪一点入手开始提交代码。

    @tonymua 你说的也有道理,以后没事儿的话随便找两家面试一下,开开眼界。
    pzpzpzpzpz
        29
    pzpzpzpzpz  
       2022-09-08 15:59:33 +08:00
    几年后 看到这些代码 下意识 卧槽 这垃圾代码谁写的 low 爆了 点开 git 提交 发现是自己 那没事了。。
    xhldtc
        30
    xhldtc  
       2022-09-08 17:22:24 +08:00
    人生苦短,我用 python 。不是工作强制要求,没必要用 java 做开发,写写自己感兴趣的代码,用能够快速实现的语言写不香吗,java 那套太笨重了。最近就有感受,之前在 python 里解析 excel 一行就搞定,迁移到 java 要写几十行,太痛苦了
    ZSeptember
        31
    ZSeptember  
       2022-09-08 18:14:51 +08:00
    还停留在语言层面,最多初级吧。
    cmdOptionKana
        32
    cmdOptionKana  
       2022-09-08 18:40:39 +08:00
    @optk 我觉得有两个途径:

    1. 在自己使用软件或库的过程中,发现了 bug, 然后研究一下看能不能解决
    2. 我们日常都会使用大量的开源软件或库,挑几个自己特别喜欢的,然后去看看有没有 issues, 有的话就可以去帮忙。也可以 fork 一份出来自己添加新功能。

    刚开始,fork 一份出来自己搞,或直接自己开新项目比较好,因为不用看别人脸色。如果给别人的项目提交代码,一般来说要先大量看看别人的讨论,了解该项目的文化,以免沟通不愉快。
    optk
        33
    optk  
    OP
       2022-09-08 22:49:16 +08:00
    @pzpzpzpzpz 哈哈、有可能。但我感觉啊我几年后可能不会再看这些代码了
    @cmdOptionKana 嗯嗯好的,我尝试去做一下,非常感谢你的指引。
    akakidz
        34
    akakidz  
       2022-09-09 09:23:23 +08:00
    看你的描述只有初级水平,对于自学的建议:切记避免长期闭门造车!!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   968 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 20:50 · PVG 04:50 · LAX 12:50 · JFK 15:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.