当前位置: 首页 > 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/746498/

相关文章:

  • 厦门做网站维护的公司贵阳好的网站建设
  • 做付费网站好新媒体运营培训学校
  • 文山文山市网站建设漳州正规网站建设价格
  • 福建漳州网站建设哪家便宜购物网站开发的管理可行性
  • 如何网站建设公司wordpress快速制作app
  • 珠海图远建设公司网站多个网站备案
  • 电商网站开发广东大唐建设网站
  • 连江厦门网站建设公司桥西区建设局网站
  • 支付网站搭建华为网站建设费用
  • 网站开发的实例教程佛山网站专家
  • 专用车网站建设价格dw怎么做网站教程
  • 网站开发用了哪些知识要点信誉好的广州做网站
  • 公司网站开发毕业设计wordpress 修改页面内容
  • 有了域名和主机怎么做网站地信的网站建设
  • 企业手机网站建设有网站网站合作建设
  • 全国建筑网站wap网站欣赏
  • 做零食网站怎么样健康中国app
  • 如何选择常州网站建设长沙房地产信息网官网
  • 吉林省网站建设公司网站建设大量定制阶段
  • 开传奇怎么建设自己的网站wordpress生成的网页
  • 做网站的毕设用什么软件百度经验手机版
  • 霞浦建站公司什么叫网站app
  • 服务器怎么设置ip做网站中国建行网银登录
  • 阜新市建设学校官方网站成都百度公司怎么样
  • 《电子商务网站开发与管理》查询网站外链
  • 宁波大型网站建设网站开发工具的选择
  • 解析软件的网站淘宝标题优化工具推荐
  • 湘潭网站建设设计关于网站开发的论文
  • 爱站网关键词搜索工具莱芜论坛莱芜话题
  • 汕头多语种网站制作兰州论坛网站建设