c++ 前缀 变量命名_前缀命名

c++ 前缀 变量命名

如果您是第一次查看Takes或Cactoos的源代码,很可能会像其他命名约定一样被命名约定触发,这意味着大多数类名都有两个字母的前缀: BkSafeRqFakeRsWithStatusTkGzip等。 老实说,我还没有见过一个Java开发人员会对这种约定一见钟情。 但是,我看到许多现在爱上它的人。 本文适用于有兴趣从第一类转到第二类的读者。

布法罗66(1998),文森特·加洛(Vincent Gallo)

任何大小合适的软件包,模块,库或框架都具有大量的类。 好吧,它必须有 。 如果不是这样,则肯定是其设计存在问题。 因此,如何命名这些类始终存在问题。 最简单,最明显的方法是在Java及其旗舰框架Spring中使用的方法 :使类名称尽可能具有描述性,并且要尽可能长。 以下是一些示例 :

  • ObjectFactoryCreatingFactoryBean
  • SimpleBeanFactoryAwareAspectInstanceFactory
  • TransactionAwarePersistenceManagerFactoryProxy
  • AbstractAnnotationConfigDispatcherServletInitializer

这是垃圾,不是吗?

DDD范式是一种更复杂,更耗时的类命名方式,它建议在真实世界中的实体之后使用名词 ,例如港口,汽车,书籍,故事,用户,插座等。 对于软件架构师而言,确定正确的实体是一项巨大的挑战。 一个不好的人只会求助于ConnectionFactoryUtilsDefaultListableBeanFactory并称之为一天。 更专业的人可能要花费数小时或数天的时间,但最终会想出更多由领域驱动的东西。

假设您是后者,并且您设法找到了正确的名词。 您的域中将有多少个? 我相信有几十个。 即使应用程序非常复杂,在其问题域中也不会超过30个实体。 但是, 如上所述 ,类的数量将更大,有时超过一千或更多。 因此,您将面临的第二个问题是如何命名“带有指定实体的类”。 例如,您有一个端口,还有一个随机端口和一个TCP端口,一个端口已经关闭,一个端口尚未打开,依此类推。

会有带有形容词的名词 :随机端口,关闭端口,打开端口,TCP端口,断开端口等等。 您如何命名这些班级? 也许就这么简单: RandomPortOpenedPortClosedPortTcpPort 。 也许可以,但是我认为最好将所有类的公共Port部分转换为公共前缀Pt

  • PtRandom
  • PtOpened
  • PtClosed
  • PtTcp

这种方法的唯一缺点是,新手可能不知道Pt前缀的含义。 确实,学习它可能需要一些时间(几分钟)。 但是,这样做的好处是更大的:一旦您了解了应用程序中存在的所有前缀(由于域中实体的数量非常有限,所以只有少数前缀),您可以立即了解该前缀的哪一部分该类所属的类型层次结构(这来自Takes ):

看到Rq前缀后,您立即了解到您正在处理org.takes.Request接口的实现。 不是来自JDK的ServletRequest ,不是来自Spring的HttpRequest ,也不是来自OkHttp的 Request 。 您知道这是Takes的Request

因此,通过使用短前缀而不是名词,我们使代码更加清晰。 我们消除了一遍又一遍重复使用相同名词的噪音,并使引用变得更容易。 每个前缀是类型层次结构中类的唯一定位器。

翻译自: https://www.javacodegeeks.com/2020/03/prefixed-naming.html

c++ 前缀 变量命名

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

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

相关文章

jvm(8)-虚拟机字节码执行引擎

【0】README0.1)本文转自 “深入理解jvm”,旨在学习 虚拟机字节码执行引擎 的基础知识;【1】概述1)物理机和虚拟机的执行引擎: 物理机的执行引擎是直接建立在处理器,硬件,指令集和操作系统层面上…

什么是大数据

转载自 玻璃猫 程序员小灰大数据是具有海量、高增长率和多样化的信息资产,它需要全新的处理模式来增强决策力、洞察发现力和流程优化能力。Big data is high volume, high velocity, and/or high variety information assets that require new forms of processing…

java 记录考勤记录_Java 14:记录

java 记录考勤记录Java 14是在几周前问世的,它引入了Record类型,它是一个不变的数据载体类,旨在容纳一组固定的字段。 请注意,这是一种预览语言功能 ,这意味着必须使用--enable-preview标志在Java编译器和运行时中显式…

漫画:什么是HashMap

转载自 玻璃猫 程序员小灰众所周知,HashMap是一个用于存储Key-Value键值对的集合,每一个键值对也叫做Entry。这些个键值对(Entry)分散存储在一个数组当中,这个数组就是HashMap的主干。 HashMap数组每一个元素的初始值都…

jvm(10)-早期(编译期)优化

【0】README 0.1)本文部分文字描述转自 “深入理解jvm”,旨在学习 早期(编译期)优化 的基础知识; 0.2)本文部分文字描述转自: http://www.cnblogs.com/zhouyuqin/p/5223180.html 【1】概述 …

etl介绍与etl工具比较_ETL万岁

