游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

你会给变量起的什么名字

  先起一个名字
  在进行项目编写的过程中,免不了的就是要进行各种方法、变量的命名。你一定经历过对变量命名无比困难的时候。而有的时候命名就看起来很轻松,比如新增一个领域实体的时候。那用户(user)来举例子,可能还没有进行更多的思考,但addUser的方法就已经创建了。工作完成,可喜可贺。
  但真的是这样吗?有多少同学在进行后续的代码翻阅的时候,反而发现别的同学的接口使用了saveXxx的命名方式?该跟他保持一致吗?还是继续我行我素?
  如果在团队中的命名规范不明确的话,这种情况确实会出现。而比表面上看起来更严重的问题是:save和add真的一样吗?如果在没有统一的命名规范的情况下,save和add中可能存在语言的区别,当别人看见你的接口命名发现不一样,而你的注释又不那么完备的时候。如果使用你接口的同学尽职尽责,那他可能会花费时间去确认你底层业务逻辑是否一致。又或者这个问题先放一放,让问题到自测的时候再去检验。什么是好命名?
  这个问题不好直接回答。但尽管不能精准地描述出一个概念,我们却可以用一系列描述勾勒出命名的轮廓:意如其文避免歧义无冗余的信息可以检索无类型编码区分方法还是类名统一命名为命名创造合适的语境
  那么每当你对一个对象起名的时候,可以快速地在脑内回忆一遍列表,看看他是不是满足以上的内容。一开始可能需要对照着CheckList,但当这个步骤熟练了之后,就可以一闪而过判断出:目前的不够好,让我再想想。让我仔细想想
  仅有CheckList并不完全够,我们还需要理解一下概念。能够快速反映出来场景,用反例的方式来判断条件是否满足。
  意如其文
  我觉得应该是最好理解的一条了,好的代码应该是有解释性的,命名可以表示出你要进行的动作、你可能需要的内容、以及你希望修改的东西。取名叫endTime就好过t。同样的,在for循环中的i是什么,需要在看for中所有的逻辑的时候都记着,那索性就不如直接命名为robotMoveStep,这样还可以释放本身就宝贵的脑细胞。而对于一些魔法值例如4如果不知道上下文的话,那就很难判断他所指代的是什么,这时候就不如用常量来替代,即便知识变成了类变量,也好多一个单独的4在代码里。
  避免歧义
  在阿里巴巴的代码规范中有几个例子就如此例如:对于Long类型用大写的字母表示比如1L,就是为了避免11和1l(1L的小写)的尴尬。同样的,如果使用了一些特殊类型的命名时也会这样,比如userList,结果发现其实是一个它是一个int〔〕,或许它的背景是从一开始的userList变成了userIds,但无论如何代码总是胜过于解释。
  无冗余的信息
  一般来说,我们不会主动给命名增加冗余信息。user就是user,但是如果在当时想要新增一个新的子领域对象的时候扩展呢?userInfo、extendUserInfo、extendUserInfoNew?这并不是不会发生的事情,事实上正因为他发生了,且一旦发生就难以调整,我们才要极力地避免。添加一个后缀看起来是一个简单区分的好主意,但是这个实际上也和意如其文是一个问题。当一个新的人仅仅看到名称了之后并无法区分他们有什么区别,那么可以进行开发就需要对他们了如指掌才行。仅仅为了确保修改一个功能正确,只能一个一个去确认逻辑,把上下文翻个底朝天。冗余的是废话,是无意义的,就应该去掉,如果真的需要添加区分,就应该增加可以提供鉴别能力的方式,例如userContactInformation。
  可以检索
  你可以想想,当出现了一个bug,然后其他端的同学提示你说是由于传输数值的问题,而变量名是sum。那么我想,下一步个流程就是确认接口是什么,然后一头扎进了sum是怎么获得的道路上,有可能在过了很长时间之后,你才意识到这个sum甚至不是你的代码里处理得到的,而是直接通过下游系统获得的。确实没有什么好办法,因为sum充斥在工程的各个地方。如果这个名称不是sum,而是叫totalUserSubmitCount呢?我想在IDEA的帮助下,下一步应该是全局检索,而这么精确的名称涉及到的问题就也没有那么多了。当然,并不是说不能使用sum、count这种名称,但如果你使用了,就应该尽量让他们作为一个局部变量呆在一个方法里面。
  无类型编码
  java是一个强类型语言,你不需要特别地指定它的类型,所以mobileStr这种的命名其实是冗余的,Stringmobile;就足够了,而当有一天mobileStr变成了LongmobileStr的时候,也不会引起额外的误会。
  区分方法还是类名
  java是面向对象的语言,所以一个类应该是描述的一个对象,那么我们描述一个对象的时候,应该是一个名词;而对象中的方法的时候则应该是对象所具有的能力,所以描述方法应该是动词。
  统一命名
  就如同开头说的,经常而言,对于save和add,他们的常用语义是不同的,如果混用会让吃过一次亏的人在看你所有的代码的时候都会小心翼翼。那么get和find又有什么区别呢?如果这个概念没有统一,那么你就需要记住隔壁小王是用的find;隔壁小张的save其实不会更新已有对象;对门小李的add方法其实是追加(append)功能。
  而除了开发同学之外,这个命名也最好和领域本身的命名是统一的。这样在即便是在跟对应的产品,或者业务方进行沟通的时候,在脑子里就不用进行思维上的转换,可以大大地提高沟通效率。举例而言,如果存在两种领域的商家员工和个人用户,那么直接使用customer和employee大家都可以顺畅理解,而如果要叫user和userV2的话恐怕就要再约一次会了。
  但是如果这方面已经不涉及领域信息了,那也尽量和业内中的名词进行统一,比如redis的aof,或者是mysql中的binlog,这种已经存在且有一定语境的名称,可以提高他人理解你业务的速度。
  特别注意的是这个命名对于它的中文描述名称是一样的。
  为命名创造合适的语境
  因为名称之间本身就是有解释性的,所以在进行一组一组命名的时候,就可以提供上下文信息。例如如果有一组方法login()、logoff()那看起来就是用来进行登录登出的;又或者是一组属性如:price、payTime、couponCode,那么看起来就是订单相关的对象。想这样将一组有交互关系的名称放在一起的时候就可以为支撑的对象、业务提供一个语境,从而帮助理解业务流程。
  但是要尽量避免添加无意义的语境,比如orderPrice、orderPayTime、orderCouponCode,那么他们中的order显然是无意义的,因为并不会对属性的命名提供帮助,而试试上在实际的值的获取时我们一般是使用order。getOrderPrice(),那这时候的order就显得更加冗余了。最后
  本文在《CleanCode》中列举的很多例子的基础上,加入了自己的个人理解。当然也忽略部分书中提到的点,觉得不是问题或问题不太严重:比如尽量使用可以读得出来的命名,而在在沟通的时候可以使用中文;又比如别扮可爱,在目前比较卷的环境中大家相对都很专业,出现概率比较小。
  当然每个团队都有自己的一套规范,总的来说可以让coding更加顺利,我们的目的就达到了。

