首页 / JAVA / Java Leaky抽象检查器
Java Leaky抽象检查器
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java Leaky抽象检查器,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1666字,纯文字阅读大概需要3分钟。
内容图文
![Java Leaky抽象检查器](/upload/InfoBanner/zyjiaocheng/790/91020ae9885b464e886958028c16fec3.jpg)
我正在考虑编写一个程序来检查
Java中的“漏洞抽象”.立即突然出现的一个领域是例外情况:
public class X
{
// this one is fine, Readers throw IOExceptions so it is
// reasonable for the caller to handle it
public void parse(final Reader r)
throws IOException
{
}
// This one is bad. Nothing in the API indicate that JDBC
// is being used at all.
public void process()
throws SQLException
{
}
}
注意,我不想要对已检查/未检查的异常的相对优点进行论证.我正在寻找的其他例子(不一定是异常处理)人们也可以通过检查源代码或类文件来合理地捕获它们.
我知道checkstyle,findbugs和PMD,而AFAIK都没有处理这个问题(我不反对将支票放入其中一个工具而不是自己编写).
您是否有任何其他泄漏抽象的例子可以静态检查?
编辑:
第二个错误的原因是该方法抛出异常,其中客户端无法知道正在使用JDBC(例如,它可能是任何东西).所以“漏洞抽象”是正在使用JDBC.如果底层机制改为soemthing(比如说JPA是一个不同的数据库抽象库)那么异常也都需要改变.因此,底层数据库库被泄露出去.
解决方法:
所以.
如何检测API是否泄漏实现细节或不保持相同的抽象级别.
您可能会观看this talk.它解释了API的外观和设计(您可以从良好实践中减去哪些不良做法)
例如
Functionality should be easy to explain.
If its a hard name it’s generally a bad design.
从中你可以发现,如果方法或返回参数给出详细说明,则它们不与抽象级别一起.
例如,高级方法
-initProcess(): SGN_MTL
可能会泄漏返回值的实现细节.
这里的难点在于检测抽象级别何时发生变化.
例如,在你的方法中,如果它自己的代码是JDCB层的实现,那么可以全部抛出SQLExceptions.
您可以在此列表中看到更多这些主题的其他来源.
http://www.jetbrains.com/idea/documentation/inspections.jsp
查看“抽象”下的项目即.
>具体类的实例变量:将实例变量的类型声明为具体类而不是接口时的报告.
经典的例子是:
private ArrayList list;
什么时候会更好
private List list;
内容总结
以上是互联网集市为您收集整理的Java Leaky抽象检查器全部内容,希望文章能够帮你解决Java Leaky抽象检查器所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。