所以我正在研究这个应该通过Web服务向供应商请求帮助文档的类.我试着将它命名DocumentRetriever,VendorDocRequester,DocGetter,但他们就是不健全的权利.我最终浏览了dictionary.com半小时,试图找出一个足够的词.
开始使用糟糕的名字进行编程就像是在早上有一个非常糟糕的发型日,其余时间从那里开始走下坡路.感觉到我?
我目前正在将一些项目从Ant迁移到Maven.循规蹈矩,因为我,我想用行之有效的约定查找groupId和artifactId,但我找不到任何详细的约定(也有一些,但不包括我想了解一下点).
以此项目为例,首先是Java包: com.mycompany.teatimer
Tea计时器实际上是两个单词,但Java包命名约定禁止插入下划线或连字符,所以我将它们全部写在一起.
我选择了groupId相同的包ID,因为我认为这是一个好主意.是吗?
最后,我必须选择一个artifactId,我目前去了teatimer.但是当我查看其他Maven项目时,他们使用连字符来分割artifactIds中的单词,如下所示:tea-timer.但是当连接到groupId:时确实看起来很奇怪com.mycompany.teatimer.tea-timer.
你会怎么做?
另一个例子:
包裹名字: com.mycompany.awesomeinhouseframework
groupId:( com.mycompany.awesomeinhouseframework?)
artifactId:( awesome-inhouse-framework?)
应该将文件命名为some-with-hyphens.js,camelCased.js还是其他什么?
我在这里找不到这个问题的答案.
我知道有很多争议(可能没有争议,但至少是争论)关于哪种命名约定最适合JavaScript.
如何命名变量,函数,对象等?
我会对此有所了解,因为我没有长时间使用JS(几年,只有),我只是请求创建一个具有命名约定的文档,以便在我们的工作项目中使用.所以我一直在寻找(google-ing),并且有很多不同的意见.
我在JS上阅读的书籍本身也使用不同的命名约定,但他们都同意一点:"找到适合你的东西,并坚持下去."但是现在我已经阅读了很多,我发现我像其他一些方法一样,比我现在习惯的要好一些.
我问这个问题,尽管在枚举和匹配属性的C#命名约定中读过类似但不完全正确的内容
我发现我倾向于将枚举命名为复数,然后将它们用作单数,例如:
public enum EntityTypes {
Type1, Type2
}
public class SomeClass {
/*
some codes
*/
public EntityTypes EntityType {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
当然它有效,这是我的风格,但任何人都可以找到这种惯例的潜在问题吗?我确实有一个"丑陋"的命名与"状态"一词:
public enum OrderStatuses {
Pending, Fulfilled, Error, Blah, Blah
}
public class SomeClass {
/*
some codes
*/
public OrderStatuses OrderStatus {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
附加信息:也许我的问题不够明确.在命名我定义的枚举类型的变量时,我经常要努力思考.我知道最佳实践,但它无助于简化命名这些变量的工作.
我不可能将我的所有枚举属性(比如"状态")公开为"MyStatus".
我的问题:任何人都可以找到上述惯例的潜在问题吗?这不是最佳做法.
问题改写:
嗯,我想我应该这样问这个问题:有人能用一种很好的通用方法来命名枚举类型,这样在使用时,枚举"实例"的命名会非常简单吗?
这似乎是一个简单的问题,但我无法通过Stack Overflow搜索或Google找到它.什么类型后跟一个_t意思?如
int_t anInt;
Run Code Online (Sandbox Code Playgroud)
我在C代码中看到很多意味着与硬件紧密相关 - 我不禁认为它们是相关的.
看一下Android教程,比如Notepad教程,我注意到几乎所有的变量都以字母"m"开头.这是什么惯例,它来自哪里?
在Java中,静态最终变量是常量,惯例是它们应该是大写的.但是,我已经看到大多数人声称记录器是小写的,这在PMD中是违规的.
例如:
private static final Logger logger = Logger.getLogger(MyClass.class);
Run Code Online (Sandbox Code Playgroud)
我们应该使用LOGGER吗?
对于华丽的标题感到抱歉 - 如果我能想出一个简洁的标题,我就不用问这个问题了.
假设我有一个不可变的列表类型.它有一个操作Foo(x),它返回一个带有指定参数的新的不可变列表作为最后的额外元素.因此,要建立一个值为"Hello","immutable","world"的字符串列表,您可以编写:
var empty = new ImmutableList<string>();
var list1 = empty.Foo("Hello");
var list2 = list1.Foo("immutable");
var list3 = list2.Foo("word");
Run Code Online (Sandbox Code Playgroud)
(这是C#代码,如果您觉得语言很重要,我最感兴趣的是C#建议.这不是一个基本的语言问题,但语言的习语可能很重要.)
重要的是现有的列表不会被改变Foo- 所以empty.Count仍然会返回0.
获得最终结果的另一种(更惯用的)方式是:
var list = new ImmutableList<string>().Foo("Hello")
.Foo("immutable")
.Foo("word");
Run Code Online (Sandbox Code Playgroud)
我的问题是:Foo最好的名字是什么?
编辑3:正如我稍后透露的那样,该类型的名称可能实际上并不存在ImmutableList<T>,这使得该位置清晰.想象一下,它是TestSuite并且它是不可变的,因为它所属的整个框架是不可变的......
(编辑完3)
到目前为止我提出的选项:
Add:常见于.NET,但意味着原始列表的变异Cons:我相信这是函数式语言中的正常名称,但对于没有这些语言经验的人来说毫无意义Plus:我最喜欢的,它并不意味着我的变异.显然,这也用在Haskell中,但期望略有不同(Haskell程序员可能希望它将两个列表一起添加而不是将一个值添加到另一个列表中).With:与其他一些不可变的约定一致,但它与IMO没有完全相同的"附加性".And:不是很具描述性.我用来选择的标准是:
如果我不够清楚,请询问更多细节......
编辑1:这里是我的喜欢推理Plus来Add.考虑以下两行代码:
list.Add(foo); …Run Code Online (Sandbox Code Playgroud) 哪个更好,为什么?
def my_function():
Run Code Online (Sandbox Code Playgroud)
要么
def myFunction():
Run Code Online (Sandbox Code Playgroud)