为什么要创建一个函数,该函数返回一行执行相同操作的函数?

我试图通过研究各种公共代码来理解各种编码架构。其中之一是mime/multipartGo 团队的实施。


下面的片段是我所看到的。https://cs.opensource.google/go/go/+/refs/tags/go1.19.3:src/mime/multipart/formdata.go;l=156


func (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、公共/私人关系的内容,所以我不能说我知道很多最佳实践/常见策略。


看看上面的内容,在我看来它是一个将私有函数公开的函数。


我唯一想到的是它纯粹是为了文档?但在我的脑海里没有什么具体的。


所以我在这里很难理解的是这样做的好处是什么?


感谢大家花时间阅读本文。非常感谢任何评论/阅读建议。


守着一只汪
浏览 117回答 1
1回答

一只斗牛犬

这是为了文档。公关评论解释说:命名的返回值只应在对文档有贡献时用于公共函数和方法。如果命名返回值只是在函数体内为程序员节省几行代码,则不应使用命名返回值,特别是如果这意味着文档中存在断断续续的情况,或者它只是为了让程序员可以使用裸返回语句. (除非在非常小的函数中,否则不应使用裸返回)此更改是对公共函数签名的手动审核和清理。要隐藏返回值名称,原始函数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) {   ⋮}错误返回值名称无法消除,因为 延迟函数访问错误返回值。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go