Questions tagged «naming-conventions»

命名约定是指管理分配给编程结构(例如变量和方法)的名称的通用规则。这些约定通过增强跨不同模块的命名一致性来提高可读性,从而提高代码的可维护性。

8
枚举和匹配属性的C#命名约定
我经常发现自己实现了一个类,该类维护作为枚举的某种状态属性:我有一个Status枚举和一个Status类型的Status属性。我应该如何解决此名称冲突? public class Car { public enum Status { Off, Starting, Moving }; Status status = Status.Off; public Status Status // <===== Won't compile ===== { get { return status; } set { status = value; DoSomething(); } } } 如果Status枚举对于不同类型是通用的,那么我将其放在类之外,这样就可以解决问题。但是Status仅适用于Car,因此在类外声明该枚举没有意义。 在这种情况下,您使用什么命名约定? NB:这个问题在对这个问题的答案的评论中被部分辩论。由于这不是主要问题,因此可见性不高。 编辑:菲利普·埃克伯格(Filip Ekberg)针对特定的“状态”案例提出了IMO出色的解决方法。但是,我会很感兴趣地阅读有关枚举/属性名称不同的解决方案的信息,例如Michael Prewecki的答案。 EDIT2(2010年5月):我最喜欢的解决方案是按照Chris S的建议对枚举类型名称进行复数。根据MS准则,此名称仅应用于标记枚举。但是我变得越来越喜欢它。我现在也将其用于常规枚举。

28
英国英语还是美国英语?
如果您有API,并且您是英国的开发人员且具有很高的国际受众,那么您的API应该是 setColour() 要么 setColor() (以一个字为例)。 英国工程师通常对自己的“正确”拼写颇为防御,但可以说美国拼写在国际市场上更为“标准”。 我想问题是重要的吗?其他地区的开发人员是否在拼写GB拼写方面挣扎,还是通常很清楚这是什么意思? 都是美国英语吗?

12
Java布尔型吸气剂“是”与“是”
我知道Java中布尔获取器的约定包括前缀“ is”。 isEnabled isStoreOpen 但是,如果主题是复数呢?也就是说,如果我不想知道某个商店是否已营业,而是想知道所有商店是否已营业怎么办? isStoresOpen() 用英语没有意义。 我很想写这样的getter: areStoresOpen areDogsCute areCatsFuzzy 我认为这是有意义的,但我一直在别人告诉我,我应该只是吮吸它,抛弃主题动词协议和使用isStoresOpen,isDogsCute,isCatsFuzzy。 无论如何,对于在复数主题上运算的布尔型吸气剂,我该怎么办?

14
用户界面上的“ ID”或“ Id”
我工作的质量检查经理刚刚通知我,我的桌面应用程序中存在一个错误,原因是登录提示应为“ Operator ID”(操作员ID)时出现提示。她的论点是“ Id”指的是弗洛伊德“心理装置”的自我部分,在语义上是不正确的。 现在是一名肛门工程师(AE),我当然必须去查找ID与ID,从我的粗略调查(谷歌)来看,ID似乎和ID一样普遍用于弗洛伊德的自我。 因此,我的推断是,Id是“标识符”的缩写,并且比通常表示两个单词的缩写的ID更正确或至少更常用。 我可以更改UI,但随后我就不会继续担任AE的职业,因此我想知道是否可以使用此类最佳实践或参考来支持我的论点?请记住,此问题与用户界面有关,而不与源代码有关,在这里,缩写词和大小写是哲学的一个完全不同的分支。

9
资产的命名约定(图像,CSS,JS)?
我仍在努力为Web项目中使用的图像,js和CSS文件之类的资产找到一个良好的命名约定。 因此,我当前将是: CSS: style-{name}.css 例子:style-main.css,style-no_flash.css,style-print.css等。 JS: script-{name}.js 示例:script-main.js,script-nav.js等等。 图片:其中 {imageType}-{name}.{imageExtension} {imageType}的任何一个 图标(例如帮助内容的问号图标) img(例如,通过<img />元素插入的标题图片) 按钮(例如图形提交按钮) bg(图像在CSS中用作背景图像) Sprite(图像在CSS中用作背景图像,并且包含多个“版本”) 例如,名称是:icon-help.gif,img-logo.gif,sprite-main_headlines.jpg,bg-gradient.gif等。 那么,您怎么看?您的命名约定是什么?

15
您在Java项目中为包命名使用什么策略?为什么?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 3年前关闭。 改善这个问题 不久前,我就想到了这一点,最近,当我的商店正在制作其第一个真正的Java Web应用程序时,它又浮出水面。 作为介绍,我看到了两种主要的软件包命名策略。(要清楚,我不是在指整个“ domain.company.project”部分,而是在讨论其下​​的包约定。)无论如何,我看到的包命名约定如下: 功能性:根据体系结构上的功能来命名软件包,而不是根据业务领域来标识它们的身份。 对此的另一个术语可能是根据“层”进行命名。因此,您将拥有一个* .ui包,一个* .domain包和一个* .orm包。您的包裹是水平切片,而不是垂直切片。 这是多比逻辑命名更常见。实际上,我不相信我曾经见过或听说过执行此操作的项目。当然,这让我感到不安(有点像认为您已经提出了NP问题的解决方案),因为我并不聪明,我认为每个人都必须有充分的理由以自己的方式去做。在另一方面,我不反对人们只是缺少在房间里的大象和我从来没有听说过的实际参数为做包命名这种方式。这似乎只是事实上的标准。 逻辑:根据软件包的业务域标识来命名软件包,并将与该垂直功能有关的每个类放入该软件包。 正如我之前提到的,我从未见过或听说过,但这对我来说意义非凡。 我倾向于垂直而不是水平地接近系统。我想开发订单处理系统,而不是数据访问层。显然,我很有可能在该系统的开发过程中接触到数据访问层,但是重点是我不这么认为。当然,这意味着当我收到变更单或想要实现一些新功能时,不必去大量的软件包中寻找所有相关的类,这将是很好的。取而代之的是,我只是查看X软件包,因为我所做的与X有关。 从开发的角度来看,我认为使软件包记录您的业务领域而不是体系结构是一个重大胜利。我觉得域几乎总是系统的一部分,这很难理解,因为系统的体系结构(尤其是在这一点上)在其实现中几乎变得平凡。我可以使用这种命名约定进入系统,并立即从软件包的命名中得知它处理订单,客户,企业,产品等的事实,这似乎很方便。 看来这将使您能够更好地利用Java的访问修饰符。这使您可以更加清晰地将接口定义为子系统,而不是系统层。因此,如果您有想要透明透明地持久化的orders子系统,那么您不必通过在dao层中为其持久性类创建公共接口,而不必将其打包在里面,就可以从理论上讲永远不会让其他任何人知道它是持久性的。仅涉及其处理的类。显然,如果您想公开此功能,则可以为其提供接口或将其公开。通过将系统功能的垂直部分分割成多个软件包,您似乎损失了很多。 我想我可以看到的一个缺点是,它确实会使撕裂图层变得更加困难。您必须进入并更改所有软件包中的所有类,而不仅仅是删除或重命名软件包,然后使用替代技术将新软件包放到适当的位置。但是,我认为这没什么大不了的。可能是由于缺乏经验,但我必须想象一下,与您在系统中进行垂直要素切片编辑的时间相比,交换技术的时间显得苍白。 因此,我想这个问题会传给您,您如何命名包裹以及为什么?请理解,我不一定非要偶然发现这里的金鹅或其他东西。我对这一切非常陌生,主要是具有学术经验。但是,我无法发现推理中的漏洞,因此希望大家能够继续前进。

10
“ foos数量”变量的命名约定
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 3年前关闭。 改善这个问题 假设我需要在一个变量中存储foo对象的数量。 我不是母语为英语的人,所以我总是想知道该变量的最佳名称(=简短且立即清晰)。 foo_num?num_foo?no_foo?foo_no?或者是其他东西? 全名应该是number_of_foos,但是有点冗长。 你最喜欢什么,为什么?



2
PostgreSQL:默认约束名称
在PostgreSQL中创建表时,如果未提供,则将分配默认约束名称: CREATE TABLE example ( a integer, b integer, UNIQUE (a, b) ); 但是使用ALTER TABLE添加约束似乎必须使用名称: ALTER TABLE example ADD CONSTRAINT my_explicit_constraint_name UNIQUE (a, b); 这导致了我从事的项目的命名不一致,并提示了以下问题: 有没有一种简单的方法可以将约束添加到现有表中,该约束的名称是在表创建过程中添加时将收到的名称? 如果不是,是否应完全避免使用默认名称以防止不一致?

3
Haskell:为什么约定将辅助函数命名为“ go”?
go在阅读Haskell的材料或资料时,我会看到很多东西,但是我从未真正感到满意-(我想它在我的脑海中具有“ goto”的负面含义)。我开始学习Haskell与LYAH,而且在那里我拿起使用倾向的acc和step当写倍。书写惯例go从何而来? 最重要的是,这个名字到底go意味着什么?

15
在Java变量和方法名称中使用下划线[关闭]
从目前的情况来看,这个问题不适合我们的问答形式。我们希望答案能得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 即使在如今,我经常在Java变量和方法中看到下划线,例如成员变量(例如“ m_count”或“ _count”)。据我所记得,在这些情况下使用下划线被Sun称为坏样式。 应该使用它们的唯一位置是常量(例如“ public final static int IS_OKAY = 1;”中的常量),因为常量应该全部为大写而不是驼峰式。在这里,下划线应使代码更具可读性。 您认为在Java中使用下划线是不好的风格吗?如果是(或不是),为什么?

2
C#方法命名约定:ToSomething与AsSomething
在为业务逻辑对象编写一些扩展方法时,我遇到了重命名转换方法的问题。someObject.ToAnotherObject()与广泛使用会很好object.ToString()。 但是,例如LINQ,将两种变体混合在一起,我找不到它们之间的区别。ToDictionary(),ToList(),AsParallel(),AsQueryable(),... 这两种命名约定之间有什么区别,我应该知道什么才能决定是否将其用于自己的类?

7
.NET委托类型的正确命名约定?
按照惯例,类通常被命名为名词,方法被称为动词,接口则被称为形容词。 委托的通用命名约定是什么?或者,当在类型和其他事物中列出代表时,区分名称的好方法是什么? 我的直接假设是将一个委托命名为一个形容词,因为单个方法接口通常可以被委托替换。 一些想法: delegate object ValueExtracting(object container); delegate object ValueExtractor(object container); delegate object ValueExtractionHandling(object container); delegate object ValueExtractionHandler(object container);

7
Android命名约定
我正在寻找详尽的Android命名约定建议。我在这里发现了一些: http://source.android.com/source/code-style.html#follow-field-naming-conventions 其中说: 非公共,非静态字段名称以m开头。 静态字段名称以s开头。 其他字段以小写字母开头。 公共静态最终字段(常量)为ALL_CAPS_WITH_UNDERSCORES。 但是我正在寻找涵盖Android各个方面的更广泛的东西: 如何命名其中的布局和视图, 如何命名菜单 如何命名样式 如何命名数据库表(单数,复数)和其中的字段 等等 如果有一些普遍接受的建议,我将乐意效仿。所有SDK似乎都按照自己的方式行事,因此我对Android的实现方式特别感兴趣。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.