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

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

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

19249 次点击
所在节点    Java
159 条回复
naix1573
2021-12-09 16:53:34 +08:00
听楼上说起来感觉优点还不少啊
逻辑清晰写起来快,一目了然看的明白,行数多了 KPI 还高 哈哈
CharmingCheung
2021-12-09 16:54:02 +08:00
图一实际就是判断两个 String 是否相等然后做不同的逻辑,直接封装个 xxUtils.equals(String a, String b)方法判断两个 String 是否相等就好了。那 changePositions 里就好阅读很多了
weaponc
2021-12-09 17:12:50 +08:00
请不要随意扔垃圾
CharmingCheung
2021-12-09 17:15:20 +08:00
图二整个过程好像都没有对对象的空值做逻辑分支,那直接一个 try-catch ,try 里 return true ,catch 里 return false 完事
binge921
2021-12-09 17:18:09 +08:00
看的心肌梗塞
easylee
2021-12-09 17:21:21 +08:00
看到这样的代码,review 根本不可能过,多次出现直接劝退......
nicebird
2021-12-09 17:24:33 +08:00
遇到这种代码不要想着怎么改,直接删了自己重新写。
xiaofeifei8
2021-12-09 17:30:56 +08:00
一群人在嘲笑曾今的自己?
Nich0la5
2021-12-09 17:31:52 +08:00
按行发工资?
aguesuka
2021-12-09 17:47:01 +08:00
语法层面还好
第一个方法, member 也许是 memberId, 第一个方法里的 name 在第二个方法里成了 positionName, 嵌套的 if 应该该改成 &&, else if 应该合并, 多个分支执行相同的代码也应该合并.
第二个方法, if 的嵌套太多了.

设计层面
dao 层查询结果是 Map
changePartyPositions 应该拆成两个函数, 一个方法不允许 null, 另一个方法只有一个 member, 同样不允许 null.
不要返回 boolean, 而是应该抛异常

另外, updateTime 是 string 类型, 而且是参数, 最坏的可能是从前端拿到的, 而且要保存到数据库, 否则有理由怀疑 changePositions 在循环体中, 同样也很糟糕

虽然不希望和他当同事, 不过这已经算 ok 的代码了, 至少看到代码我知道他想干什么.
EscYezi
2021-12-09 17:53:03 +08:00
这代码是自动生成的么
善用 optional ,合理使用 if 条件
abobobo
2021-12-09 18:02:46 +08:00
@DreamingCTW 这么写,当 member2 == null 时,就报错了,反而提高了错误几率..
guyeu
2021-12-09 18:08:10 +08:00
这么写,当任何一个参数是空的时候就不发生任何事,默默地执行结束,或者返回一个保底的`null`或者`false`,部分情况可能是符合设计意图的,很多时候其实是坑。。。
RedBeanIce
2021-12-09 18:27:06 +08:00
怎么这么多人任认为这样没问题的,提前返回就行了呀,,不用走后面那么多逻辑
mxT52CRuqR6o5
2021-12-09 18:33:12 +08:00
https://github.com/trekhleb/state-of-the-art-shitcode#-triangle-principle
这是编码原则中的 Triangle principle ,建议大家都这么写( doge
daimubai
2021-12-09 18:37:36 +08:00
能 return 就不要 else
LUO12826
2021-12-09 18:37:49 +08:00
图二除了嵌套过多外,最里面该不会是 if(bool expr) flag = true 吧,最后该不会又返回 flag 吧
ColdBird
2021-12-09 18:40:03 +08:00
@DreamingCTW 图 1 废逻辑那么多还一堆人说没问题,能看懂才是最重要的,我就不明白用你这种简单方法难道不是更容易看懂?我不懂,但我大受震撼!
ColdBird
2021-12-09 18:41:49 +08:00
典型的逻辑堆砌能用就行,完全不想怎么简化逻辑让代码更简洁易懂,还没问题,服了。
等这种嵌套到几十层就不说易懂了
mxT52CRuqR6o5
2021-12-09 18:45:03 +08:00
https://github.com/Droogans/unmaintainable-code#nesting
这是一种避免失业的编码技巧

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

https://tanronggui.xyz/t/821118

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

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

© 2021 V2EX