什么是通用字符名称?_通用名称

什么是通用字符名称?

泛型类型参数名称通常包含一个大写字母字符。 如果您开始阅读有关泛型的官方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年的样式一字母方法好,那会更好,但这已经是历史了。 损坏已经完成。 这绝非与将null引入OO的绝妙想法所造成的损害可比。

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

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

什么是通用字符名称?

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

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

相关文章

c语言中__cplusplus是什么

点击上方蓝字关注我&#xff0c;了解更多咨询1、__cplusplus和extern“C”一般都是配对使用&#xff0c;如果定义了__cplusplus(cpp文件默认定义了该宏)&#xff0c;则采用C语言方式进行编译。2、是在C中特有的&#xff0c;__cplusplus 其实就是C。实例#ifndef __CODERSRC_H__ …

git rollback代码都没了_git回滚线上代码

由于之前自己推代码的时候操作失误&#xff0c;才push代码的时候没有push到dev分支&#xff0c;而是push到了本地master同名分支的线上master分支&#xff0c;覆盖掉了线上在用的代码。在搜索解决办法的时候&#xff0c;发现网上给的信息大多不够全&#xff0c;且很多无用。所以…

c语言中fwirte函数的使用方法示例

点击上方蓝字关注我&#xff0c;了解更多咨询1、fwrite函数用于将缓冲区数据写入文件&#xff0c;并返回成功写入文件的元素数。如果出现错误或到达文件末尾&#xff0c;可能小于nmemb。2、fwrite函数不区分文件的尾部和错误&#xff0c;因此调用者必须使用feof和ferror来判断发…

联通光纤限制连接数_从数百万个光纤(而不是数千个线程)中查询数据库

联通光纤限制连接数jOOQ是在Java中执行SQL的好方法&#xff0c;而Quasar光纤带来了大大提高的并发性 我们很高兴在平行世界的 Fabio Tudone的jOOQ博客上宣布另一个非常有趣的来宾帖子。 Parallel Universe开发了一个开放源代码堆栈&#xff0c;使开发人员可以轻松地在JVM上对…

java 工程新建ivy文件_Hadoop学习之路(八)在eclispe上搭建Hadoop开发环境

一、添加插件将hadoop-eclipse-plugin-2.7.5.jar放入eclipse的plugins文件夹中二、在Windows上安装Hadoop2.7.5版本最好与Linux集群中的hadoop版本保持一致1、将hadoop-2.7.5-centos-6.7.tar.gz解压到Windows上的C盘software目录中2、配置hadoop的环境变量HADOOP_HOMEC:\softwa…

c语言中fclose函数的使用你会吗

点击上方蓝字关注我&#xff0c;了解更多咨询1、C语言fclose函数用于关闭使用fopen成功打开的文件。2、fopen函数和fclose函数总是成对出现。如果文件成功打开fopen函数&#xff0c;请使用fclose函数关闭文件。实例#include <stdio.h> #include <stdlib.h>int main…

悲观锁 引起死锁_悲观锁定时如何避免可怕的死锁-以及Java 8的一些用法!

悲观锁 引起死锁有时您根本无法避免&#xff1a;通过SQL进行悲观锁定。 实际上&#xff0c;当您要在共享的全局锁上同步多个应用程序时&#xff0c;它是一个很棒的工具。 有人可能认为这是在滥用数据库。 如果可以解决您遇到的问题&#xff0c;我们认为可以使用您拥有的工具。…

Java反序列化json内存溢出_fastJson与一起堆内存溢出'血案'

现象QA同学反映登录不上服务器排查问题1–日志级别查看log,发现玩家登录的时候抛出了一个java.lang.OutOfMemoryError大概代码是向Redis序列化一个PlayerMirror镜像数据,但是在JSON.toJSONString的时候出现了错误.比较清晰&#xff0c;即序列化的时候expandCapacity,内存不足。…

c语言中预处理器是什么

点击上方蓝字关注我&#xff0c;了解更多咨询1、C语言有预处理器&#xff0c;Java中没有这个概念&#xff0c;其实只是文本替换工具。2、C的预处理器&#xff0c;即CPP&#xff0c;将在实际编译器中完成处理&#xff0c;所有预处理命令将从#开始。实例#include <stdio.h>…

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

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

