[闲聊] 呼吁大家多遵守交通规则

楼主: cuello (cuello)   2018-11-02 10:42:03
容我发发牢骚,请包涵
这学校老师应该都讲过吧...
写程式时,要记得回传个有意义的 exit code
不然, 别的程式往往都要额外浪费时间处理
当然, 特别是指令行程式, GUI 就不那么在.
但是无论是用 C 来 code, 还是任何 script
都有我们应该共同遵守的交通规则.
事情是这样的
刚刚用到 pacmd(1)
这是 pulseaudio-utils 套件里的程式
$ pacmd set-default-sink 1
$ echo $?
0
$ pacmd set-default-sink 你老师
Sink 你老师 does not exist.
$ echo $?
0
对的给 0, 不对的也给 0
那我不是还要去 parse "你老师" 那一行
来判断这个指令的执行结果
(而且"你老师"也应该送到 stderr,
不是 stdout, 虽然此处并不关键...)
要是每个 CLI 程式都采这样行为
我看我这个小 script 起码变成两倍大
而且要多花一倍的时间在这上面
没记错的话, 上一次碰到的是 xrandr(1)
搞得整个地球上的人都在想办法绕道...
大家都遵守交通规则, 最后受益的也是大家
而且整体效率一定会显著提升
有一次, 搭德国人车子在县道
远看, 另一台高速从旁边冲出来
这个德国朋友却继续谈笑, 不减速
我紧张地用手指著那台车....
他只说
没关系, 我们在干道
然后继续向前冲, 眼看就...
咦? 他真的停下来了也!
这样不是大家都省事吗?
多包涵吧
作者: dou0228 (7777)   2018-11-02 10:44:00
这很正常,一堆程式搞不清楚啥该送去stderr/stdoutexit code 就更不用说最后变成 跑去 pipe grep string
作者: Neisseria (Neisseria)   2018-11-02 14:01:00
这不就是命令列程式的日常吗? XD
作者: newversion (海纳百川)   2018-11-02 21:07:00
man 看看, exit status 有没有乱唬人
作者: lantw44 (#######################)   2018-11-02 23:58:00
印象中还看过有人用相反,正确回 1 错误回 0 的……
作者: LinBuoRen (林博仁)   2018-11-03 20:22:00
送 patch 造福万千
作者: final01 (牛顿运动定律)   2018-11-05 23:26:00
其实你要多动动脑不是要人跟随你的规则...
作者: Gold740716 (项为之强)   2018-11-06 20:53:00
也不是所有错误都要返回,像 rm -f 就算找不到档案,也不会回报错误。
楼主: cuello (cuello)   2018-11-07 05:31:00
SUCCESS 正是 -f 这选项的主要功能喔换句话说,-f 正是为了回报 SUCCESS 而设计的所以它的行为是符合设计的 feature, 不是 bug
作者: dou0228 (7777)   2018-11-07 08:50:00
我以为这已经是常识等级,没想到还是需要解释
楼主: cuello (cuello)   2018-11-07 10:29:00
现代公民实在太忙了,没空看说明书前辈们有空的话,还请多多推广交通安全常识其实我应该多加一句话,效果可能会更好的... 好吧
作者: newversion (海纳百川)   2018-11-07 17:50:00
有人应要脚踏车上高速公路,考验汽车驾驶的智慧?
作者: bitlife (BIT一生)   2018-11-12 11:07:00
本文提的其实有点像rm -f 没删到档算正常结束还是错误?这点我是觉得由开发者决定,而不像rm删除权限不足一样确定是错误.ls 也类似 'ls 你老师' 但没'你老师'算不算错误?如果没有档案算错误,那么 ls *a 但没有a结尾这些都得变错误. 所以还是可能还是由开发者决定a结尾的档目前linux的rm是设计-f来区隔,没用-f没找到档就算错误ls无类似机制,没找到就报错. 你文中的例子比较倾向ls
作者: Bencrie   2018-11-12 12:27:00
那个行为 POSIX 应该有规范吧

Links booklink

Contact Us: admin [ a t ] ucptt.com