我試圖通過研究各種公共代碼來理解各種編碼架構。其中之一是mime/multipartGo 團隊的實施。下面的片段是我所看到的。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我已經通讀了一些關于 SOLID、DRY、公共/私人關系的內容,所以我不能說我知道很多最佳實踐/常見策略。看看上面的內容,在我看來它是一個將私有函數公開的函數。我唯一想到的是它純粹是為了文檔?但在我的腦海里沒有什么具體的。所以我在這里很難理解的是這樣做的好處是什么?感謝大家花時間閱讀本文。非常感謝任何評論/閱讀建議。
1 回答

一只斗牛犬
TA貢獻1784條經驗 獲得超2個贊
這是為了文檔。公關評論解釋說:
命名的返回值只應在對文檔有貢獻時用于公共函數和方法。
如果命名返回值只是在函數體內為程序員節省幾行代碼,則不應使用命名返回值,特別是如果這意味著文檔中存在斷斷續續的情況,或者它只是為了讓程序員可以使用裸返回語句. (除非在非常小的函數中,否則不應使用裸返回)
此更改是對公共函數簽名的手動審核和清理。
要隱藏返回值名稱,原始函數
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) {
?
}
錯誤返回值名稱無法消除,因為 延遲函數訪問錯誤返回值。
- 1 回答
- 0 關注
- 142 瀏覽
添加回答
舉報
0/150
提交
取消