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

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

  •  
  •   optk · 93 天前 · 3211 次点击
    这是一个创建于 93 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    最后,感谢大家的指点。

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

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

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

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


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


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


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

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

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

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

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

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

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