为什么公司的人写代码都无视 IDE 的警告提示?

2022-08-18 17:43:54 +08:00
 magese

现在 IDE 的代码提示已经很完善了,为啥大家都不关注警告的?

前前后后也待过好几家大大小小的公司了,没见过一个人写的代码是 0 Warning 0 Error的。

打开一个类全是黄黄的不难受的吗?

强迫症已经要死了……

16471 次点击
所在节点    程序员
147 条回复
yolee599
2022-08-18 23:40:12 +08:00
写 Linux kernel drivers 代码试试?只要有一个 warning 就编译失败让你改正
Pangurban
2022-08-18 23:50:45 +08:00
有可能跟 theme 有关系,有的配色 warning 就不是那么明显… (看到同事屏幕后的感悟)
dyllen
2022-08-19 01:05:56 +08:00
IDE 差异好大,不同版本都好大差异,在我的 IDE 没任何提示,换到别人的可能就有一堆,也可能我的 ide 看别人的有一堆警告。
angrylid
2022-08-19 01:12:17 +08:00
我司项目 commit 之前要过 eslint prettier commitlint 三次检查,理论上是 0 警告 0 错误,但是我觉得配的 eslint 规则部分并不合理。
dayeye2006199
2022-08-19 01:23:45 +08:00
不写单测,没有整合测试,就问你这些 warning 按照提示建议修改之后,还能不能 100%跑。

没有配套的测试,根本不敢随便重构
shuimugan
2022-08-19 01:52:45 +08:00
观念问题,一堆黄色的告警中往往隐藏着潜在 bug ,机器都能看出来的问题为什么要视而不见,所以我从业以来就是全部清理的,前期比较蛋疼因为 IDE 一升级加了规则又会多好多告警,不过我也会专门清理完。带人也是这么宣导的(前提是工具链统一),基本上呆的每个团队我都会在第一个月持续灌输这个理念,基本上后面就不会出现了。

其实带来的好处很多的,比如新增的代码里 IDE 告警了,你会很敏感,会多思考一下,特别是以前写 PHP 的时,IDE 能发现的告警基本上都是一些潜在 bug 。

换位思考一下,2 个功能差不多的代码库,一个 IDE 能提示出 2000 个告警,另一个库几乎没有告警,你会觉得哪个质量好?
ericls
2022-08-19 02:39:09 +08:00
别人给你个 warning 就可以让你做这做那的 你也太容易被控制了吧

话说回来 应该更新 lint 和 check 规则 让确实需要忽略掉的不显示出来
ecloud
2022-08-19 02:49:47 +08:00
这时才深刻的体会到了 rustc 的强大以及 clippy 的神奇😂
c0xt30a
2022-08-19 04:58:19 +08:00
并不是所有的人都用 IDE 的,因此有些在 IDE 上出现的警告提示不见得对开发者是可见的。而且甚至连编译器都因为存有错误或者未曾实现的功能而不能正确编译代码,譬如现在被广泛使用的 clang(d)对 C++20 的支持相当差劲,更不要提只是集成或者调用编译器的 IDE 了。
FrankHB
2022-08-19 06:32:04 +08:00
@Slurp 有的人就只知道 exact match ,不知道 subtyping polymorphism ,不知道拿 C++举例是为了兼容下限。

C++欠抽在哪用过点都知道,不必多科普,但是从你这发言看,逼迫用户带着脑子避免依赖 IDE 这种品质极不稳定玩意儿,而不是让习惯像你看齐给人拱火添乱,确有进步意义,也是很必要的。

你以为现实的没有能力决定选型方向的用户,有多大本事选择工作时用的 IDE ?又有多大本事钦定几个 error 几个 warning 几个 typo 以上算验收不合格?就不说还有故意引入这种“问题”的了(反而不一定表示质量有问题)。

另一方面,脱离 IDE 就直接干不了活(而不仅仅是效率问题)的用户是不是配来妖言惑众,至少在 v2 还是大大地该打个问号的。就算是实际工程中普遍最依赖的 IDE 的 Java 之流,一开始教语言基础时也没说非得上 IDE (当年就很多上 EditPlus 的,不知现在流行啥)。这这样数典忘祖可不好。

你 IDE 作为软件产品不一定就是垃圾,但是 IDE 对代码的检查比起编译器普遍差不多就该当做垃圾,至少编译器对误报可没法那么放水。想要推翻技术常识?行啊,造个取代编译器的 IDE 来成为业界主流?

0 warning 0 error 0 typo 是轮得到你提的么?我从没听说过你这号人物,但就你这儿的发言看,是对你脑子是否比既有 IDE 的设计靠谱,什么东西配当 warning 是否拎得清楚的能力是要打个问号的。反过来,标准起码能定义什么叫 ill-formed ,成为 error 的直接依据。要还有不服,那你给个备胎?是你技术和脸皮高超,有底气确保把你敢用的 IDE 的设计文档都偷过来公开,然后担保更好用么?不说有限不有限,你有这资源么?

有的人就是喜欢 -Wall -Werror ,那只能活该你遇到有的人给你添堵咯。还有你搞错了个常识,用 -Wno 和 #pragma 加白名单排除诊断多数就是反对具体的诊断的目的,大多并非假阳性(检查过于严格地不准确)。另一方面,你对工作量毫无认知。你倒是看看有多少用户没事把 IDE 检查全开然后还有心情去白名单,而不是直接关掉?或者说你是直球侮辱 IDE 提供实现了的检查的数量很弱鸡么?

