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

24 天前
 gpsbird
5109 次点击
所在节点    问与答
58 条回复
MillaMaxwell
24 天前
不得不提一嘴现在维护的代码了,上一任开发没有交接就跑路了,是真的逆天。技术是纯 python ,Django Rest Framework 。
前任开发使用了大量的非定向 try except,不指定异常类型甚至互相调用,一个 1000 行的函数,最外层套俩 try ,入参不校验,出参不格式化。
举一个真实的应用场景
使用 orm 查询一个值是否存在:
正常人思维:
if a.models.objects.filter(pk=1).exists():
xxxx
else:
xxxx
if:
xxxx
elxs:
xxxx
他的做法
try:
a.models.objects.get().pk
xxxx
except:
xxxxx
try:
xxxx
except:
xxxx
MillaMaxwell
24 天前
@MillaMaxwell #1 .排版炸了
ShundL
24 天前
读了半天读不懂的时候
tool2dx
24 天前
读自己以前写的代码。
hahastudio
24 天前
谁写的这么弱智,看我 blame 一下
啊,原来是几年前的我
tooyoungtoo
24 天前
看到一堆 shit 代码,心里骂娘这代码写的什么玩意儿,git blame 一看是自己😅
waytodelay
24 天前
和同事一起看代码,看到一段代码写得烂得批爆还没注释,嘴里还在骂,
然后点开提交记录发现是自己提交的时候
villivateur
24 天前
比如现在我接手的某个屎山,里面有一个某位大神写的 modbus 库,我研究了半天,发现这个库并没有在主程序中使用,主程序用的是一坨屎一样的 modbus 代码。这个大神库现在是僵尸代码。
coderluan
24 天前
破防一般是指感情层面的吧,读代码顶多是绷不住,在怎么样也不至于破防,除非答案也包括读着读着发现代码是已故同事写的这种.....
Dream95
24 天前
在严格禁止魔法值后
kylebing
24 天前
写了挺多,在没有 commit 之前,一不小心 rollback 到了上次 commit 。
Dream95
24 天前
同事写出这样的代码 public static final Integer INIT_INTEGER_TWO = 2;
public static final Integer INIT_INTEGER_THREE = 3;
public static final Integer INIT_INTEGER_FOUR = 4;
inhzus
24 天前
看别人调用我们 SDK 的代码,写了行注释:
// we must do xxx separately
// **what can i say**
zzping
24 天前
@MillaMaxwell
老哥你们用 := 的多吗
我们都是 if account := Account.objects.filter(id=1): 的
zzping
24 天前
@MillaMaxwell if account := Account.objects.filter(id=1).first():
laobobo
24 天前
@hahastudio 这种情况说明成长了
MillaMaxwell
24 天前
@zzping #14 已经是一个老项目了,3.6 的 py ,没有用到这个
vainl1
24 天前
@MillaMaxwell 前面提到的各种问题确实逆天。仅针对最后提到的正常人思维,如果只有少数时候值不存在,那么 try 的用法其实更合适,运行效率会更高。在 python 中有个说法叫 EAFP ,可以参考: https://stackoverflow.com/questions/1835756/using-try-vs-if-in-python
leonx9527
24 天前
@kylebing local history
Vegetable
24 天前
@zzping 如果为了判断是否存在没必要 first 。文档里说的很清楚 exists 会尝试使用最简单快速的方法判断是否存在

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

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

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

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

© 2021 V2EX