对于\ Windows \中的文件类型是否存在标准约定,而不是\ Windows\System32中的文件类型?
我正在开发一个SDK,它有各种DLL,一个helper exe和一个Windows服务exe.以前在代码上工作的人把两个exe文件放在\ Windows \和DLLs\Windows\System32 \但在我看来他们应该全部进入\ Windows\System32 \
你会做什么?
编辑: 我不是在试图讨论他们是否应该去那里的优点.大量的应用程序安装到System32 ...特别是服务或驱动程序(我正在处理).当然,我并不是说它是对的...正如我所说,我最初没有创造这个...为了这个问题.如果这些是你唯一的选择......那会是什么?
编辑:好的,点了.我真的不认为我能够说服这个项目的"架构师"将它们从这两个目录中的任何一个中移出......但是在这一点上我会更加努力.同意......不应该把任何东西放在那些文件夹中.
是否存在函数参数中的(高度,宽度)顺序或显示尺寸时的约定?
以下用于"this"的用法是指当前类中的实例变量可以接受吗?在PHP中,这是你必须要做的,但我注意到在Java中你可以直接通过名称调用变量.
我个人认为"this.variable"更容易理解,但如果不正常,我不想养成糟糕的编码习惯.
谢谢!
public class MyClass {
/**
* Private variable
*/
private int myInt;
/**
* Setter method
*/
public void setMyInt(int value) {
this.myInt = value;
}
}
Run Code Online (Sandbox Code Playgroud) (代码约定doc:http://www.oracle.com/technetwork/java/codeconventions-142311.html#449)
我总是把if-else语句写成:
if(condition) {
statements;
} else {
statements;
}
Run Code Online (Sandbox Code Playgroud)
但是,在Java代码约定文档中,它表示如下所示:
if (
condition) {
statements;
} else {
statements;
}
Run Code Online (Sandbox Code Playgroud)
而且,我总是写这样的陈述:
for(initialization;condition;update) {
statements;
}
Run Code Online (Sandbox Code Playgroud)
但编码惯例说:
for (
initialization;
condition;
update) {
statements;
}
Run Code Online (Sandbox Code Playgroud)
压痕和间距对我来说似乎不必要的麻烦.哪个是正确/更好的方式,为什么?
int foo = bar > baz ? bar : baz;
int foo = someBoolean ? bar : baz;
int foo = (bar > baz) ? bar : baz;
int foo = (someBoolean) ? bar : baz;
int foo = (bar > baz) ? bar : baz;
int foo = someBoolean ? bar : baz;
我无法决定应使用这三个中的哪一个。我可以:
在示例中,请不要使用括号并冒着可读性差的危险,例如:
min[0] = min[0] > pos.x ? pos.x : 0;
始终使用括号,但冒着简短表达式中有些难看的代码的风险:
setValue(val + scrollBar.getBlockIncrement() * ((scrollsUp) ? -1 : 1));
当条件中有空格时,请放在两者之间,并使用括号;但如果条件只是布尔变量,则不要使用括号:
min[0] = (min[0] > …
java coding-style conventions ternary-operator conditional-operator
我的Java有点生疏(过去几年一直在做C#).我也希望这不是一个非常主观的问题.
无论如何说我上课了Person(是的,有点陈词滥调,我知道),没有行为(C#版本):
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
// say 10+ properties
}
Run Code Online (Sandbox Code Playgroud)
等效的Java版本将如何?我知道我可以写一堆getter和setter(但是我说有10多个属性),感觉就像很多样板.这样做是不好的做法:
public class Person {
public String name;
public int age;
// rest of the stuff here
}
Run Code Online (Sandbox Code Playgroud)
我对此感到有点不安.我意识到没有"正确答案"但是,我对一般惯例和最佳实践更感兴趣.
有没有一种方法(工具或其他东西)允许在从基类继承/重写方法时不重复相同的XML注释?
例如.:
/// <summary>
/// Represent a brand new object in .NET
/// </summary>
public class MyObject : Object
{
/// <summary>
/// Copy-Paste the same Xml comment
/// like in the base class is boring!
/// </summary>
/// <param name="obj">and params too!! ((</param>
/// <returns>this one too!!! (((</returns>
public override bool Equals(object obj)
{
return base.Equals(obj);
}
}
Run Code Online (Sandbox Code Playgroud) 我最近开始使用Python/Django,我听说过PEP 8惯例.在阅读了PEP8之后,我对如何"设计"我的代码有了更好的理解,但我学会了用Java编程,而我过去常常做任何我喜欢的事情.你能建议如何将我的例子放入PEP-8吗?非常感激.
result = urllib.urlretrieve(
"https://secure.gravatar.com/avatar.php?"+
urllib.urlencode({
'gravatar_id': hashlib.md5(email).hexdigest(),
'size': srt(size)
})
)
Run Code Online (Sandbox Code Playgroud) 我正在维护一些遗留的Java代码,并且我在相同的代码块中不断遇到奇怪的驼峰案例和蛇案例.有些名字完全是骆驼案,其他名字完全是蛇案,有些则是奇怪的混合物(例如displayText_label_maxDiff或者hasProperty_).我意识到这些名称不是可接受的Java编码风格,也不应该是.我只是想在谈话中使用一个有意义的术语.
是否已经有一个被接受的名字?如果没有,你会提出什么建议?我在考虑"鹅卵石案","道路案例"或"奇怪案例".
我使用Visual Studio已有很长时间了,但是维护变得太复杂了。现在,我尝试转向VS Code,但是它抛出了许多PyLint错误消息,这些消息对我来说没有意义(并且程序仍然可以按预期运行)。这些错误主要发生在从GoogleProtoBuf结构生成的Python代码中。
例如:
from lbsnstructure.lbsnstructure_pb2 import lbsnPost
def geoaccuracy_within_threshold(post_geoaccuracy, min_geoaccuracy):
"""Checks if geoaccuracy is within or below threshhold defined"""
if min_geoaccuracy == lbsnPost.LATLNG:
allowed_geoaccuracies = [lbsnPost.LATLNG]
elif min_geoaccuracy == lbsnPost.PLACE:
allowed_geoaccuracies = [lbsnPost.LATLNG, lbsnPost.PLACE]
elif min_geoaccuracy == lbsnPost.CITY:
allowed_geoaccuracies = [lbsnPost.LATLNG, lbsnPost.PLACE, lbsnPost.CITY]
else:
return True
# check post geoaccuracy
if post_geoaccuracy in allowed_geoaccuracies:
return True
else:
return False
Run Code Online (Sandbox Code Playgroud)
从pyLint引发错误消息E0602:
未定义变量'lbsnPost'pylint(E0602)
lbsnPost:GeneratedProtocolMessageType
但是,Google 明确声明这种形式的类型引用是正确的:
元类将枚举扩展为具有整数值的一组符号常量。因此,例如,常数addressbook_pb2.Person.WORK的值为2。
我在我的代码中都遇到了类似的错误(可以正常工作)。我怀疑这是我用错误的约定编写的内容,但是仍然可以使用。但是正确的约定是什么?
该页面似乎在讨论相同的问题,但是没有一种解决方案有效:
在PyDev
中使用协议缓冲区时,即使从导入中导入未定义的变量,即使这样做lbsnpost().LATLNG(实例化protobuf消息),我也会得到相同的未定义的变量错误。
conventions ×10
java ×5
coding-style ×2
.net ×1
bitmap ×1
c# ×1
dimensions ×1
directory ×1
for-loop ×1
if-statement ×1
naming ×1
pep8 ×1
pylint ×1
python ×1
system32 ×1
windows ×1
xml-comments ×1