[閒聊] 呼籲大家多遵守交通規則
容我發發牢騷,請包涵
這學校老師應該都講過吧...
寫程式時,要記得回傳個有意義的 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)
搞得整個地球上的人都在想辦法繞道...
大家都遵守交通規則, 最後受益的也是大家
而且整體效率一定會顯著提升
有一次, 搭德國人車子在縣道
遠看, 另一台高速從旁邊衝出來
這個德國朋友卻繼續談笑, 不減速
我緊張地用手指著那台車....
他只說
沒關係, 我們在幹道
然後繼續向前衝, 眼看就...
咦? 他真的停下來了也!
這樣不是大家都省事嗎?
多包涵吧
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.132.35.216
※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1541126525.A.F7E.html
推
11/02 10:44,
7年前
, 1F
11/02 10:44, 1F
→
11/02 10:44,
7年前
, 2F
11/02 10:44, 2F
→
11/02 10:44,
7年前
, 3F
11/02 10:44, 3F
推
11/02 14:01,
7年前
, 4F
11/02 14:01, 4F
→
11/02 21:07,
7年前
, 5F
11/02 21:07, 5F
推
11/02 23:58,
7年前
, 6F
11/02 23:58, 6F
推
11/03 20:22,
7年前
, 7F
11/03 20:22, 7F
推
11/05 23:26,
7年前
, 8F
11/05 23:26, 8F
推
11/06 20:53,
7年前
, 9F
11/06 20:53, 9F
→
11/06 20:53,
7年前
, 10F
11/06 20:53, 10F
→
11/07 05:31,
7年前
, 11F
11/07 05:31, 11F
→
11/07 05:34,
7年前
, 12F
11/07 05:34, 12F
→
11/07 07:01,
7年前
, 13F
11/07 07:01, 13F
只要我們是在 von Neumann 架構的計算機上工作
無論是用甚麼語言作 coding,一定要以某種可預期形式回報!
不然的話,這個程式上面將無法再構築穩固的建物
因為所導致的 undefined behaviour 個個都是不定時炸彈
請理解,不是不可以不回報,而是,不能給建照
我硬碟裡就有一堆 "臨時搭蓋的鐵皮屋",是等著自作自受的
是隨時要拆掉改建的,絕對不能拿出來租售給其它靈長類的
因為隨時會塌,更不能在上面繼續加蓋上去
(後記 1541557942) 就算從功利的角度來看好了
如果是在課堂上、考證照、或是面試
這些事情其實應該要反應在扣分上的
不知道是不是有人願意分享這方面的實務經驗?
局部來看, 在類 UNIX 系統上工作, "0" 與 "非 0"
是相當有效的第一層分類,依需求,再各自定義 "非0" 類別
另一方面,stdout 與 stderr 則屬訊息的類別,或是"分流"
問: 請給我某某東西吃
答: 我沒有這個東西給你吃 (應該吐到 stderr)
因為 "我沒有這個東西給你吃" 本身並非提問者所期待的標的
這不是給提問者吃的,而是一種 meta-language.
ᆬu有從 stdout 吐出來的,才是給提問者吃的
當然,有些問題本身是不期待 stdout 的,這另當別論
屬於 FAQ 裡常見的,前一陣子看到的,沒時間回應,
$ ./a.out
為甚麼要這麼麻煩,還要 "./"? 為甚麼不乾脆
$ PATH=.:$PATH
因為在類 UNIX 系統上,有嚴格的食品安全政策
可以吃的,不能吃的,過期、來路不明的食物,都分們別類
想吃東西就要到a固定食物櫃拿,如果隨地檢來就吃的話...
一個古典的典型教案就是 /tmp/ 裡面來路不明的食物
因為 /tmp/ 是誰都可以亂丟東西的地方, 而且是 755
就在那裡等嘴饞的人.
※ 編輯: cuello (220.132.35.216), 11/07/2018 08:11:02
※ 編輯: cuello (220.132.35.216), 11/07/2018 08:36:10
推
11/07 08:50,
7年前
, 14F
11/07 08:50, 14F
→
11/07 10:29,
7年前
, 15F
11/07 10:29, 15F
→
11/07 10:30,
7年前
, 16F
11/07 10:30, 16F
→
11/07 10:31,
7年前
, 17F
11/07 10:31, 17F
※ 編輯: cuello (220.132.35.216), 11/07/2018 10:37:51
→
11/07 17:50,
7年前
, 18F
11/07 17:50, 18F
→
11/12 11:07,
7年前
, 19F
11/12 11:07, 19F
→
11/12 11:07,
7年前
, 20F
11/12 11:07, 20F
→
11/12 11:08,
7年前
, 21F
11/12 11:08, 21F
→
11/12 11:09,
7年前
, 22F
11/12 11:09, 22F
→
11/12 11:10,
7年前
, 23F
11/12 11:10, 23F
→
11/12 11:10,
7年前
, 24F
11/12 11:10, 24F
→
11/12 11:10,
7年前
, 25F
11/12 11:10, 25F
→
11/12 11:12,
7年前
, 26F
11/12 11:12, 26F
→
11/12 11:14,
7年前
, 27F
11/12 11:14, 27F
→
11/12 12:27,
7年前
, 28F
11/12 12:27, 28F
Linux 近期熱門文章
21
56
PTT數位生活區 即時熱門文章