读代码的时候,什么时刻最破防?

224 天前
 gpsbird
5581 次点击
所在节点    问与答
58 条回复
cannotagreemore
224 天前
@cndenis 你说的这个风格即使在文档里也只是处理并发情况的 option ,--- This issue can be solved with locks or by using the EAFP approach. 作为一个合格的开发者,访问并发资源需要加锁才更是合理的做法吧。
上面的提到的场景,普通的查询不存在明明是一个业务分支直接 if 处理就可以了,异常才需要进行捕获
BUHeF254Lpd1MH06
224 天前
经常看到有人说看到自己多年前写的代码不认识,我一直表示有点理解不了... 可能是我的代码风格太鲜明了吧(整洁/命名/函数归类强迫症),读很早之前的代码哪怕完全没有一点印象了也能一眼认出来是自己写的代码
msg7086
224 天前
不是破防,只是这两天看到了感叹一下。
同事移植了个上古的用 C 写的代码到 Java 。
以前 C 代码有个缓冲区大小限制是 2000000 字节,同事直接照搬过来了。
前几天遇到要处理一个文件,2000010 字节。

程序抛了异常。文件过大。
israinbow
224 天前
daxin945
224 天前
where 1 = 1
ecloud
224 天前
错误的英文拼写和错误的用词作为变量/方法名
gavin810
224 天前
@cndenis EAFP ,我更喜欢把它意译成 先斩后奏,效率当然高啦。
Karte
224 天前
@daxin945 这个大概率是为了拼接条件, 而且是 mybaits.

```xml

SELECT * FROM <table>
WHERE 1=1

<if test="a != 0" >
AND a = #{a}
</if>

```

如果没有这个 1=1, 那就变成 `WHERE AND a = #{a}`. 无法通过 MySQL 的解释器.
Karte
224 天前
这种不需要优化, 解释器会直接删掉这个条件, 因为怎么都是 TRUE.

如果你看的不爽, 可以这样改

```xml

SELECT * FROM <table>
WHERE

<where>
<if test="a != 0" >
AND a = #{a}
</if>
</where>

```

参考 [MyBatis XML 文档]( https://mybatis.org/mybatis-3/dynamic-sql.html#trim-where-set)
> The where element knows to only insert “WHERE” if there is any content returned by the containing tags.
Furthermore, if that content begins with “AND” or “OR”, it knows to strip it off.
madizmChou
223 天前
函数参数永远都是一个 json Object
behindeye
223 天前
前公司的代码注释:
// 张总说,这里要怎么怎么做,所有要怎样怎样!!!!
laikick
223 天前
@GeruzoniAnsasu 现在去问下 chatgpt 都明白了.
k9982874
223 天前
@behindeye 看到了开发当时愤怒又无奈的心情
daxin945
223 天前
@Karte 如果我说是在 Flask 接口里面看到的 where 1=1 呢 而且还是我司内部安服找到的我..
Karte
223 天前
@daxin945 这是什么操作? web 为什么要拼接 SQL?
windy0925
223 天前
有一个定义 type xx map[string]map[string]map[string]map[string]interface{}
完全不想接着看下去
daxin945
223 天前
@Karte
就是拼接条件方便 只不过条件的来源是用户从输入框输入进来的 - -
安服发现 sql 注入 然后我看代码发现了这个 where 1=1 应该只是为了拼接的时候不用拼 where 部分吧..
Karte
223 天前
@daxin945 应该是不想判断 AND. 1 = 1 后面直接拼条件就行

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

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

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

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

© 2021 V2EX