etl介绍与etl工具比较提取转换负载是从一个数据系统中提取数据并加载到另一个数据系统中的过程。 涉及的数据系统称为源系统和目标系统。 来自源系统的数据形状与目标系统不匹配,因此需要进行一些转换以使其兼容,该过程称为Transformation 。 转换是由m…

漫画:高并发下的HashMap

转载自 玻璃猫 程序员小灰上一期我们介绍了HashMap的基本原理, 这一期我们来讲解高并发环境下,HashMap可能出现的致命问题。HashMap的容量是有限的。当经过多次元素插入,使得HashMap达到一定饱和度时,Key映射位置发生冲突的几率会…

jvm(11)-晚期(运行期)优化

【0】README 0.1)本文部分文字描述转自 “深入理解 jvm”,旨在学习 晚期(运行期)优化 的基础知识; 【1】概述 1)即时编译器(JITjust in time compiler)定义:为了提高…

java 新功能_Java 14的新功能

java 新功能2020年3月17日,Oracle发布了名为Java 14的Java新版本,其中包括许多新功能,工具,安全性,调试和更新的文档方面的改进。 但是,Oracle还向您提供Java的较旧版本,因为它具有向后兼容性&a…

漫画:什么是ConcurrentHashMap

转载自 玻璃猫 程序员小灰————————————————————————前两期我们讲解了HashMap的基本原理,以及高并发场景下存在的问题。没看过的小伙伴可以点击下面链接:漫画:什么是HashMap? 漫画:高并发下的H…

jvm(12)-java内存模型与线程

【0】README0.1)本文部分文字描述转自“深入理解jvm”,旨在学习“java内存模型与线程” 的基础知识;【1】概述1)并发处理的广泛应用是使得 Amdahl 定律代替摩尔定律称为计算机性能发展源动力的根本原因;2)A…

junit mockito_从工作中清除代码–使用JUnit 5,Mockito和AssertJ编写可执行规范

junit mockito可执行规范是也可以用作设计规范的测试。 通过启用通用语言(在DDD世界中,这也称为无处不在的语言 ),它们使技术和业务团队能够进入同一页面。 它们充当代码的未来维护者的文档。 在本文中,我们将看到一种…

漫画:什么是红黑树

转载自 玻璃猫 程序员小灰————————————二叉查找树(BST)具备什么特性呢?1.左子树上所有结点的值均小于或等于它的根结点的值。 2.右子树上所有结点的值均大于或等于它的根结点的值。 3.左、右子树也分别为二叉排序树。下图中这棵树…

jvm(13)-线程安全与锁优化

【0】README 0.1)本文部分文字转自“深入理解jvm”, 旨在学习 线程安全与锁优化 的基础知识; 0.2)本文知识对于理解 java并发编程非常有用,个人觉得,所以我总结的很详细; 【1】概述 【2】线程安…

apache ignite_Kubernetes集群上的Apache Ignite和Spring第3部分:测试应用程序

apache ignite在上一个博客中,我们为Ignite应用程序创建了Kubernetes部署文件。 在此博客上,我们将在Kubernetes上部署Ignite应用程序。 我将在此使用minikube。 让我们先构建 mvn clean install 我将创建一个简单的Docker映像,因此需要Doc…

什么是AES算法?(整合版)

转载自 玻璃猫 程序员小灰 假设有一个发送方在向接收方发送消息。如果没有任何加密算法,接收方发送的是一个明文消息:“我是小灰” 如果消息被中间人截获到,即使中间人无法篡改消息,也可以窥探到消息的内容,从而暴露了…

soapui 测试soap_使用SoapUI调用不同的安全WCF SOAP服务-基本身份验证,第二部分

soapui 测试soap在本系列的第一篇文章中,我们创建了一个基本的身份验证服务,以使用SoapUI进行调用。 因此,在第二篇文章中,我们将逐步演示如何使用此工具成功调用这种服务。 使用SoapUI的1-Basic WCF SOAP –创建新的SOAP项目 首…

如何获得即时编译器(JIT)的汇编代码(linux环境下)

【0】README0.1)本文主要解决如何在linux下获取即时编译器的汇编代码问题;0.2)本文部分内容转自:http://psy-lob-saw.blogspot.jp/2013/01/java-print-assembly.html1)给定java源代码// 单例模式(分析volat…

漫画:什么是SHA系列算法

转载自 玻璃猫 程序员小灰 SHA-1 SHA-1算法可以从明文生成160bit的信息摘要,示例如下: 给定明文:abcd SHA-1摘要:81FE8BFE87576C3ECB22426F8E57847382917ACF SHA-1 与 MD5的主要区别是什么呢? 1.摘要长度不同。 …

apache ignite_Kubernetes集群上的Apache Ignite和Spring第1部分:Spring Boot应用程序

apache ignite在之前的一系列博客中,我们在Kubernetes集群上启动了一个Ignite集群。 在本教程中,我们将使用先前在Spring Boot Application上创建的Ignite集群。 让我们使用Spring Boot创建我们的项目。 Spring Boot应用程序将连接到Ignite集群。 让我…