程序员应该“精通”一门语言

ZangXT 2011-04-24 09:10:48
加精
程序语言是我们吃饭的重要工具之一,所谓思想、技能基本少不了这个载体。
不要被别人忽悠“语言只是工具”,除非你干了一二十年,真的看穿本质了。你精通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在不同情况下的优化,仅仅两个循环计算下时间能说明什么问题啊。

...全文
7628 379 打赏 收藏 转发到动态 举报
写回复
用AI写文章
379 条回复
切换为时间正序
请发表友善的回复…
发表回复
云渊阁 2013-12-03
  • 打赏
  • 举报
回复
支持一下
  • 打赏
  • 举报
回复
csy1zyc 2013-11-29
  • 打赏
  • 举报
回复
学习了
deigo_wei 2013-11-22
  • 打赏
  • 举报
回复
那么只有部分编译器会优化吧?
liuzhijun1989 2012-09-07
  • 打赏
  • 举报
回复
这个帖子没什么太多意义……
qiuyu888 2011-06-28
  • 打赏
  • 举报
回复
从头到尾看了一遍,有些个人体会 框架很主要、基础才是根本、 这是我近一个月的 深刻体验
lulangli 2011-05-22
  • 打赏
  • 举报
回复
顶一个~~~~~~~~~~~~
nehc 2011-05-09
  • 打赏
  • 举报
回复
有木有,有木有,木有!!!
dengyulong521 2011-05-09
  • 打赏
  • 举报
回复
学习!!!!!!
SWQQ- 2011-05-09
  • 打赏
  • 举报
回复
学习了~~~~~~~~
needle2 2011-05-09
  • 打赏
  • 举报
回复
支持楼主,楼主厉害
chenchenyangll 2011-05-08
  • 打赏
  • 举报
回复
[Quote=引用 362 楼 zangxt 的回复:]

引用 360 楼 chenchenyangll 的回复:

关于最后3种for循环,大牛们有定论没?究竟哪一种是最好的写法?

个人不赞成349楼的部分说法。for循环这种代码会经常出现,如果有一种已知的最好的写法,就应该采用,难道程序员不应该这样吗?(这只是顺手的事情,根本不耽误时间,我看这3种写法都蛮简洁,不会因为代码难读而不易维护等问题发生)

一般for(int i = 0;……
[/Quote]

也就是说 并不存在每次循环都需要重新计算一次length的性能问题?
zhangqbqq 2011-05-08
  • 打赏
  • 举报
回复
~~~说得好啊~~~
neverJava 2011-05-08
  • 打赏
  • 举报
回复
for(int i = 0,length = array.length; i < length; i++)已经很好了。


int length = array.length;
for(int i = 0, i < length; i++)
这个不是更好一点
wangtingzhe 2011-05-08
  • 打赏
  • 举报
回复
嗯,楼主说的很好了,不过本人要补充一下楼主的话语喔,意思就是精通一门语言除了要精通此门语言的语法与渊源,我想最重要的还是通过这门语言的精通来达到一种算法结构的精通吧,语法和算法结构的精通是息息相关无法缺一不可的喔,这样才能算是真正灵活的精通,哈哈本人是补充一下楼主的话语,因为这是很浅显的道理,楼主可能忘说了喔!
luoheng0607 2011-05-08
  • 打赏
  • 举报
回复
支持。。。- -!
gy282879759 2011-05-08
  • 打赏
  • 举报
回复




yy每天回帖即可获得10分可用分!
glow8happy 2011-05-08
  • 打赏
  • 举报
回复
学习了~~
lingdulebaishi 2011-05-08
  • 打赏
  • 举报
回复
值得学习,顶顶
rock_tapestry 2011-05-08
  • 打赏
  • 举报
回复
好习惯要多学习
加载更多回复(359)

23,405

社区成员

发帖
与我相关
我的任务
社区描述
Java 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