前幾天整了一個命令行待辦事項管理器:medum。注意到自己已經有一陣子沒發過文章了,正好今晚有空,把它拿出來隨便聊聊,順便水一篇 233((
名稱由來#
這個項目叫做medum。因為它的開發目的是防止我忘記ddl,所以從一開始,它就是作為一個備忘錄(memorandum)被設計的。我從memorandum這個單詞中取了前兩個和後三個字母進行拼接,於是medum誕生了。
代碼結構#
具體的開發初衷已經寫在了README.md裡,所以接下來就說說代碼結構吧。
下面是所有的代碼文件:
每個模塊的功能如下:
path.go:負責獲取配置文件夾路徑,配置文件路徑和 sqlite 數據庫路徑。config.go:負責讀取配置文件,並在配置文件不存在的情況下寫入默認配置。public.go:存放公共的結構體,包括在多個文件進行引用的Configuration(配置文件)、Event(事項)。sqlite.go:sqlite 數據庫的打開,插入,更新,查詢,刪除功能的實現。text.go:存放該程序近乎所有的文本信息(包括報錯、提醒以及 sql 語句)。output.go:將配置文件的顏色映射為函數,對彩色輸出函數的反射調用進行一層封裝。
設計思路#
-
首先從功能出發,既然要讀取文件,那麼獲取路徑是必須的,於是首先考慮實現
path.go: -
有了路徑,接下來就是要到路徑中讀取文件啦,但文件讀入到哪兒呢?為了讓內容有處可去,應該先實現一個配置文件的結構體。考慮到配置文件自定義的是顏色,必定需要被輸出模塊讀取,所以將其分離放在
public.go裡,接著再寫config.go: -
實現了配置文件的讀取,緊接著就是數據的操作了,考慮實現
sqlite.go,但為了方便修改,儘量將所有的文本內容與邏輯分離,需要先寫text.go,但在這之前,還要先考慮好事件結構體的內容,所以最終順序是public.go->text.go->sqlite.go: -
接下來考慮實現
output.go: -
萬事俱備,最後只需要在主函數中完成調用邏輯即可(當然還需要補全一些錯誤輸出、給用戶的提示等等,不過那些已經很簡單了):
這樣下來,預想的功能就實現的差不多了,任務成功完成。
結束語#
okk,這樣就結束啦,算是寫了一個小總結吧。
代碼基本全程都有註釋(不過為了符合golang的規範,使用的是塑料英語 XD),覺得自己代碼寫的還是蠻易讀的,歡迎大家閱讀給出建議哦!