关晓彤看电影露腿被打动哭了很向往爱情关晓彤看电影,12月8日晚,关晓彤看电影露腿。关晓彤分享了一则动态,当晚她和好友前往电影院看《你的名字》,穿着过膝长靴的她不惧严寒秀出美腿,虽然带着鸭舌帽和口罩也没能遮挡的面容……飞利浦VTR5103旗舰智能,经典不负创新飞利浦新一代智能录音笔VTR5103C位惊艳出道秀外慧中散发低奢气场去繁就简静音键控操作经典保留一键极速便捷智慧张力拓展终端APP精良质感精……鹤唳华亭萧定权有没有认出陆文昔一个细节就可以看的出来在电视剧《鹤唳华亭》的最新剧情当中,萧定权大婚,陆文昔作为随从进入东宫,更在婚庆大典上面亲手给萧定权剪发,这么近距离的接触,萧定权到底有没有认出陆文昔呢?其实从一个细节就可以看……鹤唳华亭顾皇后怎么死的顾皇后原型结局是什么电视剧《鹤唳华亭》正在热播中,剧情中萧定权的母亲顾皇后的出现吸引着大家的眼球,那么,顾皇后到底是怎么死的?顾皇后在历史上原型结局是什么呢?一起来了解一下。鹤唳华亭顾皇后怎……影视穿帮镜头尴尬有趣这些槽点萌点会博得观众一笑影视穿帮镜头尴尬有趣:这些槽点萌点会博得观众一笑不知何时,找穿帮镜头已经成为了广大网友粉丝们的乐趣。当然并不是说有穿帮的动漫作品又或者影视作品,就是糟糕的!在很多时候,这……雷霆沙赞为什么会出来六个人,雷霆沙赞2什么时候上映雷霆沙赞说出来就有很多人清楚,可雷霆沙赞到底是为什么会出来六个人,很多网友就想去了解一下有关的情况,毕竟出来六个人是很不容易,也是有着很不同的意义,但有的网友就不清楚雷霆沙赞2……外科风云结局内容,外科风云结局庄恕和谁在一起医疗剧《外科风云》所带来的结局不多好,本来想救治好病人,却意外产生注射错误的情况,导致患者死亡,不过结局有庄恕和陆晨曦走一起,所把一波三折的爱情变得美好给展现出来。1外科风云结……一波国产喜剧电影来袭好看的喜剧电影17部推荐推荐优质的爆笑喜剧电影,一大波国产喜剧电影来袭,据说看到此文的都毫不犹豫地拿走。喜剧电影不好看那是假的,喜剧电影不搞笑那也是假的,综合精选的好看的喜剧电影17部推荐,最好收藏起……不爱购物的人去澳门两天怎么玩?附详细路线对于很多打工人来说都是上班困成狗放假就精神抖擞只要抗住了周一到周五的毒打美好的周末总会如期而至在家躺两天既无聊又辜负了这阳光明媚的天气……Aqara门窗传感器P1发布,300元不到的智能家居解决方案对于当下年轻人来说,简约便捷的智能家居生活已经成为装修的主流选择。但由于不少打出智能名号的家电售价较为昂贵,普通家庭根本无法承担昂贵的联动设备费用支出,以至于不少小伙伴对于智能……电影长津湖延期上映,长津湖电影出品方长津湖说出来很多人不清楚,可电影长津湖后期要延期上映,很多网友就想去了解一下有关的故事,看电影长津湖的延期上映是有着事情的影响后,才会进行延期上映,并把观众的胃口激发,但有的网……天玑1200120Hz屏,vivo一高端机型曝光8月17日iQOO8系列正式发布,大家发现iQOO这个品牌开始正式冲击高端领域,用iQOO8Pro这款机型给下半年顶级安卓旗舰打了个样。与此同时大家关注的是iQOO的母品牌vi……
电影白蛇缘起曝片尾曲MV周深现身唱尽千年传奇之恋由追光动画、华纳兄弟联合出品,即将于2019年1月11日全国开画的东方爱情魔幻电影《白蛇:缘起》今日发布了新一版片尾曲《缘起》的MV。在新版MV中,歌曲的演唱者周深惊喜现身,伴……Zayo在北美和西欧推出支持400G的网络全球光纤通信网络提供商ZayoGroupHoldings,Inc。于8月23日宣布计划在北美和西欧部署31条支持400G的高容量长途线路。该提供商表示,400G客户端波功……人工智能和物联网如何改变运输管理人工智能(AI)和物联网(IoT)都是尖端技术,正开始在我们周围的世界获得牵引力。财富商业洞察(FortuneBusinessInsight)指出,2019年全球人工智能市场规……电影家和万事惊发布全新特辑一众主演撕碎现实引热议星关系1月4日讯由著名导演邱礼涛执导,吴镇宇、古天乐、袁咏仪、张达明领衔主演,吴肇轩、蔡颂思、林雪、林子聪、李璨琛、孔令令等演员倾力出演的国民荒诞喜剧《家和万事惊》已定档201……邓超新作银河补习班官宣!温情演绎不一样的父子星关系1月4日讯1月3日,由邓超、俞白眉执导的电影《银河补习班》正式官宣,并曝光了LookingUp版先导海报和一组导演工作照。影片讲述了一对父子跨越漫长时光收获爱与成长,充满……百年车企,属于他的传奇仍在延续!雪佛兰4款经典车型回顾一下各大车企的历史,发展至今达到100年仍屹立不倒的屈指可数,而通用旗下的雪佛兰便是其中之一,并且它还是通用旗下最为国际化和大众化的汽车品牌,你很难想到,时至今日雪佛兰全球……22年后的自白发布终极预告真假杀人犯上演罗生门星关系1月3日讯由藤原龙也、伊藤英明主演,夏帆、野村周平、石桥杏奈、龙星凉、仲村亨共同出演的2019开年悬疑大作《22年后的自白》今日发布终极预告,将影片中引人深思的细节与爆点……金三角帝后首度同台飚戏廉政风云老友重聚为人民服务星关系1月3日讯金三角帝后上演教科书式反腐,重拳打虎再掀廉政风云!由麦兆辉执导,庄文强、黄斌担任监制,刘青云、张家辉、林嘉欣领衔主演的春节档反腐巨制《廉政风云》,今日发布金三角……赵薇低调亮相电影频道跨年公益盛典动情分享暖心背后故事星关系1月2日讯2018年12月31日,赵薇一身灰色西装亮相2019年电影频道跨年公益盛典。四年来赵薇一直致力于挽救白血病患者,作为北京新阳光慈善基金会V爱白血病专项基金……以美元为主要储备货币而产生的担忧所有国家的中央银行都持有黄金和外汇作为官方储备,这些储备用来清偿对外债务,并在必要的时候干预外汇市场支持本币,在过去80年里美元一直是世界上最主要的储备货币;目前美元储备……印度电影苏丹魔鬼训练特辑曝光9。2分励志口碑之作星关系9月5日讯由阿里阿巴斯札法自编自导,猴神大叔萨尔曼汗、安努舒卡莎玛共同主演的印度电影《苏丹》自8月31日公映以来,收获了爆棚的口碑,猫眼9。2分、淘票票9。0分体现了观众……北京SKP门前国人挤破头买万元包,网友都是些爱慕虚荣的人现在,很多国人其实生活水平并不是非常高,但是却有一种相互攀比的心态,住房子要住大的,买车要买好的,就连买个平时用的包包,也要跑到一些奢侈品店里,去买那些所谓的名牌,一个包包动辄……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网