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

服装网站建设策划案房地产网站推广

服装网站建设策划案,房地产网站推广,服务专业的网页制作公司,网络营销类型有哪些今天,我想谈谈相当简单的事情。我不会发明什么,但我在生产代码中经常看到这样的事情,所以我不能回避这个话题。 我经常要解开多个复杂的 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/900049/

相关文章:

  • 图盛网站建设什么软件是做网站模板的
  • 江阴市建设局网站wordpress 翻页失效
  • 找人做网站注意什么问题网站开发方法 优帮云
  • 网站建设与管理教学大纲高古楼网站 做窗子
  • 建手机网站公司电商平台开发流程
  • 怎么用vps建网站深圳全胜专业网站建设
  • 做的网站怎样评估价值山西网站seo
  • 中国网站的特点wordpress 多媒体
  • 网站建设 招聘微信公众号和网站建设
  • 汽修网站怎么做广州建设网站的公司
  • phpcms网站seo怎么做公司网站建设服务费计入什么科目
  • 网站开发属于何种合同网站建设 源代码归属
  • 广西网站建设开发外包wordpress带数据
  • 手机网站栏目结构图可以访问境外的浏览器
  • 教育学校网站源码 php软件外包平台哪家可信赖
  • 查询网站空间的服务商做外汇网站卖判刑多少年
  • 网站建设类行业资讯企业网页如何制作
  • 如何把一个静态网站大连网站建设公司
  • 京东pc网站用什么做的网站我们的客户
  • 重庆机有哪些网站建设公司网站seo优化很好徐州百度网络点赞
  • 深圳seo网站推广报价合肥网站建设王正刚
  • 郑州市做网站的软文代写
  • 智慧团建网站怎么转团关系安卓软件下载平台
  • 国外 作品集 网站辽源市网站建设
  • 特价网站建设价格低沈阳大熊网站建设制作
  • 上海大型网站制作公司安阳流调报告
  • 网站上放百度地图怎么建立的英文怎么读
  • 网站制作 软件开发为什么要建设公司网站
  • 郑州推广网站网络服务运营商
  • 做刷单网站犯法吗网站推广初期目标