热点讨论:Java编程风格的改变
最近Stephan Schmidt在博客中发表了题为《下一代Java编程风格》的文章,阐述了他眼中Java编程风格的改变,以及未来的走向:许多公司和开发人员正在从Java转向其他编程语言:Ruby、Python、Groovy、Erlang或Scala等等。不过你可能做不到这一 点。即便如此,你也可以改变你的编程风格,获取这些新语言的优势。事实上,在过去的15年中,Java编程风格也已经有明显变化了。
Stephan在文章中提出了以下几点:
尽可能地标注final:让所有东西不可变,把变量标为final可以阻止改变它的值。很多时候,重新为变量赋值会引入bug,你应该使用新的变量。除此之外,final可以提高代码的可读性。我针对这个话题还写过一篇文章:《Java中所有变量都应该是final的》
没有setter:许多Java程序员会自然而然地为类中所有的字段加上setter。思考一下,真的每个字段都需要修改吗?更好的方法是创建包含改变后状态的新对象。此外,也试着去除getter,我们应该遵循“Tell, don’t ask”的思想。
避免使用循环来操作List:从函数式编程那里获得的经验,循环并不是进行集合操作最好方法。例如,我们可以使用Google Collections提供的过滤功能。
Predicate canDrinkBeer = new Predicate() {
public boolean apply(HasAge hasAge) {
return hasAge.isOlderThan( 16 );
}
};
List<Person> beerDrinkers = filter(persons, canDrinkBeer);
使用单行代码:Java是一门繁杂(noisy)的语言,我们应该编写更精确的代码。尝试将代码写为一行。例如:
public int add(int a, int b) { return a + b; }
使用大量接口:领域驱动设计已经大行其道,一个应该拆分为多种“角色”,即实现多种接口,提高复用程度。方法应该面向“角色”,而不是面向特定的类。我在《不要在Java中使用String》一文中讨论了更多这方面的内容。
使用Erlang风格的并发:Java的并发特性(如lock和synchronized)过于低端,难以使用。Erlang风格的并发是一种更好的做法。Java平台上已经有了Akka和Actorom。此外,也可以使用java.util.concurrent中的Join/Fork和数据结构进行编程。
使用Fluent Interface:Fluent Interface可以使代码更短,更容易编写。Google Collections中的MapMaker是个不错的示例:
ConcurrentMap graphs = new MapMaker()
.concurrencyLevel(32)
.softKeys()
.weakValues()
.expiration(3
相关文档:
create PROCEDURE pagelist
@tablename nvarchar(50),
@fieldname nvarchar(50)='*',
@pagesize int output,--每页显示记录条数
@currentpage int output,--第几页
@orderid nvarchar(50),--主键排序
@sort int,--排序方式,1表示升序,0表示降序排列
......
Java获取IP地址:request.getRemoteAddr()警惕
关键字: request ip
在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr()
,这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了。
如果使用了反向代理软件,将http://192.1 ......
我个人理解初始化和清理的关系就是吃饭和上厕所,正是有了初始化的对象,我们才能使用清理。但是为什么要清理呢?想象一下一个人光吃不拉,是个什么情况?:)难道我们的程序也要像吃饭一样光产生对象,而不去清理使用完毕的对象?任由我们的对象堆积如山,占用系统资源?
以构造函数确保初始化的进行
&nb ......
本文为您列举了Java众多特性中排名的前十个特性,不知道您是否有同样的感觉。
10) const,goto
什么?没错,它们都是Java的关键字,但它们什么也不干。
9) Java的些许趣味
像Personal Java,JavaOS.
8) 索引化的Jar
索引化的Jar是指这样的Jar文件中包含有一个特殊的索引文件(META-INF/INDEX.LIST),该文件用于指 ......
作为Java程序员来说,最痛苦的事情莫过于可以选择的范围太广,可以读的书太多,往往容易无所适从。我想就我自己读过的技术书籍中挑选出来一些,按照学习的先后顺序,推荐给大家,特别是那些想不断提高自己技术水平的Java程序员们。
一、Java编程入门类
对于没有Java编程经验的程序员要入门,随便读什么入门书籍都一样,这 ......