该帖已经被评为隐藏帖
|
|
---|---|
作者 | 正文 |
发表时间:2011-01-03
0704681032 写道 超级大牛(忘了是谁了),
Joshua Bloch ? 你好强大! 就是Joshua Bloch ,我当时是在 GR 上看的,没太注意.反查了一下,就是他. 原文链接找不到了,随便找了个,有兴趣看看. Joshua Bloch访谈:API对设计流程的影响 另外,IBM那个讲解Exception的那个我是肯定找不到了,好几年了.总之,try catch 完全不可怕,性能影响非常小,但是一旦命中了,就是一场悲剧了. |
|
返回顶楼 | |
发表时间:2011-01-03
gdpglc同学:
我想问下为什么你为什么要使用这段代码来验证是否整型数据?目的是什么?还有更好的方式吗? public static boolean validateInteger(String str) { try { Integer.parseInt(str); } catch (Exception ex) { return false; } return true; } 1、我想问下为什么不使用commons-lang包里的StringUtils.isNumeric(str)? 2、引用太多Jar包?那就啥都别引用了,都自己写,重复发明轮子。 3、如果你坚持这样写,我觉得没问题,也非常好,异常怎么了,能解决问题的最简单解决方案就是好的,而且你也提取方法封装了,没有问题,但问题是你没利用现有的更好的解决方案。 4、性能问题?我的见解是如果有人认为是性能问题,直接去写C吧。 5、我认为你做事方式不对,重复发明和使用自己的东西?这个虽小,如果你是架构师或管理人员,你写一堆自己的东西,你的团队对新东西学习能力如何,成本是多少,你考虑过吗?所以我认为要从小的地方开始复用成功解决方案,如果该方案不满足再考虑改进方案,最后才应该选择自己实现方案。 |
|
返回顶楼 | |
发表时间:2011-01-03
从楼主的发言来看,他不是一定要纠结异常,他是为了突破常规,挑战权威,鼓励一下精神,顺便说一下,这个帖子,我没投隐藏。。。。。。。。。。呵呵
|
|
返回顶楼 | |
发表时间:2011-01-03
gdpglc:
你写的方法是没有问题的。在项目里面谁都喜欢简洁、稳定的代码,并且只要不是核心算法,速度不是首要考虑的问题。 但是我觉得有两个问题你好像没有明白地说出来: 1、从业务逻辑设计的角度看,什么是异常; 2、该不该巧妙地使用异常。 从业务逻辑设计的角度看,与“异常”相对的就是“正常”,并且它们都有一个上下文语境。就拿文件处理来说,如果是处理用户文件上传,那么任何形式的请求数据,包括读不到文件,超大的文件,都是正常的,因为从测试的角度看,这些都是可能发生的,不受控制的;如果是读一个必须存在的配置文件,比如/etc/passwd,读取不到就是异常,因为这是不允许的。我一直拿这条标准来区别“正常”和“异常”,很管用。 在你的validateInteger(String str)方法里,从上下文语境看,任何传入的字符串都是可能发生的,是”正常“的,因此这里是没有”异常“的。 那么该不该巧妙地使用异常呢?我是个实用主义者,在速度和性能不是最重要的前提下,谁好用我就用谁,谁的代码又短又清晰我就用谁,巧妙地用一下异常我认为是可以的,只是要在注释中说明:”这里不是一个异常,只是取巧借用了一下“。这样就能把问题说清楚了。 |
|
返回顶楼 | |
发表时间:2011-01-03
实在不明白,为什么这么多投隐藏?
我个人认为楼主的代码是没有必要,但是他想说明的问题,并不只是在这个地方。 我相信楼主的帖的愿意,在有些地方是十分有用的。 可是在String这里判断是否为数字显得不太好。 总体来说JavaEye素质太差了,不管从哪里说楼主都在努力。 有争论才会有进步。 瞧不起乱投隐藏的人。 |
|
返回顶楼 | |
发表时间:2011-01-03
相对来说for(....)Character.isDigit(char)
比Integer.parseInt(String)做的事情要少一些,前者只负责移位然后做与操作。而后者要做大量的移位操作,这在时间上会花得比较多。对于如果有异常的话,都是一样的。 |
|
返回顶楼 | |
发表时间:2011-01-03
其实validateInteger的功能和StringUtils.isNumeric是不一样的。这个“整数”是数学上的整数还是Java中的int呢?
|
|
返回顶楼 | |
发表时间:2011-01-03
ArrayList有个isEmpty方法。那我能不能这么实现呢:如果get(0)抛出IndexOutOfBoundsException就说明列表是空的。
|
|
返回顶楼 | |
发表时间:2011-01-03
最后修改:2011-01-03
xibaiben 写道 ArrayList有个isEmpty方法。那我能不能这么实现呢:如果get(0)抛出IndexOutOfBoundsException就说明列表是空的。
不可,我不是让你用异常判断代替常规的逻缉表达。我是说,用异常作判断是可以的,需要用的时候就可以用... 我说的用法,当然有不能用或不该用的场景,你只拿不能的在说事...呵呵。 如果这样,我说java能开发显卡驱动吗? 不能(具我所知)。 然后,我就说java不能用来做软件开发... 这个和你的想法是一个思维。 你脑子里,也许很多软件规则都是一条包打天下的。 我的不是,我个人觉得,软件世界,纷繁芜杂,用简单的规则处理复杂的现实,就是在瞎搞... |
|
返回顶楼 | |
发表时间:2011-01-03
最后修改:2011-01-03
投你8个精华, 崩溃了, 又要被隐藏了。
精神可佳。 还是应该大度些。 |
|
返回顶楼 | |