郁闷啊,不要让写C++出身的人来直接写java!写java极其容易搞垮你的程序!

Preamble 2005-07-13 09:19:36
我该发发牢骚了! 整个项目组中就只有我一人是系统学习过java的,其他都是写C++的,而且没有系统学习过java,就来写java程序。写几个他们范的搞笑错误!(不过,可以估计,他们其实C++也不行,因为C++比java难得多)

俺是java的菜鸟一只,就只会java.util.*,java.lang.*下的东西.
1。基本功的问题。
String strName = XXX();
if(strName.equals("Film"))
{
;;;;
}

稍微有点常识的人就知道 这个可能会有异常NullPointerException 改为("Film".equals(strName))

经常使用Vector,不明白,他们如此钟爱这个.
还有就是使用LinkedList,Stack ,唉.
使用LinkedList 他还老是使用 get();难得就不知道这个get是每次都要从头检索吗?晕呵。数据结构是怎么学的?
还有,同一类型数据,不喜欢用数组,而是List,难得也不知道List中的强制转换比Array要慢吗?(这个不知道在1.5种是否解决)

引用理解有错误。
居然还有人写这样的方法
void XXX(Object o)
{
o = new **();
}
不知道这个是干什么。认为 调用 a=null; XXX(a); 那么a就已经是事例了。


命名规范的问题。

本来这个不是什么问题。可是你见了就觉得不爽!
常有m_strName;的写法.以m_开头的一大片。还有以sz开头的也是
让我读代码,匪夷所思。


异常处理的问题

老实说,我也不会处理什么异常。这个说起来确实很麻烦。
可是看到他们除了java强制的catch外,就不会写其他的了,我想要不java有这个强制Catch,他们是一个都不会写异常的。而且catch块中简单的 ex.printStackTrace();

唉,再这样下去,我也在耳濡目染下,“同流合污”。




还有许多这些错误,我是否有必要写一篇blog然后把这些都罗列进去?比如特喜欢继承。居然听到一个人说
“ArrayList 怎么都不好继承,熟悉都是私有的”


...全文
1280 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
fixopen 2005-07-22
  • 打赏
  • 举报
回复
>String strName = XXX();
>if(strName.equals("Film"))
>{
>;;;;
>}
>
>稍微有点常识的人就知道 这个可能会有异常NullPointerException 改为("Film".equals(strName))

首先,得承认这是经验问题,不是稍微有点常识的人都知道的。“Film”作为字面常量,拥有方法对于C++程序员来说不可思议。显然,上面的那个写法也可以,只要考虑了异常处理。

>经常使用Vector,不明白,他们如此钟爱这个.
>还有就是使用LinkedList,Stack ,唉.
>使用LinkedList 他还老是使用 get();难得就不知道这个get是每次都要从头检索吗?晕呵。数据结构是怎么学的?
>还有,同一类型数据,不喜欢用数组,而是List,难得也不知道List中的强制转换比Array要慢吗?(这个不知道在1.5种是否解决)

使用什么不是问题,使用的不是地方才是问题。Vector作为Java中最长被使用的容器,使用也是很正常的。不过却是需要注意性能问题。Vector是多线程安全的。所以性能并不像C++的vector那么高。至于List和Array的问题,我觉得还得看场合,如果需要动态的增减成员,Array就不行了吧。

>引用理解有错误。
>居然还有人写这样的方法
>void XXX(Object o)
>{
>o = new **();
>}
>不知道这个是干什么。认为 调用 a=null; XXX(a); 那么a就已经是事例了。

这个?!这个一直以来我以为是初级Javaer才会犯的错误,Cpper怎么能犯这种错误。看来对于传值这个基本概念还是没有搞清楚啊。

>命名规范的问题。

这个就没有办法评价了.

>异常处理的问题
>老实说,我也不会处理什么异常。这个说起来确实很麻烦。
>可是看到他们除了java强制的catch外,就不会写其他的了,我想要不java有这个强制Catch,他们是一个都不会写异常的。而且catch块中简单的 ex.printStackTrace();

老实说,C++的异常处理确实跟Java不同.楼上有人说异常处理严重影响性能,这是对Java的不公平,Java里面异常处理是非常快的.不过,总体来说,不见得有几个程序员写程序愿意处理异常.呵呵.

>比如特喜欢继承。居然听到一个人说“ArrayList 怎么都不好继承,熟悉都是私有的”

呵呵,我还是蛮高兴的,听到有人要继承ArrayList.这是面向对象的基本思路啊.能想到通过继承解决问题的程序员我都是比较佩服的,不过,我一般不用继承,也不推荐别人用.继承关系是强耦合关系,不易扩充.

PS:ArrayList基本上就是一个没有同步开销的Vector.性能还是不错的.
Preamble 2005-07-21
  • 打赏
  • 举报
回复
大家说得都很对。
因为这句话反过来,也正确。

