范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

你会给变量起的什么名字

  先起一个名字
  在进行项目编写的过程中,免不了的就是要进行各种方法、变量的命名。你一定经历过对变量命名无比困难的时候。而有的时候命名就看起来很轻松,比如新增一个领域实体的时候。那用户(user)来举例子,可能还没有进行更多的思考,但 addUser的方法就已经创建了。工作完成,可喜可贺。
  但真的是这样吗?有多少同学在进行后续的代码翻阅的时候,反而发现别的同学的接口使用了saveXxx的命名方式?该跟他保持一致吗?还是继续我行我素?
  如果在团队中的命名规范不明确的话,这种情况确实会出现。而比表面上看起来更严重的问题是:save和add真的一样吗?如果在没有统一的命名规范的情况下,save 和 add中可能存在语言的区别,当别人看见你的接口命名发现不一样,而你的注释又不那么完备的时候。如果使用你接口的同学尽职尽责,那他可能会花费时间去确认你底层业务逻辑是否一致。又或者这个问题先放一放,让问题到自测的时候再去检验。 什么是好命名?
  这个问题不好直接回答。但尽管不能精准地描述出一个概念,我们却可以用一系列描述勾勒出命名的轮廓: 意如其文 避免歧义 无冗余的信息 可以检索 无类型编码 区分方法还是类名 统一命名 为命名创造合适的语境
  那么每当你对一个对象起名的时候,可以快速地在脑内回忆一遍列表,看看他是不是满足以上的内容。一开始可能需要对照着Check List,但当这个步骤熟练了之后,就可以一闪而过判断出:"目前的不够好,让我再想想"。 让我仔细想想
  仅有Check List并不完全够,我们还需要理解一下概念。能够快速反映出来场景,用反例的方式来判断条件是否满足。
  意如其文
  我觉得应该是最好理解的一条了,好的代码应该是有解释性的,命名可以表示出你要进行的"动作"、你可能需要的内容、以及你希望修改的东西。取名叫 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这种的命名其实是冗余的,String mobile;就足够了,而当有一天 mobileStr变成了 Long mobileStr的时候,也不会引起额外的误会。
  区分方法还是类名
  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就显得更加冗余了。 最后
  本文在《Clean Code》中列举的很多例子的基础上,加入了自己的个人理解。当然也忽略部分书中提到的点,觉得不是问题或问题不太严重:比如"尽量使用可以读得出来的命名",而在在沟通的时候可以使用中文;又比如"别扮可爱",在目前比较卷的环境中大家相对都很专业,出现概率比较小。
  当然每个团队都有自己的一套规范,总的来说可以让coding更加顺利,我们的目的就达到了。

