学术界认为表名应该是他们存储属性的实体的单数.
我不喜欢任何需要在名称周围使用方括号的T-SQL,但我已经将Users
表重命名为单数,永远判断那些使用表的人有时必须使用括号.
我的直觉是,保持单数是更正确的,但我的直觉也是括号表示不受欢迎的人,如列名,其中有空格等.
我应该走还是留?
有人可以解释在Python中对象名称之前有前导下划线的确切含义吗?另外,解释单个和双重前导下划线之间的区别.此外,无论所讨论的对象是变量,函数,方法等,这个含义是否保持不变?
很久以前我读过一篇文章(我相信一篇博客文章),它让我在命名对象的"正确"轨道上:非常谨慎地命名程序中的东西.
例如,如果我的应用程序(作为一个典型的业务应用程序)处理用户,公司和地址我有一个User
,一个Company
和一个Address
域类 - 可能在某个地方UserManager
,一个CompanyManager
和一个AddressManager
会弹出来处理这些事情.
所以,你可以告诉那些UserManager
,CompanyManager
和AddressManager
做什么?不,因为Manager是一个非常通用的术语,适用于您可以对域对象执行的任何操作.
我读过的文章建议使用非常具体的名称.如果它是一个C++应用程序并且该UserManager
工作正在分配并从堆中释放用户,那么它将不会管理用户,而是保护他们的出生和死亡.嗯,也许我们可以称之为UserShepherd
.
或者可能UserManager
的工作是检查每个User对象的数据并以加密方式对数据进行签名.然后我们有一个UserRecordsClerk
.
现在这个想法一直困扰着我,我尝试应用它.并且发现这个简单的想法非常难.
我可以描述这些类的功能和(只要我不进入快速和脏编码)我写的类只做一件事.我想念从名称到名称的是一种名称目录,一种将概念映射到名称的词汇表.
最终,我想在我的脑海里有类似图案目录的东西(通常设计图案很容易提供对象名称,例如工厂)
保姆 - 帮助对象在创建后达到"可用"状态 - 例如通过连接到其他对象
等等
那么,你如何处理这个问题呢?你有一个固定的词汇表,你是否动态发明新的名字,或者你认为命名的东西不是那么重要或错误?
PS:我也对链接到讨论这个问题的文章和博客感兴趣.首先,这是让我思考它的原始文章:在没有"经理"的情况下命名Java类
以下是我在此期间从这个问题中学到的内容的一些总结.
关于这个主题的进一步文章/书籍:
以及我从答案中收集的主观名称前缀/后缀的当前列表:
现在,我已经使用本地git存储库与我的组的CVS存储库进行了几个月的交互.我已经制作了一个几乎神经质的分支,其中大部分幸运地合并回我的行李箱.但是命名开始成为一个问题.如果我有一个容易用简单标签命名的任务,但是我在三个阶段完成它,每个阶段都包含它们自己的分支和合并情况,那么我每次都可以重复分支名称,但这会使历史有点混乱.如果我在名称中有更具体的说明,并且每个阶段都有单独的描述,那么分支名称开始变得冗长而且难以处理.
我确实在这里学习通过旧线程查看我可以开始用名称中的/来命名分支,即主题/任务,或类似的东西.我可能会开始这样做,看看它是否有助于保持更好的组织.
命名git分支有哪些最佳实践?
编辑:实际上没有人建议任何命名约定.当我完成分支时,我会删除分支.由于管理层不断调整我的优先事项,我恰巧有几个人.:)作为为什么我可能需要在任务上需要多个分支的示例,假设我需要将任务中的第一个离散里程碑提交到组的CVS存储库.那时,由于我与CVS的不完美交互,我会执行该提交然后杀死该分支.(如果我在那时尝试继续使用相同的分支,我看到太多奇怪的事情与CVS交互.)
我经常看到带有以美元符号开头的变量的JavaScript.何时/为什么你会选择以这种方式为变量添加前缀?
(我不是问$('p.foo')
你在jQuery和其他人看到的语法,而是像$name
和的常见变量$order
)
在C++中通常用某种前缀命名成员变量来表示它们是成员变量而不是局部变量或参数.如果你来自MFC背景,你可能会使用m_foo
.我myFoo
偶尔也见过.
C#(或者可能只是.NET)似乎建议只使用下划线,如_foo
.这是否允许C++标准?
每当我设计一个数据库时,我总是想知道是否有一种在我的数据库中命名项目的最佳方法.我经常问自己以下问题:
是否有任何建议的指南用于命名数据库中的项目?
database language-agnostic database-design naming-conventions
我注意到在Internet Explorer中(但不幸的是,在我测试的其他浏览器中没有),您可以使用一些Unicode变量名.这是我的一天,我非常高兴能够编写有趣的Unicode代码,如下所示:
var ??????????? = "You dirty horse.",
happy?n?mat?p?eia = ":)Yay!",
?_? = "emoticon";
alert(??????????? + happy?n?mat?p?eia + ?_?);
Run Code Online (Sandbox Code Playgroud)
但是,出于某些原因,并且???
,?_?
并且?
它们不是有效的变量名称.
为什么?_?
和???
工作,但是???
,?_?
并?
没有?
编辑:在JSFiddle上的浏览器中测试它.我在Internet Explorer 9,Chrome,Firefox和Opera中测试过它.到目前为止,它似乎只适用于Internet Explorer 9.(我不知道Internet Explorer 8及以下版本.)让我知道它是否适用于其他浏览器.
来自C#背景的变量和方法名称的命名约定通常是CamelCase或Pascal Case:
// C# example
string thisIsMyVariable = "a"
public void ThisIsMyMethod()
Run Code Online (Sandbox Code Playgroud)
在Python中,我已经看到了上面的内容,但我也看到了使用下划线:
# python example
this_is_my_variable = 'a'
def this_is_my_function():
Run Code Online (Sandbox Code Playgroud)
Python有更优选的,明确的编码风格吗?
在这段代码中,_
after 的含义是什么for
?
if tbh.bag:
n = 0
for _ in tbh.bag.atom_set():
n += 1
Run Code Online (Sandbox Code Playgroud)