amtoaer

晓风残月

叹息似的渺茫,你仍要保存着那真!
github
telegram
email
x
bilibili
steam

medum-一款命令行待辦事項管理器

前幾天整了一個命令行待辦事項管理器: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:將配置文件的顏色映射為函數,對彩色輸出函數的反射調用進行一層封裝。

設計思路#

  1. 首先從功能出發,既然要讀取文件,那麼獲取路徑是必須的,於是首先考慮實現path.go

  2. 有了路徑,接下來就是要到路徑中讀取文件啦,但文件讀入到哪兒呢?為了讓內容有處可去,應該先實現一個配置文件的結構體。考慮到配置文件自定義的是顏色,必定需要被輸出模塊讀取,所以將其分離放在public.go裡,接著再寫config.go

  3. 實現了配置文件的讀取,緊接著就是數據的操作了,考慮實現sqlite.go,但為了方便修改,儘量將所有的文本內容與邏輯分離,需要先寫text.go,但在這之前,還要先考慮好事件結構體的內容,所以最終順序是public.go->text.go->sqlite.go

  4. 接下來考慮實現output.go

  5. 萬事俱備,最後只需要在主函數中完成調用邏輯即可(當然還需要補全一些錯誤輸出、給用戶的提示等等,不過那些已經很簡單了):

這樣下來,預想的功能就實現的差不多了,任務成功完成。

結束語#

okk,這樣就結束啦,算是寫了一個小總結吧。

代碼基本全程都有註釋(不過為了符合golang的規範,使用的是塑料英語 XD),覺得自己代碼寫的還是蠻易讀的,歡迎大家閱讀給出建議哦!

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。