通用名称

泛型类型参数名称通常包含一个大写字母字符。 如果您开始阅读有关泛型的官方ORACLE文档,则第一个示例是

/*** Generic version of the Box class.* @param <T> the type of the value being boxed*/
public class Box<T> {// T stands for "Type"private T t;public void set(T t) { this.t = t; }public T get() { return t; }
}

通用类型的名称为T 一个字母,意义不大,通常与其他标识符命名样式相对。 它仅广泛用于泛型。 奇怪。 是什么原因呢?

到目前为止,我已经听到了以下论点:

  • 一个类或方法不需要很多类型变量名,因此您不会用完ABC的字母。
    • 基于这种推理,我们还应该使用一个字符方法名称吗?
  • 因为有JavaDoc,所以一个字符不会固有地解释类型不是问题。 您可以解释类型名称的实际含义。
    • 而且我们还应该忘记我们所学到的有关干净代码和变量命名的所有内容。
  • 具有一个字符的类型名称使它们与变量,方法和类名称以及常量名称区分开。
    • 这是一个好点。
  • 但是Google Code Style允许您使用多种字符类型的名称。
    • 哦是的

然后怎样呢?

如果您不喜欢泛型的单个字符命名,则可以使用_$前缀来命名它们。 这是您可以在stackoverflow上看到的建议。 至于我:这很奇怪。 使用$可以使我感到“欢欣”,温暖的感觉使我想起了我在编写Perl时的青春。 我不再这样做了,这是有充分理由的。 时代改变了,技术改变了,我改变了。

$通常由编译器和某些代码生成器用来命名生成的字段和方法。 在Java源代码级别上使用$可能会导致某些命名冲突,导致编译器难以找到合适的名称,但是在这方面,当前版本的Java编译器相当容易出错。 他们只是一直尝试通过一些简单的算法来找到一个合适的名称,直到找到一个不会与任何Java源代码名称冲突的名称为止,因此这不会成为问题。

下划线 :嗯,实际上是我们过去使用的东西,而不是空间。 在旧的矩阵打印机上,下划线字符打印得很差,以至于您无法将其与空格区分开,因此使用多字变量名称是一个丑陋的窍门。 由于名称开头的下划线是一个完全反模式的恕我直言,实际上是使用相同的名称来命名两件事。 几乎就像没有下划线字符一样。

您也可以使用T_前缀,因为这是C ++和C#中的惯例(我不太熟悉T_前缀,对此我不确定)。 但这和没有T一样丑陋。

我的喜好是使用有意义的名称,并在常量的情况下遵循相同的约定。 例如使用

