精华内容
下载资源
问答
  • 数据库表字段名与类成员变量名不一致命名法驼峰命名法大驼峰命名法小驼峰命名法匈牙利命名下划线命名法数据库表字段名与类成员变量名不一致As取别名(比较麻烦,要将所以表成员全写出来)mybatis里面使用 ...

    命名法

    驼峰命名法

    大驼峰命名法

    用途:常用于类名,函数名,属性,命名空间
    小驼峰法的意思是: 单词首字母大写
    帕斯卡命名法就是大驼峰命名法

    AaBaCcDd
    MyCompanyName

    小驼峰命名法

    用途:变量一般用小驼峰法标识。
    小驼峰法的意思是:除第一个单词之外,其他单词首字母大写

    aaBbCcDd
    myCompanyName

    匈牙利命名法

    用于确定一个变量的类型
    基本原则是:变量名=属性+类型+对象描述

    int iMyAge; # “i”: int
    char cMyName[10]; # “c”: char
    float fManHeight; # “f”: float

    下划线命名法

    函数名中的每一个逻辑断点都有一个下划线来标记

    my_company_name
    aa_bb_cc_dd

    数据库表字段名与类的成员变量名不一致

    可以看出数据库的命名啊aaa_bbb型,而类的成员变量名则为aaaBbb型,两者不一致
    在这里插入图片描述

    As取别名(比较麻烦,要将所以表成员全写出来)

    把数据库的表名使用as改成类的成员变量名

     <select id="findAll" resultType="company">
    select
    	id,
    	name ,
    	expiration_date as expirationDate ,
    	address,
    	license_id as licenseId  ,
    	representative ,
    	phone  ,
    	company_size as companySize  ,
    	industry  ,
    	remarks ,
    	state,
    	balance ,
    	city
    from ss_company
        </select>
    

    mybatis里面使用 resultMap

     <resultMap id="companyMap" type="company">
             <id column="id" property="id"/>
             <result  column="expiration_date" property="expirationDate"/>
             <result  column="license_id" property="licenseId"/>
             <result  column="company_size" property="companySize"/>
        </resultMap>
        <select id="findAll" resultMap="companyMap">
            select
                *
            from ss_company
        </select>
    
    展开全文
  • 为了不和用户定义冲突,比较核心代码一般都用下划线标识,而且这个下划线的个数代表不同意思

    为了不和用户的定义冲突,比较核心的代码一般都用下划线标识,而且这个下划线的个数代表不同的意思


    学C的时候老师好像说过,系统自己的变量一般都以下划线开头,以示区分

    展开全文
  • 这个框架对数据库操作在这个团队使用是ORM进行操作,说实话使用ORM开发效率和运行效率不一定高多少,到是它实体命名和现有数据库字段的命名不太一样,ORM实体属性命名是驼峰式,数据库字段是下划线分隔...

    使用PHP把下划线分隔命名的字符串 转换成驼峰式命名方式 , 把下划线后面的第一个字母变成大写

    最近项目使用symfony框架,这个框架对数据库的操作在这个团队里使用的是ORM进行操作,说实话使用ORM的开发效率和运行效率不一定高多少,到是它的实体命名和现有数据库字段的命名不太一样,ORM实体属性命名是驼峰式的,数据库字段是下划线分隔,这就产生了字段映射的过程。当碰到需要手动写实体必须的数组时,字段映射是一件很头疼的事情,尤其是字段比较多的时候,写到你想吐。到这就产生一个问题就是把以下划线分隔的命名字段转换成驼峰式命名。小弟我也很懒,在网上找了半天,也没找到一个具体的PHP Demo,有的也是java写的,还着还挺复杂。于是乎我就自己动手丰衣足食,顺手写了几个,废话不多说直接贴代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    <?php
    //微妙时间
    function microtime_float()
    {
        list($usec$sec) = explode(" ", microtime());
        return ((float)$usec + (float)$sec);
    }
     
    //将下划线命名转换为驼峰式命名
    function convertUnderline1 ( $str $ucfirst = true)
    {
        while(($pos strpos($str '_'))!==false)
            $str substr($str , 0 , $pos).ucfirst(substr($str $pos+1));
     
        return $ucfirst ? ucfirst($str) : $str;
    }
     
    //将下划线命名转换为驼峰式命名
    function convertUnderline2 ( $str $ucfirst = true)
    {
        $str explode('_' $str);
        foreach($str as $key=>$val)
            $str[$key] = ucfirst($val);
     
        if(!$ucfirst)
            $str[0] = strtolower($str[0]);
     
        return implode('' $str);
    }
     
    //将下划线命名转换为驼峰式命名
    function convertUnderline3 ( $str $ucfirst = true)
    {
        $str = ucwords(str_replace('_'' '$str));
        $str str_replace(' ','',lcfirst($str));
         return $ucfirst ? ucfirst($str) : $str;
    }
     
    //将下划线命名转换为驼峰式命名
    function convertUnderline4 ( $str $ucfirst = true)
    {
        $str = preg_replace('/_([A-Za-z])/e',"strtoupper('$1')",$str);
        return $ucfirst ? ucfirst($str) : $str;
    }
     
    //将下划线命名转换为驼峰式命名
    function convertUnderline5 ( $str $ucfirst = true)
    {
        $str = preg_replace_callback('/([-_]+([a-z]{1}))/i',function($matches){
            return strtoupper($matches[2]);
        },$str);
        return $ucfirst ? ucfirst($str) : $str;
    }
     
    $counts = 100000;
    //第1种方式调用10w次所需时间
    $s1 = microtime_float();
    for ($i=0;$i<$counts;$i++)
    {
        $str'abcd_efgh_igk_lmn';
        convertUnderline1($str);
    }
    $e1 = microtime_float();
    echo 'convertUnderline1: run time = ';
    echo $e1-$s1;echo '<br />';
     
    //第2种方式调用10w次所需时间
    $s2 = microtime_float();
    for ($i=0;$i<$counts;$i++)
    {
        $str'abcd_efgh_igk_lmn';
        convertUnderline2($str);
    }
    $e2 = microtime_float();
    echo 'convertUnderline2: run time = ';
    echo $e2-$s2;echo '<br />';
     
    //第3种方式调用10w次所需时间
    $s2 = microtime_float();
    for ($i=0;$i<$counts;$i++)
    {
        $str'abcd_efgh_igk_lmn';
        convertUnderline3($str);
    }
    $e2 = microtime_float();
    echo 'convertUnderline3: run time = ';
    echo $e2-$s2;echo '<br />';
     
    //第4种方式调用10w次所需时间
    $s2 = microtime_float();
    for ($i=0;$i<$counts;$i++)
    {
        $str'abcd_efgh_igk_lmn';
        convertUnderline4($str);
    }
    $e2 = microtime_float();
    echo 'convertUnderline4: run time = ';
    echo $e2-$s2;echo '<br />';
     
    //第5种方式调用10w次所需时间
    $s2 = microtime_float();
    for ($i=0;$i<$counts;$i++)
    {
        $str'abcd_efgh_igk_lmn';
        convertUnderline4($str);
    }
    $e2 = microtime_float();
    echo 'convertUnderline5: run time = ';
    echo $e2-$s2;echo '<br />';

      

    为什么我要写5个呢?不同的处理方式,我是想看看那个处理效率高。
    经过测试发现,效率由高到低为   方法3>方法2>方法1>方法4>方法5  当然这是每个函数执行10w次才能看出的结果,当然1w次也能看出差别,1次就可以忽略不计了。
    下面是测试结果:

    执行1K次:
    convertUnderline1: run time = 0.005000114440918
    convertUnderline2: run time = 0.0040009021759033
    convertUnderline3: run time = 0.0039999485015869
    convertUnderline4: run time = 0.014001131057739
    convertUnderline5: run time = 0.01600193977356


    执行1w次:
    convertUnderline1: run time = 0.056005954742432
    convertUnderline2: run time = 0.033003091812134
    convertUnderline3: run time = 0.028002977371216
    convertUnderline4: run time = 0.14401507377625
    convertUnderline5: run time = 0.13701295852661


    执行10w次:
    convertUnderline1: run time = 0.44704508781433
    convertUnderline2: run time = 0.32203197479248
    convertUnderline3: run time = 0.2670259475708
    convertUnderline4: run time = 1.3601360321045
    convertUnderline5: run time = 1.3231329917908

    为什么字符串截取拼接要比数组连接慢呢?如果你看过PHP C的底层你就会明白了。所以以后如果有大量的字符串需要连接成一个字符串的 不要在用点连接了,放在一个数组后使用implode连接。

    还有一个要说的,这样的方法同样在JS里也是,数组连接要比字符串连接块。

    前面3个方法是我想出来的,后面的正则抄袭可爱的网友们的,不过我也是挺佩服的,算是温习了一下正则。

    展开全文
  • 本文发布于我个人网站:https://wintc.top/article/22 ... 这不,项目后端用了下划线形式的命名风格,而前端用是小驼峰格式,所以写了两个函数进行转换,主要用到了递归算法和字符串正则替...

    本文发布于我的个人网站:https://wintc.top/article/22,转载请注明。


            目前前后端数据交互通常会使用json,如果前后端变量命名风格不一致,就会导致某一端要迁就另一端,这样在自己的代码中就会同时出现两种命名风格。为了避免这种尴尬,我们可以在接口获取数据和发送数据的地方做统一处理,将收到的数据统一转为前端的风格,而将发出的数据转为后端的风格。

            这不,项目里后端用了下划线形式的命名风格,而前端用的是小驼峰格式,所以写了两个函数进行转换,主要用到了递归算法和字符串正则替换。

    一、下划线格式转为小驼峰格式

    function camel (data) {
      if (typeof data != 'object' || !data) return data  
      if (Array.isArray(data)) {
        return data.map(item => camel(item))
      }
      
      const newData = {}
      for (let key in data) {
        let newKey = key.replace(/_([a-z])/g, (p, m) => m.toUpperCase())
        newData[newKey] = camel(data[key])
      }
      return newData
    }

     

    二、小驼峰格式转为下划线格式

    function underline (data) {
      if (typeof data != 'object' || !data) return data
      if (Array.isArray(data)) {
        return data.map(item => underline(item))
      }
      
      const newData = {}
      for (let key in data) {
        let newKey = key.replace(/([A-Z])/g, (p, m) => `_${m.toLowerCase()}`)
        newData[newKey] = underline(data[key])
      }
      return newData
    }

    两个函数非常相似,不同之处仅在于替换key的规则相反。

    展开全文
  • 在我看到上面文章之前,我一直以为Python中这些下划线的作用就像Golang中方法/函数大小写一样,或是一些其他语言中 private 、 public 作用一样,但仔细深究,这不全是Python这样设计初衷。下面我们具体...
  • 在刷牛客时遇到一道关于python中使用下划线命名的题,我重复刷了两次了还是做错。。。所以今天就把这题给记录下来 (不定项选择题) Python中单下划线foo与双下划线_ foo与__ foo__ 成员, 下列说法正确是? A、...
  • 这个框架对数据库操作在这个团队使用是ORM进行操作,说实话使用ORM开发效率和运行效率不一定高多少,到是它实体命名和现有数据库字段的命名不太一样,ORM实体属性命名是驼峰式,数据库字段是下划线分隔...
  • 主要存在四种命名1....因为下划线对解释器有特殊意义,而且是内建标识符所使用符号,我们建议程序员避免用下划线作为变量名开始。一般来讲,变量名_object被看作是“私有”,在模块或类外不可以使
  • 这个框架对数据库操作在这个团队使用是ORM进行操作,说实话使用ORM开发效率和运行效率不一定高多少,到是它实体命名和现有数据库字段的命名不太一样,ORM实体属性命名是驼峰式,数据库字段是下划线分隔...
  • PHP一根下划线和两下划线的定义

    千次阅读 2017-10-25 16:13:48
    函数名或预定义变量名有下划线为了避免跟用户自定义名字冲突, 函数名前有2个下划线的是魔术方法,变量名前有一个下划线的一般都是系统变量(一般是数组)比如 $_GET,$_POST,$_SERVER 等等 有2个下划线的还有常量...
  •     驼峰式命名开关,数据库列和字段名全一致。 开启 后不论多少下划线都可以 我这种方法...开启开配置项后,在匹配时,能够根据数据库列名找到对应对应驼峰式命名字段. 我试过这种方法不管用可能是...
  • 今天在开发的时候,突然发现一个sql的下划线转驼峰命名没有起作用导致数据查询出现错误。具体如下: 之前一直都是在application.properties里面加上mybatis.configuration.map-underscore-to-camel-case=true就...
  • Python变量的下划线 xx: 公有变量 _x: 单前置下划线,私有化属性或方法,from somemodule import *禁止导入,类对象和子类可以访问 __xx:双前置下划线,避免与子类中的属性命名冲突,无法在外部直接访问(名字重整...
  • myBatis配置实现数据库字段下划线映射到java对象驼峰式命名属性。 在mybatisConfig.xml配置文件中添加如下设置: !--设置启用数据库字段下划线映射到java对象驼峰式命名属性,默认为false--> 在mybatis配置...
  • idea中已有的下划线与驼峰命名法转换的插件用起来不顺手,自己写了个,比如 sys_user_group_name <> sysUserGroupName 两种命名法来回切换, 切换后的驼峰默认首字母小写,主要是mybatis里面写sql和mode里面的转化用的,...
  • 首先,要先替换含有下划线较多字符串,比如说你要替换大量字符串里面,每个变量含有下划线的个数有1个和2个,那就先替换2个,再替换1个,如此类推。下面例子是替换含有2个下划线的: 正则表达式查找:...
  • 做token验证时候遇到问题:在本地可以获取前端header传参数,但是部署到服务器获取就是null(服务器地址用nginx做了... 1, 在header不要用 "_" 下划线,可以用驼峰命名或者其他符号代替。 2, 在nginx...
  • 这篇文章主要介绍了详解python里的命名规范,命名应当尽量使用全拼写的单词,缩写的情况文章中也给大家提到,需要的朋友参考下吧 文件名 全小写,可使用下划线 包 应该是简短的、小写的名字。如果下划线可以改善...
  • 放在default web site里面就可以,自己新建网站就无法保存,...最后经人指点发现找错方向了,原来是主机头问题:网站主机头命名!不能用下划线!看来事情表象真很能迷惑人啊。 转载于:https://www.cnb...
  • python中的下划线

    2019-03-06 23:04:00
    python中的下划线 _XXX 不能用from module import * 导入 __XXX 类中的私有变量名,只有本类能访问,子类也不能访问。 XXX 系统定义的名字,用来区别其他用户自定义的命名 Class1.doc # 类型帮助信息 'Class1 Doc.' ...
  • 命名变量时,我用下划线来分隔各个单词;在命名函数时,我从第二个单词开始把每个单词第一 个字母写成大写形式(也就是所谓驼峰命名法)。我这么做是为了能 够一眼看出哪些名字是变量,哪些名字是函数。 ...
  • C语言下划线开头函数

    千次阅读 2020-05-14 20:22:14
    然后说C语言里的下划线:C语言确实允许以下划线开头的函数存在,实际上你用一个下划线开头的函数名或者变量是没问题的,但有可能会发生命名冲突。凡是以两个或一个下划线开始,后面紧跟着一个大写字母的标识符,不管...
  • 光标放在要修改的名称上(如:变量名,或者mapper.xml里的字段名,会自动识别光标所在单词),按control+alt+U,则进行按命名规则进行转换,会按配置中选择的命名规则列表来回切换。 如图,如果只选择了CamelCase to ...
  • 在Ruby通常约定变量名字全是小字母,单词之间用下划线隔开。类和模块命名则不同:它们没有下划线,短语中采用混合大小写模式——即每个单词第一个字母以大写开头。这些约定会这样命名变量,比如order_status,...
  • 在mybatis-config.xml文件配置           Java 属性名 aColumn 类似映射。 -->
  • 今天发现了一个有趣现象,我在一个document library创建一个名字为 Zip_file文件夹,结果创建出来文件夹名字变成了:Zip_file_,SharePoint在名字后面自动添加了一个下划线"_"。 没想到SharePoint是这样...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 957
精华内容 382
关键字:

命名里的下划线