一直写java的人,没有好好学习C++,写出的代码也是糟糕的,内存越界异常,未释放指针,内存泄漏,我承认,我犯这样的错误。
humanity 2005-07-19
  • 打赏
  • 举报
回复
我想 OO 是相通的, 思维定势影响 , 需要 Bruce Eckel 这样的传教士 。
C 没有异常处理也有 setJump 和 longJmp ,
没有析构也有 atexit, 没有模板也有函数指针,总有一些手段达成的目标。

代码写得熟练的人 这些问题是肯定曾经想得很清楚地,不存在换了语言就一头雾水的。

很多东西因为安全而丧失性能这也是肯定的, 需要 Profiler 工具来定量分析看划算与否 。
GaryZhu 2005-07-19
  • 打赏
  • 举报
回复
都是些什么玩意。。。-_-
xxlcg 2005-07-19
  • 打赏
  • 举报
回复
c++和java都做过,感觉这些人是没学好c++
cao_zp 2005-07-19
  • 打赏
  • 举报
回复
这些人肯定没学好c++
flyingghost 2005-07-19
  • 打赏
  • 举报
回复
看个人对OO的理解程度和编程的思维习惯了。
我在学校也是学C++的,工作后看Thinking In Java一个月,熟悉了Java的思维方式,再写起来就越来越顺了。因为基本上它们都是面向对象的。只要你能马上理解并适应新的环境。
你说的那些,基本上都是那种脑袋不够灵活,不会变通,自己也没看过书的。
倒是不必扯到C++和Java这么大来。。。
boyu_song 2005-07-18
  • 打赏
  • 举报
回复
乱乱的
Semigod 2005-07-18
  • 打赏
  • 举报
回复
什么是OO,不要以为写几个class或是interface就知道什么是OO了。
zyk460 2005-07-18
  • 打赏
  • 举报
回复
.
不徻写代码 2005-07-18
  • 打赏
  • 举报
回复
void XXX(Object o)
{
o = new **();
}
嘿嘿,想传过来一个指针......
估计他们习惯C++了..........
---------------------------------------
String strName = XXX();
if(strName.equals("Film"))
{
;;;;
}
---------------------------------------
这个就说不过去了.......
用什么写也得判空异常啊
tjl713 2005-07-18
  • 打赏
  • 举报
回复
同意!
如果是没有系统看JAVA的,他们根本不理会框架的作用,不使用值对象之类的。
OnlyFor_love 2005-07-18
  • 打赏
  • 举报
回复
也是,不系统学习的话,确实不好上手,每种语言都用其自身的特点和规范。
asd_ 2005-07-14
  • 打赏
  • 举报
回复
搞linux都是c,用c++的并不多。
vc的oo水平也是泛泛
longpc 2005-07-13
  • 打赏
  • 举报
回复
多找找自己的问题,作为项目经理,你有给项目开发规范,编码规范吗?
的确现在的程序员水平,素质,有比较大的差距。但一个好的公司,一个好的项目组,应该有较好的规章制度去约束每个人。而不是靠自觉,靠水平自由发挥。相信一大堆高手在一起,没有一个好的规范和制度的话,照样散沙一盘。
ThinkX 2005-07-13
  • 打赏
  • 举报
回复
别以为学了java就怎么怎么样了,你要是用C++的话肯定更差。

公平的说,C++无遗是主流开发语言中最复杂的,在其中可以看到很多的思考方式,所以学习C++对学习其他语言是有很大好处的。

语言没有高低贵贱之分,有的只是人的素质之分,所以说别人差时别带上C++,这和C++没有什么关系。

interhanchi 2005-07-13
  • 打赏
  • 举报
回复
看一下bruce eckel就知道c++强人,也可以变成java强人,
asd_ 2005-07-13
  • 打赏
  • 举报
回复
这几个家伙明显的基础不过关,和java c++本身没有关系。
到任何一个严格点的项目经理手下都是开掉不误。
bravo_java 2005-07-13
  • 打赏
  • 举报
回复
新手上路总是要有人拉一把的,我是新手,我爱编程,但我不是计算机科班,我是学中文的,理论差的一塌糊涂,一些深层的设计到软件效率和质量的问题在写代码时根本想不到,不知道什么时候能行.
vssivl 2005-07-13
  • 打赏
  • 举报
回复
我也来说两句。
1.成员变量必加m_,我是加m
2.
XXX xx = null;
for( int i=0; i<length; i++ )
{
xx = new XXX();
...
}
据说这样可以共享同一个变量的内存。。。

3.最让我发疯的是,点击MenuItem时主界面就变换成子模块的界面,我主张用CardLayout,同事非要每次点击时,new 一个子模块的界面Panel,还一口咬定vc,vb都是这么做的。。。

就为这个,经常呕气,郁闷。。。
加载更多回复(12)

23,404

社区成员

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

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