1
billbur 98 天前 1
停止污名化“防御性编程”,垃圾代码就直接说垃圾代码
|
2
murmur 98 天前
我日这个 aaaa 和 dddd 真忍不了了
|
3
yanyao233 98 天前 via Android
我草看了那么多说搞防御性编程的帖子我都以为是开玩笑,没想到真有傻逼搞啊
|
4
tool2dx 98 天前
几何算法你不可能指望写法有多优雅的,本来就是一大堆算法,外部都是调用 API 。
我由于项目需要,引进了一个 google/s2geometry 算法库,这个改起来才叫一个吐血。 |
5
Lyndi 98 天前
菜就多练
|
6
retrocode 98 天前
菜就是菜, 不用给自己找补, 大伙都是开开玩笑得了, 你真这么写代码啊.
|
7
yinmin 98 天前 via iPhone
这个代码还算可以。看不懂的部分可以扔给 ai 解释,你可以试试 claude 3.5 sonnet (这个很强,真根据需求能写代码)、deepseek coder (这个便宜、国产用起来方便)
|
8
GeruzoniAnsasu 98 天前 1
菜就多练+1
没感觉这代码有多逆天,只是写算法来渲染的玩意都比较难看懂很正常,但 AI 擅长这个。 丢给 copilot 让它教你读 |
9
XiLingHost 98 天前
防御性编程防的是用户不是同事啊......这个词一般是说代码有极高的容错,完全不相信用户输入,能校验就校验
|
10
iyiluo 98 天前
防御性编程是指入参不可靠,需要做好防御。你这是参与同事烂代码开发,现在有了 ai ,我看见烂代码没那么怂了,以前是真头疼
|
11
estk 98 天前 via iPhone
说不定开发者自己本人都不愿意维护
|
12
xiangyuecn 98 天前
复杂逻辑的代码本身就难看懂,几何运算各种 x y 值
|
13
whp1473 98 天前
实际情况是,一个需求老大预估 1 天,但因为代码写的难维护,3 天了还在各种改 if else 、线程并发、队列跳来跳去。这种实际情况就告知老大就可以,可以改但需要时间,然后代码能不大改就不要大改,因为你永远不知道这个看起来没用的 if 是不是搞了骚操作。
|
14
smdbh 98 天前
这个显然不是“防御性”编程, 也不是防御性编程,
|
15
Vitumoc 98 天前 1
没看出同事的代码有特别大的问题,最多就是变量名随意或者注释偏少
感觉代码的复杂度是来自于图形业务本身,我不认为你同事故意增加了复杂度,最多只能说他没有刻意的降低复杂度 这种图形业务想把代码写优雅很难,你的应届生同事不一定做得到,实际上你也不一定做得到 另外,再简单的任务也不能只给自己留一个小时,更何况这是别人的代码 |
16
StrangerA 98 天前 2
几何算法真的就是这样的了,人家好歹给你留了注释。
你不愿意去仔细看那是态度问题,看了看不懂确实是能力问题。 老板没骂错。 虽然上面的代码格式有点问题( eslint + prettier 可破)以及变量用得有些狂野(上 typescript 限定类型能好点),但也别指望几何算法能靠这些功夫好上多少。 |
17
mosfet 98 天前
他是应届生啊,标准的“教科书”写法啊
只能说你们公司既没规范文档,也没相关培训 你网上找份规范文档,要求大家都按上面的来 |
18
Laysan 98 天前
别啥都叫 防御性编程
|
19
Laysan 98 天前 1
本来一个褒义词硬生生干成了贬义词,就像卧龙凤雏
|
20
LiuN1an 98 天前
上来就告诉老板你花一个小时就能改完别人的代码,然后自己打脸。还是入世太浅
|
21
zdw189803631 98 天前
这代码我觉得还行,实话
|
22
kokutou 98 天前 via Android
你写一个试试,你看看是不是也这样
|
23
magic3584 98 天前
如何改善同事的编程习惯?
-- 管好你自己就行 如何向老板解释情况? -- 当然是说实话了 如何在不影响团队关系的前提下改善代码质量? -- 当领导,制定代码规范 |
24
iloveayu 98 天前
别碰,绕过去然后拉一坨新的屎。
|
25
sagaxu 98 天前
防御性编程 ❌
腹黑性编程 ✅ |
26
zgl263885 98 天前 via iPhone
我也分不清有些人到底是防御性编程还是单纯的菜,手头接手代码删除了一半了(工具统计),功能还差不多是这些,而且感觉还能删除 3 成。不是非删了才显得自己厉害,是真看不下去,一个方法复制 20 遍,卧槽 tmd,越想越来气!
|
27
leokun 98 天前
这个还好,逻辑比较集中,上下文不是很长,js 最恶心的是滥用闭包
|
28
Laysan 98 天前
防御性编程( Defensive Programming )是一种软件开发方法和策略,其主要目的是通过在代码中实施一系列预防措施,来增强软件系统的稳定性、可靠性和安全性。防御性编程的核心理念是在设计和实现软件时,不仅仅考虑正常情况下的预期行为,还要特别关注异常情况和不正确输入可能带来的潜在问题。以下是防御性编程的关键特征和实践:
1. **输入验证和过滤**:在接收和处理用户输入、外部数据或其他系统交互时,进行严格的输入验证。这包括数据类型、格式、长度等方面的检查,以防止不良数据导致的错误或安全漏洞。 2. **异常处理**:设计和实现代码时,考虑可能发生的异常情况,并编写相应的异常处理机制。良好的异常处理可以确保系统在出现问题时能够优雅地恢复或提供适当的反馈,而不会导致系统崩溃或产生未预期的行为。 3. **边界检查**:在使用数组、指针或其他数据结构时,进行边界检查和越界防护。这可以防止因为访问超出数据结构边界而导致的内存错误或数据损坏。 4. **资源管理**:合理管理系统资源,包括内存、文件句柄、数据库连接等。防御性编程要求在使用完资源后及时释放,避免资源泄露和系统性能问题。 5. **日志和错误处理**:适当地记录错误信息和系统状态,以便于问题排查和分析。良好的日志记录是防御性编程的重要组成部分,有助于及时发现和解决潜在问题。 通过采用这些实践,防御性编程可以显著提高软件系统的健壮性和可维护性,减少由于意外情况导致的系统故障和安全漏洞,从而增强整体的用户体验和系统可靠性。 |
29
abelmakihara 97 天前
@zgl263885 培训班刚出来的那种吧 脑子里没那个意识
|
30
Georgedoe 97 天前
工作能力确实有问题 , 还喜欢归咎外因
|
31
maymay5 97 天前
防御型编程是怎么做到的,我干过的公司,基本代码仓库都专门有个审核分支,写的代码都只能提交到审核分支,负责人看完后合并到主分支,没通过的直接邮件和工单,注释量和变量名甚至什么时候用 for 什么时候用 foreach 都要管🙄
|
32
twofox 97 天前
写几何算法的,能够优雅到哪里。其实我看着你这个还好,也给你留注释了。
不过楼上那几个跳脚的,真没必要 别说什么污名化防御性编程 语言本来就是用来沟通的,大部分人知道这个意思是什么即可。防御性编程在不同语境可以有不同的含义,这并没有什么问题 非要去找定义,并要求大家都按照这个定义来说话 那要不你们先把奇葩这个词的含义改回来 |
33
nullxx 97 天前
防御性编程不是默认参数都不对多加校验吗 怎么变成防优化了
|
34
duan602728596 97 天前
这个算是标准的非前端程序员的代码了。
|
35
Betsy 97 天前 via iPhone
你要写具体的文档来证明这代码真的就是一坨屎,维护成本高,并且拉会跟老板一条一条的过来说服老板。如果你不能证明,那老板觉得你能力不行或者态度不端理所应当。
PS:嘴上跟老板说这代码太烂了,顺口举几个不痛不痒的例子,或者截几张图,这种做法个人觉得毫无意义,大概率只会加剧老板对你的不满。 |
36
iClass 97 天前 via Android
不懂就问
|
37
PainAndLove 97 天前
怎么跟我理解的防御性编程不是一个东西呢。。。
|