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

2022-09-07 19:54:23 +08:00
 optk

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

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

最后,感谢大家的指点。

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

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

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

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


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


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


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

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

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

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

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

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

© 2021 V2EX