少写 if-else,用结构替代判断,让逻辑“自解释”。 一、最基础的规范:先把 if-else 写干净 1. 禁止嵌套超过 2 层 嵌套多了就是“箭头代码”,没人看得懂。 2. 尽早 return,减少 else 坏写法:python def check(age): if age >= 18: return True else: return False 好写法:python def check(age): if age < 18: return False return True 3. 条件表达式尽量短,复杂条件抽成函数python 坏 if user.age >= 18 and user.vip and not user.banned and order.price > 100: 好 def can_discount(user, order): return user.age >=18 and user.vip and not user.banned and order.price>100 if can_discount(user, order): 二、条件多的时候:用「策略模式 / 字典映射」干掉 if-else 适合:状态判断、类型判断、命令分发、多分支业务。 示例:根据类型走不同逻辑 坏写法(典型垃圾代码): python if type == 'add': add() elif type == 'delete': delete() elif type == 'update': update() else: default() 规范写法(字典映射,可扩展、易维护): python handler_map = { 'add': add, 'delete': delete, 'update': update, } def handle(type): return handler_map.get(type, default)() 优点: - 新增逻辑只加一行,不用改原有代码 - 结构清晰,一目了然 - 可配置、可热更新、可测试 三、多条件组合:用「责任链 / 过滤器链」 适合:表单校验、权限判断、多规则过滤。 示例: python validators = [ check_user_exist, check_user_vip, check_order_price, check_address ] for v in validators: if not v(): return False return True 避免一长串 if A and B and C and D 。 四、面向对象场景:用多态替代 if-else 适合:不同角色/不同类型有不同行为。 坏写法: java if (role == ADMIN) { adminPermission(); } else if (role == USER) { userPermission(); } 规范写法: java interface Role { void permission(); } class Admin implements Role { ... } class User implements Role { ... } // 使用 role.permission(); 五、真正工程化的 5 条铁律(最实用) 1. 禁止深层嵌套,超过 2 层必须重构 2. 能用卫语句(guard clause)就不用 else 3. 多分支优先用表驱动(map/dict) 4. 复杂条件抽成独立函数/方法 5. 相同逻辑的判断只写一次,不要复制粘贴 六、一句话总结 - 1~2 个条件:正常 if + 尽早 return - 3~5 个条件:表驱动(字典/映射) - 5 个以上或业务复杂:多态 / 策略模式 / 责任链 - 永远不要写“箭头式嵌套”
少写if-else,用结构替代判断,让逻辑“自解释”。 一、最基础的
大别山人续说外国故事
2026-04-14 12:04:21
0
阅读:0