日期:2014-05-20  浏览次数:20749 次

程序员应该“精通”一门语言
程序语言是我们吃饭的重要工具之一,所谓思想、技能基本少不了这个载体。
不要被别人忽悠“语言只是工具”,除非你干了一二十年,真的看穿本质了。你精通java,学个erlang用不了一周,几个小时知其大概,这个我感觉并不现实,当然,大牛的例子总能找到,就像总有人那一个比尔盖茨来说明上大学没用一样。

每个语言都有一些自己的习惯用法,这个跟语言的文化有关,所以不能把一个语言里的惯用法拿到其他语言里去,因为这个未必成立。c/c++程序员基本都熟悉NULL != pObject之类的用法,也知道这个用法背后的典故(不知道可以参考《c专家编程》),不过由于编译器的改进,这种用法越来越没有必要,你写错了编译器会警告,翻一下sun hotspot jvm的c++代码,其实用的是pObject != NULL 这种用法。c/c++里尚且没有统一规定的惯用法,为啥要拿到java里说事?不熟悉语言,无视语言的精妙之处,很容易写出恶心的代码。典型的:
1.
if(null != object){ } 
这个会比if(object != null)直观?你会写错,写错了编译器能通过?
2.if(flag == true){} 
if(flag){}怎么了? 有人说为了别人方便看懂? 看到if(flag)还不知道这是个boolean值,这是java程序员?
3.
boolean compare(int a ,int b)
{
if(a < b){
    return true;
}
else{
   return false;
}
}
想打人,有木有!有木有!
return a < b; 不行啊!

可见,要用java的话,真正学一下还是与好处的。

有时间的话,建议读一下java类库的代码,其实类库就提供了一种非常好的编码规范、惯用法等等。

很多人争论for(int i = 0;i < array.length; i++) 和for(int i = array.length; i > 0; i--)谁快的时候,殊不知类库里的
for(int i = 0,length = array.length; i < length; i++)已经很好了。
当你那两个循环的例子来说明谁快的时候是否考虑了vm在不同情况下的优化,仅仅两个循环计算下时间能说明什么问题啊。


------解决方案--------------------
哈哈          我的沙发            
 
恩    支持楼主的观点
------解决方案--------------------
受教了
------解决方案--------------------
支持楼主观点、
------解决方案--------------------
支持下.........
------解决方案--------------------
顶一下!
------解决方案--------------------
哈哈、、好好 楼主辛苦!
------解决方案--------------------
没错,这就是 隔了一层jvm,一切都有可能
------解决方案--------------------
此贴必火,火速留名
------解决方案--------------------
受教了,谢谢楼主,辛苦了!
------解决方案--------------------
看看...
------解决方案--------------------
进来学习;。
------解决方案--------------------
那是一定的;
------解决方案--------------------
速来学习了
------解决方案--------------------
果断留名
------解决方案--------------------
哈哈,确实,每门语言还是有很多不同的~~
------解决方案--------------------
for(int i = 0,length = array.length; i < length; i++)已经很好了。

数组的话这样写没有必要,如果是集合的话最好这样写,呵呵。
------解决方案--------------------
XT发飙了,
------解决方案--------------------
LZ说得很有道理,的确每种语言都有自己的特色,用一周时间来学精通一门语言是很困难的。
学习还得一步步的走,步子跨大了容易扯着淡。
------解决方案--------------------
引用:
我喜欢 JDK IO 类库中这样写法的代码,呵呵,将局部变量的作用域减至最少了:


Java code
for(String str = null; (str = br.readLine()) != null; ) {
    xxxx
}

这个写法很好!从JDK源码里可以学到很多!!
------解决方案--------------------
null != object  object != null 
------解决方案--------------------
学无止境~
------解决方案--------------------
引用:
for(int i = 0,length = array.length; i < length; i++)已经很好了。

数组的话这样写没有必要,如果是集合的话最好这样写,呵呵。

这个已经不记得跟多少同事说过,可到现在...依然悲剧。
------解决方案--------------------
支持下.........
------解决方案--------------------
楼主在散分
------解决方案--------------------
return a < b; 不行啊!
------解决方案--------------------
return a<b;   有木有;有木有
------解决方案--------------------
JAVA类库代码是一定要看的,而且要常看。但是我认为Java语言只是工具,学JAVA的不仅要会写JAVA代码,还要懂得基本原理吧。这时候学习C语言就被提上日程了,当然C语言只是作为辅助,能理解就好。LZ说的那几个用法也没有涉及到JAVA核心的部分,比如像网络编程和NIO等其他高级特性。像LZ这样讲个人感觉有些空泛。
------解决方案--------------------

------解决方案--------------------
很好啊。。。。。
------解决方案--------------------
顶楼主!
------解决方案--------------------
有道理
------解决方案--------------------
楼主很给力
------解决方案--------------------
强烈支持
------解决方案--------------------
任何行业,谈精通其实也不是很容易的,需要一定的时间和精力去积累学习,
精通固然好,成为一个精通的行家也不容易,程序员也不例外的,

------解决方案--------------------
过来帮顶。。楼主说的确实在理。
------解决方案--------------------
牛X的人是怎么练成的呢?那就得耐得住寂寞。
------解决方案--------------------