java-注释,用于检测字符串参数顺序错误的方法调用
作者:互联网
我们有一个使用很多字符串的大型应用程序:
>序列号
>产品名称
>订单号
>供客户参考
> …还有更多…
不幸的是,我们的开发人员只是人类.有时在调用方法时,字符串值会混淆.
例如:
// this method
public void addProductToOrder(String order, String productname, String serialnumber);
// should be called like:
addProductToOrder(order, productname, serialnumber);
// but is sometimes mistakenly called as:
addProductToOrder(productname, serialnumber, order);
当您的方法需要约30个这些参数时,很难检测到切换2个参数. (是的,这是那些繁重的业务应用程序之一)
旁注:如果我们创建了自己的类SerialNumber,它仅充当String的包装,则不会有此问题.但这似乎是错误的.
最近,我开始怀疑是否有一种方法可以使用自定义注释来检测混淆.毕竟,已经有诸如Nullable,NonNull之类的注释…
这并没有太大的不同.
我们想注释我们的源代码,例如:
public void addProductToOrder(@OrderReference String order, @ProductName String productname, @SerialNumber String serialnumber);
接下来,我们想找到一种方法,使我们的IDE在这里检测到2个参数已切换.
@OrderReference String order = "ORDER_001";
@SerialNumber String sn = "0001-1213-007";
@ProductName String productname = "beer";
addProductToOrder(productname, serialnumber, order);
// should have been: addProductToOrder(order, productname, serialnumber);
我们正在使用IntelliJ IDE.不编写IDE插件怎么办?
解决方法:
虽然您应该将ControlAltDel的评论作为最终解决方案,但Intelij确实进行了“可疑变量/参数名称组合”检查,可能会有所帮助.您可以输入通用参数名称,如果认为本地变量不匹配,则会发出警告.
标签:code-inspection,intellij-idea,annotations,java 来源: https://codeday.me/bug/20191028/1951101.html