Go   发布时间:2022-04-09  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了GO语言 代码的嵌套——各种状态的组合大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

原创翻译文章,转载请注明出处:服务器非业余研究-sunface

对于代码风格的争议由来已久:程序员在一段代码中到底该使用多少嵌套或者缩进结构。请先看看下面两个例子:

在第一个例子中,如果我们想在高亮代码附近进行debug,那么我们需要记住哪些呢?

@H_502_11@func (g *Gopher) WriteTo(w io.Writer) (sizE int64,err error) { err = binary.Write(w,binary.LittleEndian,int32(len(g.Name))) if err == nil { size += 4 var n int n,err = w.Write([]byte(g.Name)) size += int64(n) if err == nil { err = binary.Write(w,int64(g.AgeYears)) if err == nil { size += 4 } return } return } return } @H_502_11@答案是:在高亮代码之前的每个if语句,这些语句每个都是一种状态。接下来请继续看看第二例子: @H_502_11@func (g *Gopher) WriteTo(w io.Writer) (sizE int64,int32(len(g.Name))) if err != nil { return } size += 4 n,err := w.Write([]byte(g.Name)) size += int64(n) if err != nil { return } err = binary.Write(w,int64(g.AgeYears)) if err == nil { size += 4 } return } @H_502_11@ @H_502_11@在这个例子中,高亮代码对于代码之前的逻辑(它到底从哪里来的)所关心甚少 —— 它所需要知道的就是我们的代码已经执行到这里了。这种扁平的、大量“失败-返回”的结构可以被称为“迅速失败”模式:在这种模式中,当你执行到代码底部时,你只需要一种状态:代码已经执行到最后了,并且成功了,并不需要向上层逐层返回。所以你可以忽略这个状态之前的所有代码和过程。当然了这两段代码在逻辑上是等价的。 @H_502_11@最后不得不谈到心智模型——当工作在一段本地代码(本地状态)的时候你还要记住那些“非本地元素”列表(代码耦合度很高)。对于作者来说“非本地元素“列表就是非本地状态的一种很好的定义。所以请记住避免状态之间的耦合,尽量采用第二种模式来实现你的代码

原文地址:http://clipperhouse.com/2014/03/30/nesting-is-state/

大佬总结

以上是大佬教程为你收集整理的GO语言 代码的嵌套——各种状态的组合全部内容,希望文章能够帮你解决GO语言 代码的嵌套——各种状态的组合所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。