当前位置: 首页 > news >正文

成都网站建设设计公司排名建设工程网站新专家入库

成都网站建设设计公司排名,建设工程网站新专家入库,西宁建设网站多少钱,o2o平台排名今天,我想谈谈相当简单的事情。我不会发明什么,但我在生产代码中经常看到这样的事情,所以我不能回避这个话题。 我经常要解开多个复杂的 if else 结构。多余的缩进、过多的逻辑只会加深理解。首先,这篇文章的主要目的是让代码更透…

今天,我想谈谈相当简单的事情。我不会发明什么,但我在生产代码中经常看到这样的事情,所以我不能回避这个话题。

我经常要解开多个复杂的 if else 结构。多余的缩进、过多的逻辑只会加深理解。首先,这篇文章的主要目的是让代码更透明、更易读。不过,在某些情况下还是必须使用这些操作符。

else 操作

例如,我们有简单的用户处理程序:

func handleRequest(user *User) {if user != nil {showUserProfilePage(user)} else {showLoginPage()}
}

如果没有提供用户,则需要将收到的请求重定向到登录页面。If else 似乎是个不错的决定。但我们的主要任务是确保业务逻辑单元在任何输入情况下都能正常工作。因此,让我们使用提前返回来实现这一点。

func handleRequest(user *User) {if user == nil {return showLoginPage()} showUserProfilePage(user)
}

逻辑是一样的,但是下面的做法可读性会更强。

break 操作

对我来说,BreakContinue 语句总是可以分解的信号。

例如,我们有一个简单的搜索任务。找到目标并执行一些业务逻辑,或者什么都不做。

func processData(data []int, target int) {for i, value := range data {if value == target {performActionForTarget(data[i])break}}
}

你应该始终记住,使用 break 操作符并不能保证整个数组都会被处理。这对性能有好处,因为我们丢弃了不必要的迭代,但对代码支持和可读性不利。因为我们永远不知道程序会在列表的开头还是结尾停止。

在某些情况下,带有子任务的简单功能可能会破坏这段代码。

func processData(data []int, target int, subtask int) {for i, value := range data {if value == subtask {performActionForSubTarget(data[i])}if value == target {performActionForTarget(data[i])break}}
}

这样我们实际上可以拆出一个 find 的方法:

func processData(data []int, target int, subTarget int) {found := findTarget(data, target)if found > notFound {performActionForTarget(found)}found = findTarget(data, subTarget)if found > notFound {performActionForSubTarget(found)}
}const notFound = -1func findTarget(data []int, target int) int {if len(data) == 0 {return notFound}for _, value := range data {if value == target {return value}}return notFound
}

同样的逻辑,但是拆分成更细粒度的方法,也有精确的返回语句,可以很容易地通过测试来实现。

continue 操作

该操作符与 break 类似。为了正确阅读代码,您应该牢记它对操作顺序的具体影响。

func processWords(words []string, substring string) {for _, word := range words {if !strings.Contains(word, substring) {continue}// do some buisness logicperformAction(word)}
}

Continue 使得这种简单的流程变得有点难以理解。

让我们写得更简洁些:

func processWords(words []string, substring string) {for _, word := range words {if strings.Contains(word, substring) {performAction(word)}}
}

关注公众号【爱发白日梦的后端】分享技术干货、读书笔记、开源项目、实战经验、高效开发工具等,您的关注将是我的更新动力!

http://www.yayakq.cn/news/945337/

相关文章:

  • 建设部网站业绩如何录入最新seo教程
  • 推广网站优化seo教程上排名龙岩长汀小程序开发
  • 可以做数据图的的网站三个字吉利好听的公司名称
  • 购物网站项目介绍代做毕业设计找哪个网站
  • 网站建设的布局种类内容管理系统 开源
  • 淄博网站制作公司淘宝网站可以做轮播吗
  • 网站建设业务拓展国际军事新闻在哪看
  • 童装东莞网站建设技术支持杭州网站建站模板
  • 网站推广营销策划方案设计方案翻译
  • 买好域名后怎么做网站深圳市住建局官网
  • 西安网络推广西安seo按天收费
  • 在本地做改版如何替换旧网站会影响百度收录吗恩施建设网站
  • 网站怎么制作 推广资源搜索引擎搜索神器网
  • 17做网站骗子四平网络推广
  • 如何在服务器上关闭网站丹寇服饰官方网站
  • 深圳seo网站推广方案做网站的公司主营成本应该写啥
  • 权重网站建设吉首做网站
  • 企业网站设计需要了解国外网站有哪些平台
  • 佛山公益网站制作百度公司注册地址在哪里
  • 做公司网站需要会什么设计网站要多少钱
  • 网站建设及运营服务流程开发app费用一览表
  • 建设网站用什么语言编写高级设计网站
  • 网站设计介绍演讲模板下载wordpress 3.8 漏洞
  • 网站开发容易找工作吗市场营销策略分析
  • 鹤壁市做网站外包seo公司
  • 长春建站软件有什么好网站做浏览器主页
  • 深圳还有网站北京企业官网网站建设
  • 应式网站公司网站在百度搜不到
  • 水陆运输类网站如何建设html网站头部如何制作
  • 绍兴专业做网站的公司模拟wordpress