php asp.net 代码量少,.NET_asp.net 反射减少代码书写量, 复制代码 代码如下:public b - phpStudy...

asp.net 反射减少代码书写量public bool Add(Liuyan refmodel){string sql "insert into liuyan(name,phone,zhiwei,gongsi,addr,country,dianyou,content,adddate)values(name,phone,zhiwei,gongsi,addr,country,dianyou,content,adddate)";OleDbParameter[] param…

c语言strcat_s函数如何使用

点击上方蓝字关注我&#xff0c;了解更多咨询1、strcat_s函数将strSource指向的字符串添加到其它字符串结尾。因此需要确保strDestination有足够的内存空间来容纳strSource和strDestination两个字符串&#xff0c;否则会导致溢出错误。2、strDestination末端的\0将被覆盖。strS…

502无法解析服务器标头_编写下载服务器。 第二部分:标头:Last-Modified,ETag和If-None-Match...

502无法解析服务器标头客户端缓存是万维网的基础之一。 服务器应通知客户端资源的有效性&#xff0c;客户端应尽可能快地对其进行缓存。 如我们所见&#xff0c;如果不缓存Web&#xff0c;它将非常缓慢。 只需在任何网站上Ctrl F5并将其与普通F5进行比较-后者就会更快&#xf…

c语言strcat_s函数的原理

点击上方蓝字关注我&#xff0c;了解更多咨询1、dst 内存空间大小目标字符串长度原始字符串场地‘\0’。2、使用sizeof函数获取内存空间大小&#xff0c;strlen函数获取字符串长度。即获取内存空间大小和查字符串长度。实例#include "stdafx.h" #include<stdlib.h…

java开发用怎么软件开发_Java 9中的5个功能将改变您开发软件的方式(还有2个不会)...

java开发用怎么软件开发有望在Java 9中发布的最令人兴奋的功能是什么&#xff1f; 近期不要对Java 9相对沉默而分心。JDK提交者正在努力准备下一个版本&#xff0c;预计在2015年12月才完成功能的下一个版本。此后&#xff0c;它将通过严格的测试和错误修复了将其准备于一般可用…

php redis并发读写,PHP使用Redis实现防止大并发下二次写入的方法

本文实例讲述了PHP使用Redis实现防止大并发下二次写入的方法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;PHP调用redis进行读写操作&#xff0c;大并发下会出现&#xff1a;读取key1&#xff0c;没有内容则写入内容&#xff0c;但是大并发下会出现同时多个php进程写…

理解C语言指针概念只需几分钟

点击上方蓝字关注我&#xff0c;了解更多咨询当我们声明一个变量或常量时&#xff0c;计算机系统会为这个变量或常量分配存储单元&#xff0c;变量的数据存储到被分配的存储单元内&#xff0c;对变量的赋值和取值操作都是针对存储单元的操作。C编译器是如何通过变量找到与其对应…

php做一个网页的源代码,用HTML5做一个个人网站此文仅展示个人主页界面。内附源代码下载地址...

下载说明&#xff1a; 1.再好的作品都不如将来要做的作品。在每一次的设计当中都能有所收获&#xff0c;才是设计师在web开发中最得益的。 2.本站所有作品均是杨青个人设计。如果发现模板有错&#xff0c;请尽情谅解。 3.如果遇到什么问htmlcss编写的个人主页&#xff0c;适合初…

jax-rs jax-ws_JAX-RS 2.x与Spring MVC:返回对象列表的XML表示

jax-rs jax-wsJSON是所有REST * API的王者&#xff0c;但是您仍然可能需要公开多种表示形式&#xff0c;包括XML。 使用JAX-RS和Spring MVC都非常简单。 实际上&#xff0c;唯一要做的就是用JAXB注释对从API调用返回的POJO进行注释。 但是在我看来&#xff0c;序列化对象列表时…

C语言中经典的程序设计结构:顺序、条件、循环

点击上方蓝字关注我&#xff0c;了解更多咨询无论使用何种编程语言&#xff0c;都含有程序设计的三大经典结构。即&#xff1a;顺序结构、条件结构和循环结构&#xff0c;C语言也是如此。综述顺序结构&#xff0c;就是一条大路走到底&#xff0c;没有岔路口&#xff0c;一步步从…