美文网首页
防御式编程EAFP vs LBYL

防御式编程EAFP vs LBYL

作者: 樊海鹏 | 来源:发表于2018-03-17 16:53 被阅读0次

防御式编程EAFP vs LBYL

  • EAFP:easier to ask forgiveness than permission
  • LBYL:look before you leap

EAFP可以理解成一切按正常的逻辑编码,不用管可能出现的错误,等出了错误再说;而LBYL就是尽可能每写一行代码,都要提前考虑下当前的前置条件是否成立;

LBYL

def getPersonInfo(person):
if person == None:
print 'person must be not null!'
print person.info

EAFP

def getPersonInfo(person):
try:
print person.info
except NameError:
print 'person must be not null!'

其实用EAFP风格的代码最大的好处是代码逻辑清晰,而LBYL会导致本来两句话说清楚的事,往往因为穿插了很多条件检查的语句使代码逻辑变得混乱。Python社区更提倡EAFP形式的。另外还有一个原因,在高并发场景下, if条件如果是个表达式,会造成一致性问题,这个时候必须用EAFP形式。这个可以参考Glow团队的技术博客Glow cache structure.
j

相关文章

  • 防御式编程EAFP vs LBYL

    防御式编程EAFP vs LBYL EAFP:easier to ask forgiveness than per...

  • 响应式编程:ReactiveCocoa vs RxSwift

    响应式编程:ReactiveCocoa vs RxSwift 响应式编程:ReactiveCocoa vs RxS...

  • 函数响应式编程概述

    什么是编程? 面向过程 vs 面向对象 命令式编程 vs 函数式编程 函数响应式编程 满足函数式的一些特性 面向离...

  • 安全编程的实现方式

    借鉴文章 契约式编程与防御式编程 https://segmentfault.com/a/1190000007558...

  • 防御式编程

    最近业余时间在阅读《代码大全》,阅读“防御式编程”章节的时候非常受启发,自己之前对系统的错误处理这块也确实随意了。...

  • 防御式编程

    编写优秀的代码 代码是程序可识别的代码 代码是程序员可识别的代码 防御性编程 防御性编程(Defensive pr...

  • 防御式编程

    防御式编程 在防御式驾驶中要建立这样一种思维,那就是你永远也不能确定另一位司机将要做什么。这样才能够确保在其他人做...

  • react

    什么是声明式编程 声明式编程 vs 命令式编程 什么是函数式编程 什么是组件设计模式 React 是什么 Reac...

  • 契约式编程与防御式编程

    1. 防御式编程 对于 “防御式编程” ,《代码大全》给我们提供了一个定义: 人类都是不安全、不值得信任的,所有的...

  • GO学习笔记(12)-斐波那契数列与函数编程

    目录 函数指针 vs 函数式编程 闭包 斐波那契数列与函数接口 函数指针 vs 函数式编程 函数是go语言中的...

网友评论

      本文标题:防御式编程EAFP vs LBYL

      本文链接:https://www.haomeiwen.com/subject/anpjqftx.html