首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >命名约定:如何命名同一类的不同版本?

命名约定:如何命名同一类的不同版本?
EN

Stack Overflow用户
提问于 2016-03-03 07:39:24
回答 5查看 4.5K关注 0票数 9

我有一个类MyClass,它在实现中有一个错误。类是库的一部分,所以我不能更改类的实现,因为它将悄悄地更改现有客户端的行为(在本例中,客户端可能依赖于bug:例如,请参阅(https://connect.microsoft.com/VisualStudio/feedback/details/790160/httpclient-throws-operationcanceledexception-insead-of-timeoutexception))

我需要创建同一个类的第二个版本,其中包括bug修复。我以前见过这样的情况,但是我看到的命名总是递增的,比如MyClass2MyClass3

这些情况可能非常罕见,但是我想知道是否有更好的方法来命名这些“版本化”类。我设想的解决方案会随着时间的推移而增长,并且有多个这类类型的类,这可能会让人感到困惑,尤其是对于库来说。我想象自己必须在MyClassMyClassV2MyClassV3等之间做出选择。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2016-03-03 07:55:18

我想知道是否有更好的方法来命名这些“版本化”类。

对于“修复其他类中的错误的类”,没有.NET命名约定。我会在你的工作场所向其他开发人员提供建议,看看他们是否有这样的公司惯例。我认为一致性比实际名称更重要。

另外,关于你的问题,我根本不会创建一个新的类。我将用DeprecatedAttribute标记该方法,并在同一个类中实现逻辑,公开一组新的API方法,这些方法被正确地记录下来,以声明它们在这里是一个修复程序。您库的客户端可能已经熟悉了MyClass,这样做将简化对它们的使用,使它们每次都需要问自己“应该使用哪个版本”。

票数 4
EN

Stack Overflow用户

发布于 2016-03-03 08:21:27

在理想的世界中,新版本将引入额外的功能,同时仍然保持100%的向后兼容性与以前版本的API。不幸的是,理想的世界仍然难以捉摸,而且并不总是能够保持完全的向后兼容性。在这种情况下,版本后缀是适当的模式。

标准的.NET命名约定是使用增量编号,如ClassClass2Class3等。这来自COM接口的命名约定,它正是为您所描述的用例设计的。例如,IHTMLDocument接口目前有8个版本,从IHTMLDocumentIHTMLDocument8

由Cwalina和Abrams撰写的最初的https://rads.stackoverflow.com/amzn/click/com/0321545613书明确推荐了这种做法,作者必须这样说:

DO使用数字后缀来指示现有API的新版本,如果该API的现有名称是唯一有意义的名称(即,它是行业标准),那么添加任何有意义的后缀(或更改名称)都不是合适的选择。 //旧API过时(“此类型已过时。请使用同一类的新版本,X509Certificate2。”公共类X509Certificate {.} //新API公共类X509Certificate2 {.}

旧的惯例是将后缀Ex添加到API的新版本和改进版本中,这个版本来自于“扩展”一词。然而,这并不能很好地扩展,导致函数的后缀ExEx令人困惑。我不认为有一个ExExEx;每个人都害怕接触那些API。“框架设计指南”明确建议反对这种做法,那些已经学到经验教训的架构师.NET:

不使用"Ex“(或类似的)后缀作为标识符,以区别于同一API的早期版本。 过时(“这种类型过时了.”公共类Car {.} //新API公共类CarEx {.} //公共类CarNew {.} //公共类Car2 {.} //正确方式公共类汽车{.} //正确方式

显然,正如他们最后的代码示例所暗示的那样,如果要在API的新版本中添加对特定特性的支持,最好用引用该特定特性来命名新的类/接口。

虽然上面的内容几乎完全集中在类和接口上,但同样的逻辑也适用于可能在以后的修订版中添加的该类的任何成员函数。原始函数可以保留其原始名称,新添加的函数具有反映其迭代或添加功能的不同名称。

票数 17
EN

Stack Overflow用户

发布于 2016-03-03 07:48:36

我会将现有类的所有行为复制到新类,重命名原始类以表示类已过时,将新类重命名为以前的实际名称,并将原始类(现在使用新名称)标记为[Obsolete],指示不再使用它。因此,所有消耗代码都会自动调用新的行为。因此,具有正确行为的新类将获得原始类的名称,例如,buggy类获得版本号。

对于遗留代码,您可以执行相反的操作,使用新名称创建一个新类,并将旧类标记为Obsolete。我知道SDK有一个版本号,最后一个数字表示类的最新版本,所有其他类都有这样一个属性,同时在文档中有一个通知,其中提到类被一个新版本所取代。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35776519

复制
相关文章
水平滚动条
主要用到并排Div 的父级设置white-space: nowrap,并排的div设置display:inline-block;
tianyawhl
2019/07/16
2.6K0
[iOS] WSHorizontalPickerView 图片水平滚动封装
之前这篇文章传送门本来是记录自己练手的demo的,后来很多人来问我要代码。今天就抽时间封装了一下,没有考虑太多情况,等我有空再去仔细考虑吧。
wOw
2018/09/18
3K0
WPF 让 TextBox 支持水平滚动
超级简单的方法,只需要设置 HorizontalScrollBarVisibility 可见就可以了
林德熙
2022/08/12
9850
CSS——多列
多列属性可以将文本设计成像报纸杂志那种多列排版的布局,类似于Microsoft Word中的段落分栏功能。
Html5知典
2019/11/26
1.3K0
pandas dataframe 新增单列和多列
dataframe assign方法,返回一个新对象(副本),不影响旧dataframe对象
lovelife110
2021/01/14
4.5K0
表单水平文字滚动,效果还有阴影
加菲猫的VFP
2023/08/21
2720
表单水平文字滚动,效果还有阴影
自定义View实现水平滚动控件
      前几天项目中需要使用到一个水平可滚动的选择条,类似下图效果(图片是从简书上一位作者那儿找来的,本篇也是在这位作者的文章的基础上修改的,站在大神的肩膀上,哈哈,由于原文没有提供demo,而且
coderZhen
2018/06/28
9410
jQuery无缝图片横向(水平)/竖向(垂直)滚动
jQuery的一个不错的小插件,记性越来越差了,整理一下贴在这里,方便以后Copy & Paste <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head><title> </title> <script typ
菩提树下的杨过
2018/01/22
17.4K0
有意思的水平横向溢出滚动
最近接到一个很有意思的需求,能否做到当内容横向溢出时,依然能够使用鼠标滚轮对内容进行滚动的方法。
Sb_Coco
2022/09/28
2.6K0
有意思的水平横向溢出滚动
excel 多列内容拼接
例如想要拼接  A2 和 B2 的内容生成一个新列,A2 内容为 320,B2 内容为 480,我们生成新列,需要拼接两列内容,中间同时拼接 * ,新列公式如下:
蓓蕾心晴
2022/10/27
1.5K0
联合索引(多列索引)[通俗易懂]
联合索引是指对表上的多个列进行索引,联合索引也是一棵B+树,不同的是联合索引的键值数量不是1,而是大于等于2.
全栈程序员站长
2022/09/05
2.7K0
如何纯CSS实现标题栏、表格头水平滚动垂直不滚动
有些报表会很宽,浏览器水平放不下,需要水平滚动显示,这个可以设置overflow-y:hidden实现,很基本的实现,没什么难度。
周陆军博客
2023/05/07
1.7K0
JqGrid实现超长水平(左右)滚动条功能
使用JqGrid来实现列表功能非常方便快捷,但在使用的过程中还会遇到一些定制化的问题。这篇文章来跟大家说一下当列表中数据比较多时,如何实现水平(左右)滚动来确保能够查看完整的信息。
程序新视界
2020/05/18
3.9K0
MFC 控件编程之水平滚动条跟垂直滚动条
  首先在操作滚动条的时候.我们要知道滚动条的一些属性. 比如我们要设置 最大值 最小值. 以及每次递增的值是多少.都要设置.
IBinary
2019/05/25
2.9K0
MySQL索引中的前缀索引和多列索引
正确地创建和使用索引是实现高性能查询的基础,本文笔者介绍MySQL中的前缀索引和多列索引。
玖柒的小窝
2021/11/06
4.7K0
点击加载更多

相似问题

水平滚动的多列问题

21

列和水平滚动

12

有多列的页面,水平滚动,没有垂直滚动

22

具有水平滚动和自动列宽和高度的多列CSS列表

36

具有水平滚动和图像的自动多列固定高度问题

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档