Skip to main content

專案中的Cobra&Viper設定

此次的專案連結 https://github.com/kevinyay945/2023_asset_management/tree/v0.1.1

在一個專案中,環境變數的取得往往是一個專案一定會遇到的狀況 在golang中,最常見的作法不外乎就是使用os.Getenv("env_name")來取得環境中的變數

但這其實有時候會造成一些困擾,你大部分的程式都是直接使用os.Getenv("env_name"),在未來如果剛好你的你取得環境變數的方式改變了,那你整個程式中有用到這個變數的部分都要去更改code

這對程式來說也是某部分的外部依賴,但因為這個變數可能在整個程式中到處都會使用,我也不希望他會有任何的依賴,因此,我這次選擇將他放在helper中,來讓程式來使用

而會選擇使用Method的方式來取得變數,而不是使用Property來取得內容,主要是因為如果使用的是Property,就沒辦法每次都去重新取得正確的內容(如果電腦端的環境變數更動了,這樣才可以在每次使用到的時候取得到最新的變數)

另外,關於Golang的命名規則,我這次是依照EffectiveGo的建議(https://go.dev/doc/effective_go#names)

因為Golang沒有Getter跟Setter的概念,在這篇文章中會建議 如果是Getter,就直接放上名稱,Setter才在前面加上Set

另外關於Interface的命名則會建議在後面加上...er