你一没搞清楚前因,二不清楚你评论的内容,三没搞清你脑补的观念在实践中的影响,就这一问三不知还好评价别人好什么?这脸皮倒够好为人师了。

@zjp javac 检查弱后果的下限上没 C/C++那么严重,因为很少有别的语言在语义上有那么多不要求错误(有的还不能是错误)但很坑的东西。少部分特性,如 @Deprecated ,Java 还属实更先进(了那么几年)。

Java 真正坑的地方是一贯鼓励写啰嗦代码(虽然啰嗦不绝对是坏事,但大部分情况是),以至于 IDE 和纯文本编辑器的体验差距被毫无卵用地拉大了(用 IDE 会少吃亏,不用 IDE 会多吃亏,但横竖都是吃亏)。这种讲究生产力提升靠熟练专用工具来掩盖抽象软弱的思路属实反智。
ada87
2022-08-19 06:41:17 +08:00
1. 关老夫屁事,又不是老夫写的
2. 代码检查只是工具,不懂欣赏,说老夫代码有问题,死也要杠到底
3. 代码已经写成一坨屎,没人看的懂了,能跑起来就算奇迹了,改出 BUG 可没人管
4. 忙的要死,看新闻刷视屏玩游戏聊八挂的时间都没有, 哪来时间处理这种鸡毛蒜皮的事
- xxx
RightHand
2022-08-19 07:25:01 +08:00
一般不强求 0warning ,毕竟工作上的代码是用来赚钱的,不是给你炫技的
FrankHB
2022-08-19 07:35:41 +08:00
@Slurp 虽然我原认为你不配享受到原文挨个儿 biu 的程度而只是需要对妖言惑众做 viewpoint coverage 来回复,不过看你历史回复,我改变了主意,觉得浪费点铜币把剩下漏网的全部补完,就算当科普笑话给路人看也行。
(也就是你原来扯蛋的密度够高了所以扣除引文不用补充多少,以下不再重复。)

> 不知道其他语言 IDE 的平均水平。

你该知道,大部分语言都没专用 IDE ,通用 IDE 基本就是文本编辑器+构建工具,IDE 多出来的检查约等于无,平均一下也无了。

> 说白了就一句话,「说得对就应该改」。

一句废话。

> 不知道扯那么多干啥?

欠教育和教育的表现对应是连贯的。就像引用你全文一个个揪出槽点比单独挑重点科普解释更顺气,阅读体验也可能更好——除了可能更长,不好意思。

> 抱着一副「你 IDE 就是垃圾」的嘴脸,却连提示你 http not secure 这种都要喷几句。

HTTP 这个例子解释一下,开始是昨天某群里看见的对字符串字面量爆出的笑话。
我本来以为一个没决定用途的字符串字面量该用什么是用户的决定,IDE 在此的自作聪明是显而易见的——比如说,用户就是想拿 "http://example.com" 去做一个“这是一个 HTTP 样例 UI ,大家得知道 HTTP 虽然不太 secure 但很不巧这玩意儿当链接真的能点得开”的 UI 上的例子。
没想到你甚至理解不了这茬,我的错咯?不过这样你就更没资格计较我为了兼容你的理解能力而拖长回复(又没问你要铜币)了。

> 你不是天天标准标准,怎么一到 0 warning 0 error 0 typo 这种要求就知道是工作不饱和了?就知道有限资源了?

我日常工作天天都有 spec ,倒未必费有打白工到标准上。
你所谓的这种要求恰好就是代码验收方面 spec 不成熟而集中暴露开发出资源矛盾的典型表现之一。

> 有的人就是喜欢 -Wall -Werror 然后一条一条把假阳性标称白名单。轮得到你指责吗?

我是用户我就有可能轮得到。

> 叶公好标准,不过如此……

还能多挂挂语文水准的问题。
历史上叶公是谁,评论叶公的又是谁,这梗语出何人?你是真好意思代入了嘛?
murmur
2022-08-19 07:39:18 +08:00
@wolfie 这种级别的东西,都不需要 js 解析器,混淆的时候就优化掉了吧
wm5d8b
2022-08-19 08:00:48 +08:00
直接问他们不就知道了,反正我问过,原因就是英文看不懂
think2011
2022-08-19 08:24:33 +08:00
warning 还能接受,error 我就看不下去了
atempcode
2022-08-19 08:25:14 +08:00
没事,编译时设 /WX 就行
ragnaroks
2022-08-19 08:27:22 +08:00
我想起 csharp 刚支持拉姆达表达式但分析器没更新的时候

public Int32 GetSize() => this.dataList.Count;

error:没有 return 关键字;方法所有路径必须返回;缺失 {;缺失};.....
ivvei
2022-08-19 08:38:21 +08:00
有时候那块代码不归自己管啊,总不能写过界吧。我现在的项目,依赖库里一堆警告,改又没法改,只能忍了。
hoopan
2022-08-19 08:38:41 +08:00
error 是必须改的,warning 很多只是建议,IDE 并没有那么强大,建议的不一定对,可以选择忽略。

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

https://tanronggui.xyz/t/873803

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

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

© 2021 V2EX