• 编程基础-代码规范


    常见的代码规范

    1、如果函数不对外提供,请修改为私有方法;

    2、错误之前需要打印日志信息;

    1、打印日志规则: 模块 + 方法 + 主体 + 报错信息 + 【解决方式】;
    2、不能中英文混合使用。
    
    • 1
    • 2
    3、函数、参数命名是否合理;
    class Demo():
        """
        规则: 命名具象化一些,在后面的使用当中可便于通过命名捕获信息
        1、可以使用xxx2yyy的格式
        """
    
        def list_users(self, *args, **kwargs):
            # 从数据库获取用户信息
            users = []
            # 1)、定义为id2user,表示key为id,值为user
            id2user = dict()
            for user in users:
                id2user[user['id']] = user
    
            # 2)、定义为user2policy,表示key为user,值为policy
            user2policy = dict()
            for user in users:
                user2policy[user['id']] = user['policy']
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    4、是否存在函数间关联使用,改动引发!!!
    全局搜索该函数或者方法是否有使用。
    
    • 1
    5、是否存在同类问题。
    修改问题的时候容易一叶障目,需要修改同类问题,比如命名或者函数抽离等。
    
    • 1
    6、提示是否合理,如果需要提示到页面的数据需要和UI核对。
    7、逻辑间增加空行。
    8、注意not的用法。
    class Demo():
    
        def list_users(self, *args, **kwargs):
            # 数据库中查询user
            users = []
            id2user = dict()
            for user in users:
                # 优化前
                '''
                if user['name'].startswith('zhen'):
                    id2user[user['id']] = user
                '''
                    
                # 优化后
                if not user['name'].startswith('zhen'):
                    continue
    
                id2user[user['id']] = user
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    9、注意if的用法。
    class Demo():
    
        def list_users(self, *args, **kwargs):
            # 数据库中查询user
            users = []
            id2user = dict()
            for user in users:
                # 优化前
                if user['name'].startswith('zhen'):
                    if user['age'] == 18:
                        if user['address']:
                            id2user[user['id']] = user
    
                # 优化后
                # 方法一
                if all([user['name'].startswith('zhen'),user['age'] == 18,user['address']]):
                    id2user[user['id']] = user
                    
                # 方法二
                if user['name'].startswith('zhen') and user['age'] == 18 and user['address']:
                    id2user[user['id']] = user
                            
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    10、相同主体的函数放在一起。
    eg: list_users和get_user
    
    • 1
    11、代码不需要感知业务。
    eg: 配置文件中的操作依赖。
    
    • 1
    12、入参的时候主体部分优先放前面。
    class Demo():
    
        # 优化前
        def get_user(self, req, params, user_id):
            pass
        
        # 优化后
        def get_user(self, req, user_id, params):
            pass
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    13、filters查询条件根据情况是否一行还是多行。
    class Demo():
    
        def list_users(self, req, params, user_id):
            # 一行的情况
            for user in self.query.list_users(self, {'id': ",".join(["1", "2"])}):
                pass
    
            # 多行的情况
            filters = {'id': ",".join(["1", "2"]), "age": 18, "address": "广东省"}
            for user in self.query.list_users(self, filters):
                pass
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    14、新增接口信息需要做性能测试。
    15、原流程变化,是否需要保留原来的流程。
    原来流程:   1、新增角色信息;    2、更新用户角色信息; 3、创建策略和用户的绑定关系。  使用了taskflow
    现流程: 创建策略和用户的绑定关系。
    优化点: 可以删除原来的流程,直接用简单的调用即可,原来用任务流是因为需要回滚,现在不需要了。
    
    • 1
    • 2
    • 3
  • 相关阅读:
    十八、QGIS的作用和下载
    题目:2706.购买两块巧克力
    (Matlab)基于网格搜素优化的支持向量机实现电力负荷预测
    Presto资源管理之Resource Groups And Selector
    Nacos知识点
    我发布了一款基于RBAC权限模型实现的通用后台管理系统
    前端自动化require.context的使用
    【COMP305 LEC6 LEC 7】
    从零开始之了解电机及其控制(10)空间矢量理论
    [python 刷题] 19 Remove Nth Node From End of List
  • 原文地址:https://blog.csdn.net/weixin_43692357/article/details/126266601