我試圖通過研究各種公共代碼來理解各種編碼架構(gòu)。其中之一是mime/multipartGo 團(tuán)隊的實施。下面的片段是我所看到的。https://cs.opensource.google/go/go/+/refs/tags/go1.19.3:src/mime/multipart/formdata.go;l=156func (r *Reader) ReadForm(maxMemory int64) (*Form, error) { return r.readForm(maxMemory)}func (r *Reader) readForm(maxMemory int64) (_ *Form, err error) { form := &Form{make(map[string][]string), make(map[string][]*FileHeader)} defer func() { if err != nil { form.RemoveAll() } }() // Reserve an additional 10 MB for non-file parts. maxValueBy...more code here我已經(jīng)通讀了一些關(guān)于 SOLID、DRY、公共/私人關(guān)系的內(nèi)容,所以我不能說我知道很多最佳實踐/常見策略??纯瓷厦娴膬?nèi)容,在我看來它是一個將私有函數(shù)公開的函數(shù)。我唯一想到的是它純粹是為了文檔?但在我的腦海里沒有什么具體的。所以我在這里很難理解的是這樣做的好處是什么?感謝大家花時間閱讀本文。非常感謝任何評論/閱讀建議。
1 回答

一只斗牛犬
TA貢獻(xiàn)1784條經(jīng)驗 獲得超2個贊
這是為了文檔。公關(guān)評論解釋說:
命名的返回值只應(yīng)在對文檔有貢獻(xiàn)時用于公共函數(shù)和方法。
如果命名返回值只是在函數(shù)體內(nèi)為程序員節(jié)省幾行代碼,則不應(yīng)使用命名返回值,特別是如果這意味著文檔中存在斷斷續(xù)續(xù)的情況,或者它只是為了讓程序員可以使用裸返回語句. (除非在非常小的函數(shù)中,否則不應(yīng)使用裸返回)
此更改是對公共函數(shù)簽名的手動審核和清理。
要隱藏返回值名稱,原始函數(shù)
func (r *Reader) ReadForm(maxMemory int64) (f *Form, err error) {
?
}
改為
func (r *Reader) ReadForm(maxMemory int64) (*Form, error) {
return r.readForm(maxMemory)
}
func (r *Reader) readForm(maxMemory int64) (_ *Form, err error) {
?
}
錯誤返回值名稱無法消除,因為 延遲函數(shù)訪問錯誤返回值。
- 1 回答
- 0 關(guān)注
- 140 瀏覽
添加回答
舉報
0/150
提交
取消