美文网首页
防御式编程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

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