使用Java @Override注释的最佳实践是什么?为什么?
使用@Override注释标记每个重写方法似乎有点过分.是否有某些编程情况需要使用@Override和其他不应该使用的@Override?
我有一些Java代码,其中SQL语句编写为Java字符串(请不要使用OR/M flamewars,嵌入式SQL就是这样 - 不是我的决定).
为了便于维护,我在几行代码中将SQL语句在语义上分解为几个连接的字符串.所以,而不是像:
String query = "SELECT FOO, BAR, BAZ FROM ABC WHERE BAR > 4";
Run Code Online (Sandbox Code Playgroud)
我有类似的东西:
String query =
"SELECT FOO, BAR, BAZ" +
" FROM ABC " +
" WHERE BAR > 4 ";
Run Code Online (Sandbox Code Playgroud)
这种风格使SQL更易于阅读和维护(恕我直言),特别是对于较大的查询.例如,我可以将我的编辑器置于"覆盖"模式,并相当容易地就地修改文本.
请注意,此问题超出了SQL的特定示例.任何使用任何垂直格式编写的代码,特别是表格结构,都容易被漂亮的打印机破坏.
现在,一些项目成员使用Eclipse编辑器,语义格式在格式化整个源文件时经常被破坏.
有没有办法指示Eclipse在格式化方面忽略某些源代码行?
我正在寻找像切换Eclipse格式化程序的特殊注释.理想情况下,这样的评论可以配置为我们选择的任何内容,其他格式化程序也可以编程为尊重它:
// STOP-ECLIPSE-FORMATTING
String query =
"SELECT FOO, BAR, BAZ" +
" FROM ABC " +
" WHERE BAR > 4 ";
// START-ECLIPSE-FORMATTING
Run Code Online (Sandbox Code Playgroud)
显然,一个"解决方案"是让我们的团队成员对Jalopy或JIndent这样的外部格式化程序进行标准化,但这不是这个问题的原因(也不是我对这个项目的决定):我正在寻找一种方法在临时的基础上避免使用Eclipse格式化程序.
理想情况下,解决方案将允许我插入Eclipse格式化程序的指令,而无需团队成员使用Eclipse进行任何IDE重新配置(除了可能选择格式化程序无关的命令注释:STOP-ECLIPSE-FORMATTING→ STOP-FORMATTING).
我想像Eclipse中那样有选择地禁用IntelliJ IDEA代码格式化程序以获取部分代码.IntelliJ是否支持此功能,如果支持,我该如何使用它?
我需要一种在运行时确定计算机MAC地址的跨平台方法.对于Windows,可以使用'wmi'模块,我可以找到Linux下唯一的方法是运行ifconfig并在其输出中运行正则表达式.我不喜欢使用只能在一个操作系统上运行的软件包,而解析另一个程序的输出似乎并不优雅,更不用说容易出错了.
有谁知道跨平台方法(windows和linux)方法来获取MAC地址?如果没有,有没有人知道比我上面列出的更优雅的方法?
XML文档是否有任何标准,事实上或其他标准?例如哪个是编写标签的"最佳"方式?
<MyTag />
<myTag />
<mytag />
<my-tag />
<my_tag />
Run Code Online (Sandbox Code Playgroud)
同样,如果我有一个更好的属性的枚举值
<myTag attribute="value one"/>
<myTag attribute="ValueOne"/>
<myTag attribute="value-one"/>
Run Code Online (Sandbox Code Playgroud) 我经常在XML和HTML标记的结尾斜杠之前看到一个空格.XHTML换行符可能是规范的例子:
<br />
Run Code Online (Sandbox Code Playgroud)
代替:
<br/>
Run Code Online (Sandbox Code Playgroud)
这个空间似乎是多余的.事实上,我认为这是多余的.
写这个空间的原因是什么?
我已经读到这个空间解决了一些"向后兼容性问题".哪些向后兼容性问题?这些问题是否仍然相关,或者我们是否仍然为IE3兼容性添加额外的空间?是否存在一些关于此的确定答案的规范?
如果不是向后兼容性,那么它是否是可读性问题?类似于Great Open Curly Brace辩论?
void it_goes_up_here() {
int no_you_fool_it_goes_down_there()
{
Run Code Online (Sandbox Code Playgroud)
我当然可以尊重不同的风格意见,所以我很高兴得知,写作空间只是一种品味问题.
我最近在接受采访时提到了这个问题.
我回答说如果交错出错就会发生死锁,但是访问者坚持认为可以编写一个总是会陷入死锁的程序而不管交错.
我们可以写这样的程序吗?你能指点我这样的示例程序吗?
在JPA中有一种方法可以在Entity类中映射枚举的集合吗?或者唯一的解决方案是使用另一个域类包装Enum并使用它来映射集合?
@Entity
public class Person {
public enum InterestsEnum {Books, Sport, etc... }
//@???
Collection<InterestsEnum> interests;
}
Run Code Online (Sandbox Code Playgroud)
我正在使用Hibernate JPA实现,但当然更喜欢实现不可知的解决方案.
我有兴趣了解Java的高质量,独立源代码格式化程序的可用选择.
该格式必须独立的,也就是说,它必须支持"批量"模式是从任何特定的开发环境脱钩.理想情况下,它也应该独立于任何特定的操作系统.因此,IDE du jour的内置格式化程序在这里没什么意义(除非该IDE支持批处理模式格式化程序调用,可能来自命令行).用封闭源C/C++编写的格式化程序只能在Windows上运行,这并不理想,但有点有趣.
需要说明的是,"格式化程序"(或"美化")与"样式检查程序"不同.格式化程序接受源代码作为输入,应用样式规则,并生成在语义上等效于原始源代码的样式化源代码.语法修改仅限于修改代码布局,如更改空格或组织import语句.如果有的话,很少进行其他重构.样式检查器还应用样式规则,但它只报告规则违规,而不会将修改后的源代码作为输出.所以图片看起来像这样:
Formatter(生成符合样式规则的修改后的源代码)
阅读源代码→应用样式规则→编写样式源代码
样式检查器(不生成修改后的源代码)
阅读源代码→应用样式规则→写入规则违规
进一步澄清
解决方案必须高度可配置.我希望能够指定自己的风格,而不是简单地从预设列表中选择.
另外,我不是在寻找一种用Java编写的通用漂亮打印机,它可以打印很多东西.我想设计Java代码的样式.
我也不一定对许多语言的统一格式化程序感兴趣.我认为对于支持除Java以外的语言的解决方案可能会很好,但这不是必需的.
此外,只有执行的代码高亮工具是正确的 了.
我对网络服务也不感兴趣.我想要一个可以在本地运行的工具.
最后,解决方案不必限于开源,公共领域,共享软件,自由软件,商业或其他任何东西.所有形式的许可均可接受.
我对编译器,口译员和语言感兴趣.
你知道的最有趣但却被遗忘或未知的语言是什么?更重要的是,为什么?
我对编译,解释和VM语言感兴趣,但不是像Whitespace或BF这样的深奥语言.
当然,开源是一个优势,因为我打算学习并希望从中学习.
java ×5
coding-style ×3
xml ×2
annotations ×1
concurrency ×1
deadlock ×1
eclipse ×1
html ×1
java-ee ×1
jpa ×1
linux ×1
networking ×1
pretty-print ×1
python ×1
windows ×1
xhtml ×1