• Python 代码整洁优化


    1.提炼函数

    # 提炼之前
    def user_info():
        users  =  db.session.query(User).all()
        for user in users:
            print(user.name)
            print(user.gender)
    
    # 提炼之后
    def user_info():
        users  =  db.session.query(User).all()
        for user in users:
            print_user(user)
     
     
    def print_user(user):
        print(user.name)
        print(user.gender)

    2.避免不必要的if..else..

    # 优化前
    def compare(x):
        if x > 8:
            return True
        else:
            return False
    
    # 优化后
    def compare(x):
        return x > 8

    3.不要对参数赋值

    # 优化前
    def amount(price,number)
        if number > 40:
            price = 25
    
    # 优化后
    def amount(price,number)
        new_price = price
        if number > 40:
            new_price = 25

    4.替换逻辑

    # 优化前
    def func(x):
        if x == "sqlserver":
            return 1
        if x == "oracle":
            return 2
        if x == "pgsql":
            retuen 3
        ...
    
    # 优化后
    map_x = {"sqlserver":1,"oracle":2, "pgsql":3}
    def func(x):
        return map_x[x]

    5.提炼类

    # 优化前
    class Employee(object):
        def __init__(self, name,gender,addresss, **kwargs):
            self.name = name
            ...
         
        def get_employee_education():
            return self.education
         
        def get_employee_company_info():
            company = Company()
            print company.name
            print company.address
    
    # 优化后
    class Employee(object):
        def __init__(self, name,gender,addresss, **kwargs):
     
            self.name = name
            self.company = Company()
            ...
     
    
        def get_employee_education():
     
            return self.education
     
         
        def get_employee_company_info():
            return self.company.info()

    6.以对象代替数组或者字典

    # 优化前
    user = list()
    user.append("name")
    user.append("age")
    user.append("gender")
    
    # 优化后
    user = User()
    user.name=""
    user.age = ""

    7.以常量代替魔法数据

    # 优化前
    def mianji(r):
        return 3.14 * r * r
    
    # 优化后
    PAI = 3.14
    def mianji(r):
        return PAI * r * r

    8.合并重复的条件片段

    # 优化前
    if True:
        amount = price * 0.95
        send(amount)
    else False:
        amount = price * 0.85
        send(amount)
    
    # 优化后
    if True:
        amount = price * 0.95
    else False:
        amount = price * 0.85
    send(amount)

    9.获取数据库表字段,按需要获取

    db.session.query(User).all()
     
    db.session .query(User.name).all()
     
    db.session.query(User).value(User.name)

    10.移除不必要的参数

    # 如果一些参数在函数体始终用不到,就需要移除

    11.将查询函数和修改函数分开

    #如将getUserAndAddLog() 替换成
    getUser()
    addLog()
    #函数职责要分明
  • 相关阅读:
    队列

    有序数组
    集合:一条规则决定性能
    基础数据结构:数组
    空间复杂度
    插入排序
    重新认识Javascript的一些误区总结
    Knockout: 使用knockout validation插件进行校验, 给未通过校验的输入框添加红色边框突出显示.
    Knockout: 使用CSS绑定和event的blur失去焦点事件, 给未通过校验的输入框添加红色边框突出显示.
  • 原文地址:https://www.cnblogs.com/songxiaohua/p/9534824.html
Copyright © 2020-2023  润新知