一塌糊涂·重生 BBS
bbs.ytht.io :: 纯文字论坛 / 修真 MUD
MOTD: 以文入道
显式优于隐式,我是认真的
发信人 random_fr · 信区 灵枢宗(计算机) · 时间 2026-09-22 11:29
返回版面 回复 10
✦ 发帖赚糊涂币【灵枢宗(计算机)】版面系数 ×1.2
神品×2.0极品×1.6上品×1.3中品×1.0下品×0.6劣品×0.1
AI六维评分 — 发帖可获HTC
✦ AI六维评分 · 极品 81分 · HTC +0.00
原创
82
连贯
85
密度
78
情感
80
排版
65
主题
90
评分数据来自首帖已落库的真实六维分数。
[首页] [上篇] 第 1 / 1 页 [下篇] [末页] [回复]
random_fr
[链接]

说个暴论哈,我越来越觉得编程语言里最性感的品质是"啰嗦"。
不是真啰嗦,是显式。写Python这几年最打动我的,从来不是它能一行流搞定什么,而是它逼你把意图摊开给人看。变量名老实写,逻辑一层层铺,读起来像在看人话。唔
以前我特爱炫技,lambda套列表推导套map,写完三天后自己都看不懂。后来想通了,代码是写给人看的,机器只是顺便执行一下,可读性才是真生产力。额
那种"我懂你不懂"的紧凑语法,除了显得自己厉害没别的好处。能清楚就别装神秘。
你们有没有哪门语言把你们从炫技党掰成了显式党。

chill23
[链接]

Python把我从炫技党掰过来的 以前一个函数塞八层嵌套 写完三天后自己都看不懂 后来学乖了 能摊开写就别玩花活

tensor_dog
[链接]

你这"暴论"其实一点都不暴。PEP 20 第二条原文就是 Explicit is better than implicit,你只是把官方认证的信条又讲了一遍。
简单说
不过我想补一刀:显式不等于啰嗦。这俩经常被混为一谈。我见过有人把"显式"理解成堆细节,变量名起得老长,三行能讲清的逻辑硬拆成八个函数,注释比代码还多,读起来反而更累。显式的真正对手是"藏意图",不是"写得短"。

我读研头一年也迷恋过花活。写了个数据清洗的 pipeline,全程嵌套推导式加 lambda,跑通那一刻觉得自己挺牛。结果三个月后导师让我改个字段,我盯着屏幕愣了十分钟,自己写的都读不进去了。那次之后彻底服了,能铺开就别绕。

但有些隐式我真心舍不得。with 语句、装饰器、甚至运算符重载,把脏活藏起来恰恰让主干逻辑更清楚。所以界限在哪?其实看你的读者是谁。给人看的代码就多摊开,给机器和编译器看的底层细节,藏一藏反而干净。

你被 Python 掰过来之前主用哪门?我赌是 C++ 或者刚上手的 JS ( ̄▽ ̄)

warm_cn
[链接]

嗯嗯,我倒不是被某门语言掰过来的,是后来转去写小说才想通,能把话平实讲清楚比绕弯子显本事踏实多了。现在看清爽的代码就觉得亲切。

snack__q
[链接]

我虽然不咋碰代码但太懂这感觉 以前也爱显摆 现在越简单越舒服 哈哈

void_us
[链接]

你说的"Python逼你显式"这点我不太同意。Python 的隐式一点不少:truthy 判断、dunder 方法、装饰器、with 语句,全是隐式糖衣。"显式优于隐式"这句本身来自 PEP 20(import this),但 Python 从没逼你照做,紧凑写法照样能写得天书一样。

把炫技党掰过来的通常不是语言,是三个月后凌晨三点回来改自己代码的瞬间,或者第一次 code review 被同事打回。可读性本质是个维护成本问题,不是品味问题。

Genau,你现在 solo 还是有人 review?

meh40
[链接]

以前我也爱搞哪种嵌套三层的列表推导,觉得自己特聪明。直到有天debug看到自己写的东西完全想不起逻辑,当场把电脑合上装死。不是

现在写代码恨不得把每个变量名都写成小作文,丑是丑了点但保命啊。楼主说的“机器只是顺便执行一下”这句太真实了,代码首先是给同事看的,其次才是给cpu吃的。显式党永不退坑哈哈

vintage2003
[链接]

我年轻的时候也觉得把事绕复杂了才显得牛,后来吃过点亏才懂,直白比花哨管用。

sage_dog
[链接]

楼主这话让我想起刚学做饭那会儿。我倒不是被哪门语言从炫技党掰成显式党的,是被后厨掰的。
这事吧
留学时候在唐人街一家馆子帮工,那阵子总想显得自己懂行,切个菜都要拽两句行话,挨过厨师长好几顿骂。后来慢慢看明白了,真有两下子的老师傅从不绕弯子,教火候就一句"这儿多等三秒",清清楚楚。反倒是半吊子最爱堆术语,听半天不知道他到底要干嘛。

你说"代码写给人看",我是真服气。怎么说呢能把事摊开讲明白,比显得自己厉害值钱多了。能清楚就别装神秘,这道理放哪儿都通……

byte__z
[链接]

我以前也迷过那种"你不懂就是菜"的紧凑写法。后来改成逻辑一层层铺开,三个月后回来自己还能读懂,比显得厉害管用。显式说到底是对未来的自己手下留情。

bookworm_v
[链接]

先把"啰嗦"和"显式"拆开,这俩值得商榷,不是一回事。

你管这叫暴论,其实 Explicit is better than implicit 是 Python 之禅(PEP 20)的第二句,本来就是官方设计信条,谈不上反共识。真正该掰扯的是你把显式约等于写得多。显式指的是把假设和意图摊开,不是把行数堆长。sum(prices) 比一个带累加器的五行 for 循环更显式——它明确说了"我在求和",反而更短。所以"啰嗦等于显式"这个换算本身有点松。

其实可读性也得看读者是谁。Buse 和 Weimer 二〇一〇年那篇 A Metric for Software Readability 有个反直觉的结果:开发者自评的好读程度和实测理解耗时经常对不上,主要驱动因素是熟悉度。换句话说,[x*x for x in nums] 对熟 Python 的人比五行循环顺眼,不全是炫技,也可能是你们在同一个母语圈。所谓"我懂你不懂"的紧凑写法,问题往往不在紧凑,而在读者不在那个圈里。

从某种角度看,隐式有时是省事的优点。Python 的鸭子类型和那些 dunder 协议,让你写一份泛型代码就能跨类型跑,不用显式分支——这种隐式恰恰削掉了样板噪音。把每一步都摊开,反而可能用仪式感盖住真正的主逻辑。

所以与其说显式永远压隐式,不如说该说的说清楚、剩下的信任读者。你那个从炫技转过来的拐点,是被哪段代码劝退的?

[首页] [上篇] 第 1 / 1 页 [下篇] [末页] [回复]
需要登录后才能回复。[去登录]
回复此帖进入修真世界