public final class EventProducer<LISTENER extends IEventListener<EVENT>,EVENT> implements IEventProducer<LISTENER, EVENT> {

代替

public final class EventProducer<L extends IEventListener<E>,E> implements IEventProducer<L,E> {

即使那是我的个人,高级,专业,专家意见,但我不使用它。 为什么? 因为我在团队中的企业环境中工作。 使用比官方默认设置更具可读性的内容所获得的收益并不像辩论和分歧所造成的损害那样高。 除此以外,新员工还必须适应当地的风格,而且也要花钱。 使用可用但不是最佳的全局样式比使用良好的局部样式更好。 忍受它。

我们可以走向全球吗?

你可以试试。 这是我最多能说的。 如果最初的建议设定编码标准比1960年代的样式一字母法更好,那将是更好的选择,但这已经是历史了。 损坏已经完成。 而且,这与在OO中引入null的绝妙想法所造成的损害无可比拟。

只要Java仍然存在,我们将只使用一个字符的泛型。 而且由于我快50岁了,所以这段时期比我的寿命更长。 请注意,COBOL仍然有效。 我们应该对Java有所期待。

翻译自: https://www.javacodegeeks.com/2015/05/generics-names.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/360214.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

扩大缩小Linux物理分区大小

由于产品在不同的标段&#xff0c;设备硬盘也不同&#xff0c; 有些500G&#xff0c;有些320G有些200G&#xff0c;开始在大硬盘上做的配置&#xff0c;想把自己定制好的Linux克隆到小硬盘上&#xff0c;再生龙会纠结空间大小的问题&#xff0c; 因此需要做一些分区的改变。 网…

java 文件上传 servlet_java文件上传-原始的Servlet方式

前言&#xff1a;干了这几个项目&#xff0c;也做过几次文件上传下载&#xff0c;要么是copy项目以前的代码&#xff0c;要么是百度的&#xff0c;虽然做出来了&#xff0c;但学习一下原理弄透彻还是很有必要的。刚出去转了一圈看周围有没有租房的&#xff0c;在北京出去找房子…

内存泄漏 和 内存溢出

在计算机科学中&#xff0c;内存泄漏(memory leak)指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并非指内存在物理上的消失&#xff0c;而是应用程序分配某段内存后&#xff0c;由于设计错误&#xff0c;失去了对该段内存的控制&#xff0c;因而造成了内…

不要被泛型和向后兼容性所愚弄。 使用泛型类型

最近&#xff0c;我与jOOQ的早期客户Ergon的 Sebastian Gruber进行了非常有趣的讨论&#xff0c;我们与之保持了密切联系。 与Sebastian交谈使我们的工程团队得出结论&#xff0c;认为我们应该完全重写jOOQ API。 现在&#xff0c;我们已经有很多用于各种用途的泛型&#xff0c…

java 什么是耦合_什么是耦合、解耦

什么是耦合、解耦一、耦合1、耦合是指两个或两个以上的体系或两种运动形式间通过相互作用而彼此影响以至联合起来的现象。2、在软件工程中&#xff0c;对象之间的耦合度就是对象之间的依赖性。对象之间的耦合越高&#xff0c;维护成本越高&#xff0c;因此对象的设计应使类和构…

基于SharePoint 的企业信息平台架构

转载于:https://www.cnblogs.com/jackljf/p/3589224.html

java bufferarray_Java中的ByteBuffer array()方法

可以使用array()类java.nio.ByteBuffer中的方法获得缓冲区的字节数组。如果返回的数组被修改&#xff0c;则缓冲区的内容也会被类似地修改&#xff0c;反之亦然。如果缓冲区是只读的&#xff0c;则抛出ReadOnlyBufferException。演示此的程序如下所示-示例import java.nio.*;im…

java freemarker 分页_10小时入门java开发04 springboot+freemarker+bootstrap快速实现分页功能...

本节是建立在上节的基础上&#xff0c;上一节给大家讲了管理后台表格如何展示数据&#xff0c;但是当我们的数据比较多的时候我们就需要做分页处理了。这一节给大家讲解如何实现表格数据的分页显示。准备工作还是老规矩&#xff0c;看效果图可以看出我们实现了如下功能1&#x…

获取linux服务器基本信息脚本

为了方便日常运维写的一段简单脚本&#xff0c;用于集中获取服务器操作系统、CPU、内存使用、负载、硬盘使用、网络信息。 脚本比较简单&#xff0c;就不解释了&#xff0c;有兴趣的朋友请自行查看。 #!/bin/bash##Name:system_info#Ver:1.0#Author:lykyl###程序说明:#获取服务…

您认为有关垃圾收集的7件事-完全错了

关于Java垃圾收集的最大误解是什么&#xff0c;它的真实情况如何&#xff1f; 小时候&#xff0c;我的父母曾经告诉我&#xff0c;如果我学习不好&#xff0c;我将成为垃圾收集者。 他们所知道的很少&#xff0c;垃圾回收实际上很棒。 也许这就是为什么即使在Java世界中&#…

java $p_javap -c命令详解

一直在学习Java,碰到了很多问题&#xff0c;碰到了很多关于i和i的难题&#xff0c;以及最经典的String str "abc" 共创建了几个对象的疑难杂症。 知道有一日知道了java的反汇编 命令 javap。现将学习记录做一小结&#xff0c;以供自己以后翻看。如果有错误的地方&a…

hibernate 映射四多对一双向映射

学生和班级的例子来说&#xff0c;多个学生可以对应一个班级。 1.站在学生角度来说&#xff0c;学生就是多端。那么我们可以通过多对一来维护2者的关系。 2.站在班级的角度来说&#xff0c;班级就是一端。那么我们可以通过一对多啦维护2者的关系。 3.我们也可以双向关联两者的关…

JS factory

http://my.oschina.net/jbryan/blog/140647转载于:https://www.cnblogs.com/zhongqiu/p/3472472.html

django mysql 表单_Python Django 表单提交数据到mysql并展示

首先1&#xff1a; 新建项目userproject&#xff0c; 新建应用childName2&#xff1a; 这是childName文件目录&#xff0c;templates文件夹放insert.html 与 show.html3&#xff1a; insert.html 与 show.html/**insert.html**/用户登录12345678910111213141516Title信息展示用…

java h5 上拉加载更多_移动端H5页面上拉加载更多功能实现(二)

之前已经写过一篇关于上拉加载更多的文章&#xff0c;那个主要是根据滚动实现分页向后台发起请求实现。这次实现方式为后台返回所有需要加载的数据&#xff0c;前端这边做视觉上的分页效果。实现原理也是根据滚动距离触发加载更多的条件。我这边的需求是需要在模态框里实现一个…

体验最火的敏捷——SCRUM(厦门,2014.1.4)

1.概述SCRUM是当前最火的一种敏捷开发方法&#xff0c;有用户故事、冲刺、燃尽图等很多很酷的玩法&#xff0c;有牛B的产品负责人、SCRUM Master&#xff0c;有超强的自组织团队。本沙龙将为您展现当前最火最酷的敏捷开发方法&#xff01;内容大纲&#xff1a;1)SCRUM是神马东西…

摆脱困境:将属性值注入配置Bean

Spring Framework对将从属性文件中找到的属性值注入到bean或Configuration类中提供了很好的支持。 但是&#xff0c;如果将单个属性值注入这些类中&#xff0c;则会遇到一些问题。 这篇博客文章指出了这些问题&#xff0c;并描述了我们如何解决它们。 让我们开始吧。 如果使…

js编码java解码_js编码

虽然escape()、encodeURI()、encodeURIComponent()三种方法都能对一些影响URL完整性的特殊字符进行过滤。但后两者是将字符串转换为UTF-8的方式来传输&#xff0c;解决了页面编码不一至导致的乱码问题。例如&#xff1a;发送页与接受页的编码格式(Charset)不一致(假设发送页面是…

淘宝IP地址查询

官方网址&#xff1a;http://ip.taobao.com/index.php 相关文章&#xff1a; http://www.cnblogs.com/zetee/p/3482085.html http://www.cnblogs.com/zetee/p/3481297.html转载于:https://www.cnblogs.com/AloneSword/p/3483176.html

mysql查询各专业人数_查询各专业的学生数。

【简答题】查询“数据库”不及格的学生的学号和成绩。【判断题】螺位错可以攀移。【单选题】Internet 的核心协议是()【单选题】多媒体计算机是指()【单选题】码组10100与10001之间的码距为( )。【简答题】查询选修了“计算机基础”课程的学生学号和成绩。【单选题】小强用数码…