以太坊晚间趋势ETH4小时冲高回调,短线在多空位置承压下行,布林轨道在零轴附近短线拐头向下,短线跌破短期均线位置,布林轨道上轨承压下,涨幅收窄,后市关注区间内调整。美盘关键阻力关注3125314BTC是冲高还是回落?比特币日内再度企稳54000上方后多头二次放量,午间时段再度打破近期新的高点来到56800一线。我们早间公开提示回踩多单也是随着午间新高诞生,完美拿下2000余点区间。市场有节奏,如何看BTC在币圈的投资中,支撑位置和阻力位置是一件重要的事情,如果能准确的判断出支撑阻力,那么在投资过程中将会轻松很多,从而能够更好的获利。今天给大家讲解一下怎么说支撑阻力位,及支撑位和阻力毒镜谁说便宜没好货,八羽怪的弟弟Helios6资料及样片虽然称之44M6为弟弟,但是并是不因为他干不过他那些哥哥,而且是恰恰相反,作为八羽怪整个产品系列中的倒数第二款产品,他不但做工精致了很多(已经看不太出来俄头的粗糙感了),在光学性能win10专业版桌面图标为什么变白色了?有win10电脑用户找到深度技术小编反馈这么一个问题,就是他的电脑桌面图标都变白色了,自己也没有设置和弄什么东西。问小编有什么好的方法去处理win10系统桌面图标变白呢?方法是有的win10系统本地组策略编辑器怎么打开的方法很多深度技术系统的朋友都在电脑上安装win10系统了,有一位小伙伴想要使用本地组策略编辑器,却不知道本地组策略编辑器怎么打开的问题,下面深度系统小编来分享一下具体的打开方法吧。方法win10应用商店出现无法安装的解决方法有很多深度技术用户在使用win10系统中都会选择系统自带的win10应用商店来下载软件和一些游戏。毕竟应用商店是比较安全可靠,不捆绑任何病毒软件的,但有小伙伴却遇到了win10应用windows7ghost玩龙之谷出现网络延迟的解决方法有深度技术windows7ghost纯净版系统用户在电脑中玩龙之谷游戏的时候,说出现了网络延迟的问题,老是掉线影响了正常游戏体验效果,该如何解决呢,本文中深度系统小编就给大家分享出win10专业版电脑截屏快捷键如何使用的方法有很大部分深度技术之家的用户在win10专业版电脑使用过程中经常会需要截屏保存内容,常用的截图方法是登录QQ或者微信,然后直接使用快捷键CtrlAltA或者AltA来截屏保存。其实win10专业版电脑蓝屏bluescreen的解决方法有不少深度技术之家的朋友在使用win10专业版系统的时候,都应该遇到过电脑蓝屏提示bluescreen的问题,其实,电脑蓝屏一般由两种情况引起硬件问题或软件问题。当遇blueScr猪肉均价下跌9元,蔬菜价格倒是持续上涨,茴香都5元一斤了昨天虽然只是休息一天,也是难得的晴天。想起来给孩子包顿饺子,我家4岁的孩子,比较喜欢吃茴香馅的饺子。主要的准备的材料猪肉和茴香猪肉价格到这边的市场也顺便买点其他的蔬菜之类,再去找到
定位精准专为运动爱好者打造咕咚运动手表X3RE简约而不简单随着人们生活物质水平的提高,随之而来的健康等问题尤为突出,现如今越来越多的人在重视自身的身体健康情况,而这种重视也越来越科学化系统化。比如原来,比如原来爱美的女士注重身材会选择节食荣耀发布荣耀隐私保护与安全技术白皮书,带来全维度安全体验随着科技的发展和技术的进步,全球智能手机市场对于数据和隐私防护问题愈发重视,而消费者对于此问题的关注也日益提升。基于此,作为全球标志性科技品牌,荣耀秉承科技有道,隐私至上的理念,于创维发布S系列新旗舰画质实力再突破,模组薄至3。9mm我们正生活在被屏幕包围的世界手机平板电脑电视等大大小小的屏幕架构起我们工作学习生活娱乐的各种场景。大多时候,我们必须经由屏幕看见认知和构建生活的世界。因此,屏幕呈现的世界是否真实,激光投影!打破投影的痛点峰米投影新品家用激光投影的天花板?现在越来越多的年轻人的家中,用投影机替换掉了原有的电视机。不信你看!这样的方案可以给人视觉上更大的空间感,易于安装,且可以带来更好的观影效果,曾经的一则新闻就能很好地证明这个问题,兼顾高颜值易用剃须干净须眉剃须刀T6升级2。0版简直完美最近接触到一款电动剃须刀产品,须眉剃须刀T6升级2。0版(下文简称须眉T6),到目前为止可以说价格上来看并不算最高的200元左右的售价不高不低,但是体验上其实比曾经本人2000的剃又美又狠!真120Hz无屏闪音画旗舰创维A20Pro极速上市9月23日,致敬真实创维电视2021秋季新品发布会在北京举行,重磅发布四款旗舰新品。其中,专为年轻用户打造的Ablaze系列迎来旗舰新品真120Hz无屏闪音画旗舰创维A20Pro,女子开蔚来ES8升级系统长安街趴窝一个多小时官方如是说1月29日下午,一张吐槽蔚来汽车因升级系统黑屏,在长安街上停了一个多小时,并引来警察叔叔的朋友圈截图在网络上疯传,并引发网友对于蔚来ES8系统以及车辆稳定性的质疑。有网友发朋友圈称10小时33分38秒!土星一天的时长终于被研究出来1月19日,据外媒报道,科学家终于研究出土星一天的时长10小时33分38秒。这项最新公布的研究成果,是基于美国宇航局卡西尼号探测器在2017年9月被摧毁之前收集到的数据。新的计算方迅雷X10。1。9正式版发布!启动速度大提升1月初,迅雷官方发布了迅雷X10。1。8版本,对下载进度卡99。9的问题做进一步优化。距离不到20天,全新的10。1。9正式版也到来了。本次正式版本号为10。1。9。326正式版,拼多多被薅千万羊毛涉嫌欺诈罪1月20日凌晨,拼多多平台出现超级大Bug,用户可以无限制领取100元无门槛优惠券,据称有人领了上千张。拼多多对此回应称,有黑灰产团伙通过一个过期的优惠券漏洞,盗取了价值数千万元的IDC2018销售榜单重磅出炉,小米稳居第四,以32的增长率逆势上扬众所周知,近年来手机市场的销量趋于饱和,手机企业出货量难免有所下滑,但近日IDC关于2018年度全球手机销量榜单重磅出炉,从榜单中我们可以看出小米以1。2亿台以上的手机销量,稳居排