大家帮我看看,这代码是水平。。

2021-12-09 14:54:02 +08:00
 Wsdba

刚接手的一个项目,发现这个人很喜欢这样写。

19250 次点击
所在节点    Java
159 条回复
ZField
2021-12-09 21:36:56 +08:00
@DreamingCTW #18 单个 if 的条件不要太复杂
linshenqi
2021-12-09 21:43:05 +08:00
我喜欢 goto ,唯一出口。。
darkcode
2021-12-09 21:49:58 +08:00
请问大家在讨论什么,我怎么看不见
zhuangzhuang1988
2021-12-09 22:07:43 +08:00
正常, 能用就行
curoky
2021-12-09 22:37:57 +08:00
挺好的,写过的代码只有他能看懂,出了问题也只能他来查
sprite82
2021-12-09 23:11:02 +08:00
说没问题的,平时写的比上面怕是更不堪吧?就这么几个条件合并归纳下有这么难吗,还降低心智负担,你的心智这么难以承受,还当什么程序员?第二个,数据库查询居然拿 JsonObject 作为接收对象
miv
2021-12-09 23:30:24 +08:00
看着太难受了,这代码。
if 太多,判断太多。
好的代码应该是简洁明了的。
多思考抽象,把代码变简洁。
这样就直观了,出 bug 也会变少。
而不是这样,那么多 if ,一个月后你还看懂嘛
miv
2021-12-09 23:33:18 +08:00
JAVA 里面代码抽象有两种,一是用类抽象,二是用方法抽象。我之前就用类抽象,把 n 多 switch 都干掉了。舒服
imycc
2021-12-09 23:36:56 +08:00
if 写得太暴力,看着简单,逻辑反而弯弯绕绕地
leokino
2021-12-09 23:41:50 +08:00
@liuzhaowei55 不赞同,没有必要的行数越多越影响对代码整体的理解。
liuzhaowei55
2021-12-09 23:45:40 +08:00
@sprite82 talk is cheap show your code ,自以为是的用个卫语句,坐那里扣半天联合几个逻辑判断,后来的人谁看谁骂娘
sprite82
2021-12-09 23:49:48 +08:00
@liuzhaowei55 这里就三个条件,又不是七八个, 还有,你不写注释的吗?
liuzhaowei55
2021-12-09 23:52:59 +08:00
@leokino
业务代码中这种挺常见的,我可能就是大家所不齿的那种敲代码的,用 if 把自己想要处理的场景一层层的判断下来,看起来很烂,但一眼就能看出来想要处理的数据长什么样子。
liuzhaowei55
2021-12-09 23:53:43 +08:00
@sprite82 自己写写试试,光说不练假把式
sprite82
2021-12-10 00:02:54 +08:00
@liuzhaowei55 你当别人没写过代码呢
sprite82
2021-12-10 00:03:56 +08:00
@liuzhaowei55 18 楼已经给你写好了 自己去看
learningman
2021-12-10 01:04:02 +08:00
建议直接换 kotlin
liuzhaowei55
2021-12-10 01:14:51 +08:00
@sprite82 再认真看看 18 楼代码吧,编辑器教你怎么做人。

---

有的代码可能看起来很傻,你想说 nerver do this ,那你就给出一个更好的例子出来,我是属于那种代码能跑就行的那种人,逻辑简单清晰明了,过上一年半载谁来都能看得懂就很好了,不要让人盯着一行代码反应半天。

最后想说,公司的业务代码能做到逻辑严谨就很难得了,受限于自己技术,当时的业务要求,产品的设计能力,行业现状 == 一系列原因,才成就了现在的屌样子,有能力就自己上手改,不能就争取不要做压倒骆驼的那根稻草。
Gav1nw
2021-12-10 01:46:59 +08:00
我觉得还行,就是丫的没注释,不管你自己觉得如何简单,都要加注释,因为阅读的人可能会误会
代码的话:
如果从精简的角度,确实需要优化
但是团队项目更注重的是易读性,所以并不是越精简越好.
Java 主要的目标是大型分布式,易上手.超高性能不是第一要考虑的,用一部分性能换取开发的方便才是重点,Jvm 也会优化一部分代码,至于有人说数据库用 JsonObject ,那单纯看业务需要,比如说 Redis,
曾经接手了一个烂摊子,因为纯内部环境,不需要考虑安全性,直接 js 执行 sql(甲方太恶心了,一个 sql,就算加了索引,优化了 left join ,创建了中间表等一系列手段后,依然要执行半个小时以上,我真的服了)
所以我个人认为,相比于代码的好坏, SQL 的优化好坏才能体现水平
Wh1t3zZ
2021-12-10 01:55:58 +08:00
可以看下 StringUtils.isEquals(String st1, String str2) 的实现,判断两个字符串相等并考虑到两个字符串可能为 null ,非常优雅。
return str1 == null? str2 == null : str1.equals(str2);

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

https://tanronggui.xyz/t/821118

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

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

© 2021 V2EX