精华内容
下载资源
问答
  • 来源:https://mp.weixin.qq.com/s/8VoDQA4SBhkULLzEnpODgw 早在2013年,国外有个程序员做了一个有意思投票统计,该投票是让程序员从以下几个选项中选出平时在工作中自己认为最难做事情: 做项目方案设计 ...

    来源:https://mp.weixin.qq.com/s/8VoDQA4SBhkULLzEnpODgw

    早在2013年,国外有个程序员做了一个有意思的投票统计,该投票是让程序员从以下几个选项中选出平时在工作中自己认为最难做的事情:

    1. 做项目方案设计

    2. 编写测试用例

    3. 撰写设计文档

    4. 向别人解释我们在做什么事情

    5. 实现你不认同的feature

    6. 在别人写的代码基础上做改造

    7. 与人沟通

    8. 给函数、变量命名

    9. 进行工作量估时

    也许在大家的印象中,撰写设计文档在别人写的代码基础上做改造应该是最难的事情。但是最终的投票结果确让大家意想不到,这次投票一起有4522名程序员参与了投票,排在第一位的是给函数、变量命名:

    大概一半的人投票给了给函数、变量命名,从这次投票结果我们足可以看出:给函数、变量命名虽然是一件再普通不过的事情,但是要想把这件事做好绝非易事。那么今天,我们就来聊一聊如何给函数取一个好的名字。

     

    一. 常见函数命名风格

    目前来说,最常见的函数命名主要有两种风格:驼峰命名和帕斯卡命名。

    • 驼峰命名:多个单词组成一个名称时,第一个单词全部小写,后面单词首字母大写;如:

    •  
    public void setUserName(String userName);
    • 帕斯卡命名:多个单词组成一个名称时,每个单词的首字母大写;

    •  
    public void SetUserName(String userName);

    两种命名风格都是ok的,但要保证一点,对于一个团队或者一个项目,需要根据语言本身的推荐命名方式做好约定。比如java一般都采取驼峰命名,C#采取帕斯卡命名。

     

    二. 函数命名最高境界

    我们通常说:天下武功,唯快不破。那么对于函数命名来说最高境界是什么呢?我认为是:见字如面,顾名思义,就是看到函数的名字就知道这个函数具体做了哪些事情。

    比如上面的函数:

    •  
    public void setUserName(String userName);

    但是下面这个函数命名就不是一个好的命名:

    •  
    public String addCharacter(String originString, char ch);

    这个函数,一咋看,还不错,从函数字面意思看是给某个字符串添加一个字符。但是到底是在原有字符串首部添加,还是在原有字符串末尾追加呢?亦或是在某个固定位置插入呢?从函数名字完全看不出来这个函数的真正意图,只能继续往下读这个函数的具体实现才知道。

    而下面这几个名字就比上面要好得多:

    •  
    •  
    public String appendCharacter(String originString, char ch);     // 追加到末尾public String insertCharacter(String originString, char ch, int insertPosition); // 插入指定位置

     

    三. 函数命名最佳实践

    1)要领1:动词选取要精准

    通常来说,动词决定了一个函数要采取什么"动作"。动词取的好,一个函数名字已经成功了80%。

    常用动词表:

    类别

    单词

    添加/插入/创建/初始化/加载

    add、append、insert、create、initialize、load

    删除/销毁

    delete、remove、destroy、drop

    打开/开始/启动

    open、start

    关闭/停止

    close、stop

    获取/读取/查找/查询

    get、fetch、acquire、read、search、find、query

    设置/重置/放入/写入/释放/刷新

    set、reset、put、write、release、refresh

    发送/推送

    send、push

    接收/拉取

    receive、pull

    提交/撤销/取消

    submit、cancel

    收集/采集/选取/选择

    collect、pick、select

    提取/解析

    sub、extract、parse

    编码/解码

    encode、decode

    填充/打包/压缩

    fill、pack、compress

    清空/拆包/解压

    flush、clear、unpack、decompress

    增加/减少

    increase、decrease、reduce

    分隔/拼接

    split、join、concat

    过滤/校验/检测

    filter、valid、check

    2)要领2:名词使用领域词汇

    动词决定了函数的具体动作,而名词决定了函数具体的操作对象,对于名词,尽量使用领域词汇,不要使用生僻或者大家很少使用的词语。

    举个例子:集合的容量通常用capacity、集合实际元素个数用size、字符串长度用length,这种就遵循大家的使用习惯,不要用size去形如字符串的长度。

    再比如,假如使用到建造者模式,那么通常会用build作为函数名字,这个时候就不要另辟蹊径,用create来作为函数名字,使用大家约定俗成的命名习惯更容易让你的代码被别人读懂。

    常用名词表:

    类别

    单词

    容量/大小/长度

    capacity、size、length

    实例/上下文

    instance、context

    配置

    config、settings

    头部/前面/前一个/第一个

    header、front、previous、first

    尾部/后面/后一个/最后一个

    tail、back、next、last

    区间/区域/某一部分/范围/规模

    range、interval、region、area、section、scope、scale

    缓存/缓冲/会话

    cache、buffer、session

    本地/局部/全局

    local、global

    成员/元素

    member、element

    菜单/列表

    menu、list

    源/目标

    source、destination、target

    3)要领3:函数取名最忌讳"名不副实"

    函数取名最忌讳的是"名不副实",举个例子,假如有个Cache类,里面有个函数判断key是否过期:

    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    public boolean isExpired(String key) {        // 当前时间戳        long curTimestamp = DateUtils.nowUnixTime();        // 获取key的存入时间戳        long storeTimestamp = getStoreTimestamp(key);               if (curTimestamp - storeTimestamp > MAX_EXPIRE_SECONDS) {            // 注意这个地方的delete是个隐藏逻辑            delete(key);            return true;        }        return false; }

    上面这个函数从函数字面意思看是判断key是否过期,但是!!它居然在函数里面隐藏了一段特殊逻辑:如果过期则删除掉key。这个就是典型的"名不副实",这个是最忌讳的,会给后续的开发人员留下"巨坑"。

    有两种方式去优化这段代码:

    • 方式一:将隐藏逻辑去掉

    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    public boolean isExpired(String key) {        // 当前时间戳        long curTimestamp = DateUtils.nowUnixTime();        // 获取key的存入时间戳        long storeTimestamp = getStoreTimestamp(key);               if (curTimestamp - storeTimestamp > MAX_EXPIRE_SECONDS) {            return true;        }        return false; }
    • 方式二:改变函数名字

    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    public int deleteIfExpired(String key) {        // 当前时间戳        long curTimestamp = DateUtils.nowUnixTime();        // 获取key的存入时间戳        long storeTimestamp = getStoreTimestamp(key);               if (curTimestamp - storeTimestamp > MAX_EXPIRE_SECONDS) {            return delete(key);        }        return 0; }

    4)要领4:多查询条件的函数名字谨慎使用介词by

    我们平时在写查询接口时,假如有多个查询参数怎么办?每个通过by一起连接依赖?No!这绝对不是明智的方式。假如一开始产品的需求是通过学生姓名查询学生信息,写出来的可能是这样的函数:

    •  
    public List<Student> getByName(String name);

    然后突然又有一天产品提出了新的需求,希望同时可以通过姓名和电话号码来查询学生信息,那么函数可能变成这样了:

    •  
    public List<Student> getByNameAndMobile(String name, String mobile);

    接着,没过多久,产品又希望根据学生年龄来查询学生信息,那么函数可能变成这样了:

    •  
    public List<Student> getByNameAndMobileAndAge(String name, String mobile, int age);

    如果这样来给函数命名,那么你的噩梦大门即将打开。

    通常比较好的做法是:

    • 如果是通过主键id来查询,那么可以通过by来连接查询信息,比如:

    •  
    public Student getByStudentId(long studentId);
    • 如果是通过其他属性来查询,并且未来会存在多个组合查询的可能性,建议进行封装,比如:

    •  
    public List<Student> getStudents(StudentSearchParam searchParam);

     

    最后,建议大家平时在写代码过程中,不要怕在函数命名上耗费时间,一个好的函数命名在后期会大大减少你代码重构的成本,争取对函数命名做到"见字如面"。

    (完)

    展开全文
  • 解决QQ启动慢的好方法

    千次阅读 2011-07-20 10:18:56
    (如果没有就在安装QQ时选择的目录中,一般在 我的文档 Tencent 里)也就是有一个文件夹的名字是你的QQ号,打开这个文件夹第三步:开始清理1:image文件夹,这里面存有你的好友或群里发的图片,可以删掉不要的。...
    第一步:打开QQ安装目录

    第二步:找到你的QQ号码文件夹。(如果没有就在安装QQ时选择的目录中,一般在 我的文档 Tencent 里)也就是有一个文件夹的名字是你的QQ号,打开这个文件夹


    第三步:开始清理

    1:image文件夹,这里面存有你的好友或群里发的图片,可以删掉不要的。这是重点

    2:MyRecvFiles文件夹。这里面存的是你接收的文件,可以删掉不要的。

    3:UserHead文件夹。这里存的是好友的头像,建议隔一段时间删一次,因为里面有很多已经不是你好友的头像,删了以后QQ会自动更新好友的头像,这样文件夹可以小很多。

    4:UserSessionInfo文件夹,这个是临时对话的QQ资料,可以删掉。

    5:MsgEx.db文件,这个就是你的聊天记录文件了,包括群聊天记录,可以一次删掉,也可以在消息管理器里一个个删,最好删之前备份一下,把名字改下就行了。以免以后想看找不到。


    以上5个文件夹和文件是QQ每次登陆都要加载的,不但影响QQ登陆,运行速度,还很占机器内存,这5个越大也就意味着QQ登陆越慢,机器运行越慢,所以清理后可以大大提高QQ登陆速度和减少电脑资源消耗。
    展开全文
  • 本来的名字应该是:单级浮动分析表1231 结果接受到的附件名字是单级浮动分 =9__E 表1231 这里的分析的析字给变乱码了,这就很奇怪啊,然后我进一步测试的时候发现,名字改成“单级浮动分析表123”,接受到的附件又...

    今天遇到一个奇怪的问题,发qq邮箱的时候,附件名字奇怪的乱码了。

    本来的名字应该是:单级浮动分析表1231

    结果接受到的附件名字是单级浮动分 =9__E 表1231

    这里的分析的析字给变乱码了,这就很奇怪啊,然后我进一步测试的时候发现,名字改成“单级浮动分析表123”,接受到的附件又好了。我去,这是什么鬼原因?

    我又再次测试了下,名字改为“单级浮动分析表123啊” 接受到的附件也是正确的。emmmm,然后我又把名字改为“单级浮动分析表格再加1”名字也没毛病,看来问题就出现在这个第10位左右,而且和汉字与数字的组合有关,但是为啥呢,这不科学啊。

    找到解决方案了:https://blog.csdn.net/qq_35394434/article/details/91973830

    展开全文
  • qq一登录就是数字的名字,怎么修改才好看点啊??
    qq一登录就是数字的名字,怎么修改才好看点啊??
    
    展开全文
  • 本人是卖我是卖自己开发软件 后来是因为误会了:⑥傷沁淚⑥ QQ:88174096 后来才知道,我查错帐了 他钱是到了,所有,我在这澄清他名誉 我也先跟他说对不起先,因为我那时候太急了,因为换了是谁,也会这样想!...
  • 吧,我承认自己实在是太懒了,平时写文档直接存word存电脑里了,懒得往博客里弄了,排版之类太繁琐了,搞没有兴趣了。 今天看到师兄们都有自己博客,我不弄一个跟不上时代步伐了啊。以后还是没事时候...
  • 文章目录1.原来主页链接2.改链接域名地方3.改域名只有开会员额4....吧是需要开会员 3.改域名只有开会员额 没有其他方法了,真心想改话建议只能开会员了哦 4.免费改博客主页名 很多人博客...
  • 危险的QQ

    2012-11-23 10:42:36
    最近在使用QQ时,发现他增加了一个很好的功能,能找回可能和你有关系的朋友,同学。这些人可能你已经丢失了联系方式。 但是!!! 我发现他找出来的人,大部分都是实名!我想绝大多数人上网是不是会用实名登记的,...
  • 那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码! QQ群:1097524789 不知道你有没有经历过这样一个场景,好不容易拿到一个妹子的手机号,但是又不好意思去搭讪,...
  • 经典的QQ表情

    2010-03-18 20:41:36
    哈哈 大家把自己喜欢的QQ表情的名字都发上来吧。。能提供连接最好,最少要提供表情人物的名字!我先来几个。哈哈   1. 超能量  地址:http://comic.qq.com/a/20080813/000045.htm 2.  I是由中国设计师Wang ...
  • 搞得我现在啥都用不了了,比如QQ啊RealPlayer啊什么气人。只能是想到什么下什么了。我不用office先了,装iWork吧,出现不兼容现象再说。总之现在本人超郁闷,leopard感受下一期再说。
  • 简单代码变出超个性化的QQ昵称

    千次阅读 2017-11-12 15:05:00
    第一招、在QQ名字中加入表情: 我们可以通过在QQ...有没有更好的办法呢? 有的,我们可以利用一些特殊符号来实现,就是这个 。在文本形式下我们看起来它是一个黑点而已,但只要你将它复制到你QQ资料上,它就会以符号...
  • 您还能想起小学同学的名字吗?

    千次阅读 热门讨论 2012-07-17 16:58:06
    说来惭愧,其实他已经请求多次添加我为好友,但是我不知道是谁,因此多次拒绝,还我同意了,要不就要失去找到老同学机会了……. 为了摆脱贫困,家里搬离了那个贫困小村子,我也因此需要转学,依稀记得那时候...
  • 学习C++套接字时,心想该功能是不可以可以做出...两台PC机都运行该exe时,输入对方IP后可以实现向对方发送信息小文件等,同时程序增加记录IP地址和名字的功能,总之像QQ的一些功能,有源码及exe,欢迎探索共同学习。
  • 如题,smart_iceboy的开博声明,合并之前的qq43068902与xciceboy两个csdn的博客,之前的两个博客比较...现在好的名字是越来越不好起了,今天就选择了一个smart_iceboy的名字,希望以后可以更好的写出高质量的博客,希望
  • QQ的安装目录下以你的QQ号码为名字的文件夹里有几个关键文件,保存着你的QQ的一些信息,如果用了它们,可以玩出一些有趣花样,用来捉弄人也可以。 MsgEx.db文件:是你正常登陆过QQ后生成,如果删除该文件QQ...
  • 1.如果图标是从我们的后台请求过来的(如果不是也是一样的),那么图片的名字不能包含大写字母。 2.图片不能太大(其中一个图片是大小9k,32位深度 ,也可以成功显示)。 3.图片尽量小(尽量小于30k),并且是24位...
  • QQ的安装目录下以你的QQ号码为名字的文件夹里有几个关键文件,保存着你的QQ的一些信息,如果用了它们,可以玩出一些有趣花样,用来捉弄人也可以。 MsgEx.db文件:是你正常登陆过QQ后生成,如果删除该文件QQ...
  • QQ群精准流量必备工具:QQ群引流霸屏成员提取工具 精准流量必备工具:QQ群引流工具 下载地址 我们就来如何利用QQ群...如果大家是做公众号的应该知道,一个好的公众号名字是能吸到很多粉丝的,所以QQ群取名字非...
  • 接下来我们就详解这些因素,怎么利用这些因素来建QQ群得到...如果大家是做公众号的应该知道,一个好的公众号名字是能吸到很多粉丝的,所以QQ群取名字非常关键,肯定是不能随便取名字的。 https://www.shop123.n...
  • 任务的名字会变成盘符 找了一圈之后发现是JS替换只处理了一个匹配的结果,换成以下的就了 dir.replace(/\/g, "[\/]")+"/?") <p><img alt="QQ 20130222043152" src=...
  • 点击gmail,,网页会弹出一个界面,上面已经帮你填了你得账户名称,qq邮箱啥,左边是有内容,大意是:为自己账户升级到gmail,然后自己的QQ邮箱会变成辅助邮箱等,然后填入你想要邮箱名字,根据提示,
  • 那个图里,有一个叫“不会卖萌的仙女”的人,在这个图的18.14坐标处摆摊,摊位的名字叫“副本绿4W可私”,价格是40000 以上就是我提问的这个问题场景,我现在有很多关于该群的功能的疑问,这是如何实现的呢??...
  • Ubuntu安装qq

    2016-09-08 00:55:42
    当然这里的qq就是wineqq ...个人推荐kylin的qq国际版下载解压先安装 wine-qqintl_0.1.3-2_i386.deb 然后再安装剩下两了(解压后会有3个deb)命令是 sudo dpkg -i 名字.deb 这里要说明一下 安装第一个
  • 问题来源这个问题最初是在实验室老人们毕业时出现,毕业论文写了,交到导师那,被打回来,杂志名字的缩写不统一,有简写,有全称,简写有加点了,有没加。然后就是一顿核对、修改,怪自己太相信Endnote了...
  • 初次与人打交道,要记住别人的名字和特征。 表达个人偏好和特长兴趣。 每天看及时看查收和回复邮件的习惯。 发送邮件要有针对性,邮件最好有称呼,这样也显得有针对性和尊重,不重要 但必须的邮件可以用抄送。...
  • 起初看到这个名字挺费解,这跟吐司有什么关系,后来终于明白,老外烤吐司时候是这么做,把很多面包片放进吐司机里,就是专门烤吐司面包机,待烤以后,吐司机会把面包弹起来,此时就是弹出提示窗口一样,...

空空如也

空空如也

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

qq好的名字