個人關於命令列工具使用者介面設計的愚見

2021-08-25 23:28:06 字數 1555 閱讀 9472

摘要:嵌入式軟體的介面設計,嵌入式軟體生產過程所用工具的介面設計,其實不僅僅侷限於嵌入式軟體領域,因為這也是借鑑其他領域的,其他領域也可以再借鑑回去嘛。宣告一點,lz不是做介面設計的,lz參與開發的嵌入式軟體更是沒有gui介面的,所以想看的留下,不想看的剛快另尋佳文。

「使用者介面」是由兩個詞「使用者」和「介面」兩個詞組成的,所以首先搞清楚「使用者」是誰,然後再提供給他什麼「介面」。lz參與開發的軟體對終端使用者雖然是沒有gui 介面,但是也有不少其他介面啊,比如要提供執行告警,要提供一些維護指令(終端使用者雖然不用但我們的維護人員需要啊),所以這裡你就看出來,針對不同的使用者,介面的概念都是不一樣的。所以談到使用者介面,不要一下子就想到搞的那個gui怎麼樣啊,首先要看這個環境的使用者是誰。

平時我們都是針對終端使用者談使用者介面的,其實你還有其他介面,比如為了除錯和測試提供的介面,也不一定是gui介面,可能是命令列引數,還有程式執行過程資訊,終端使用者不會看,但是開發除錯要看的。所以你的軟體肯定也是針對不用的使用者,不同的目的,設計進了不同的inte***ce吧

先來看兩個較為反面的例子。

例1,別人寫的工具,用來把幾個檔案合併成乙個檔案用的,該軟體要求(1)命令列引數中指明需要合併的檔案的檔名,要求(2)將指定用途的檔案命名成固定的檔名才能正確將它們合併。就是說既要我通過引數輸入進去,還要求預先把它們命名成指定名稱呢,剛開始我還不知道有(2),合併出來的檔案不對,後詢問工具維護者才得知還有要求(2)。

例2,不知道哪位大俠寫的工具,反正公司很多專案在用,用了很久了。輸入引數也是乙個檔案,要求是《檔名》,開始一直用著也沒啥,自己還另外開發了一套更便捷的autoit指令碼來執行這個工具,挺爽的。前不久,新專案換了平台,我還想使用原來那套自己開發的指令碼,需要替換原來那個工具,那就自己搞乙個吧,輸入引數完全一樣,用熟悉的autoit來搞,結果autoit沒法接收<>包含起來的引數,它可能見到《就以為我要用指定檔案的內容做輸入吧,沒辦法,模擬不了原來那個工具,只好修改那套autoit指令碼在呼叫兩個不同的工具時輸入不同的引數。這還不是最坑爹的,部分同事新領的電腦系統成win7啦,原來那個工具在win7下不能用,怎麼相容執行也不行。

看了兩個不太好的例子,那好的設計應該是什麼呢?好的啊,這個,你就看作業系統提供的那些命令就可以啦,windows的linux的都可以,看那些最常用的程式的引數格式是什麼,直接抄襲借鑑這些廣為人知的命令是最好的辦法,千萬不要特立獨行設計出違反常識的格式,比如你要那個方括號把檔名括起來有啥好處麼?

命令列引數應該怎麼設計,請閱讀《command-line inte***ce - wikipedia, the free encyclopedia

維基中文不給力,搜尋了半天,中文找到這麼一篇 《linux命令列引數處理 - 聯城技術網

同乙個工具,只提供cli或只提供gui可以麼?

windows下自帶的ping程式只有cli吧,現在的linux發行版則都在cli的ping之外還安裝了圖形化使用者介面的網路工具。

對於有自動執行要求的應用來說,當然不能只提供gui介面,所以面向開發人員使用的工具,不怕cli,對他們來說有時cli反而是優勢。所以,你的程式怎麼設計知道了吧。

很多linux下的應用都是命令列的後端程式,還有另外的專案在此之上提供gui前端。可以照搬一下。

命令列工具

在wince6.0 中,在vs2005 的 build 選單中,有乙個 advanced build commands 其中有很多編譯選項 sysgen 相當於執行命令 blddemo q 一般第一次編譯或者是 改變了 catalog 中的item 的時候,就用這個了。clean sysgen 相當...

命令列工具

執行 scws h 可以看到詳細幫助說明。usage scws options i input o output i string file 要切分的字串或檔案,如不指定則程式自動讀取標準輸入,每輸入一行執行一次分詞 o file 切分結果輸出儲存的檔案路徑,若不指定直接輸出到螢幕 c charse...

c mysql命令列 mysql 命令列工具

1 mysql命令選項 2 mysql命令 3 mysql日誌 4 mysql服務端幫助 5 執行mysql指令碼 6 使用技巧 mysql是乙個能夠編輯輸入行的簡單sql shell,支援互動式和非互動式訪問。使用互動式時,查詢結果以ascii表的格式展示。使用非互動式時,查詢結果以製表符分隔的格...