当前位置: 首页 > news >正文

网站建设与管理简介做网站的网络非要专线吗

网站建设与管理简介,做网站的网络非要专线吗,wordpress扫码支付下载,关键词权重前言#xff1a;经常使用Objects.equals(a,b)方法的同学 应该或多或少都会因为粗心而传错参#xff0c; 例如日常开发中 我们使用Objects.equals去比较 status(入参)#xff0c;statusEnum(枚举), 很容易忘记statusEnum.getCode() 或 statusEnum.getVaule() #xff0c;再比… 前言经常使用Objects.equals(a,b)方法的同学 应该或多或少都会因为粗心而传错参 例如日常开发中 我们使用Objects.equals去比较 status(入参)statusEnum(枚举), 很容易忘记statusEnum.getCode() 或 statusEnum.getVaule() 再比如 我们比较一个订单code时 orderCode(入参),orderDTO(其它业务对象) 很容易忘记orderDTO.getCode() 因为Objects.equals()两个参数都是Object类型idea默认不会提示告警, 如果经常使用该方法 你一定很清楚的明白我在说什么。 针对以上痛点博主编写了一个idea插件: Equals Inspection , 插件代码本身很简单极其轻量级。难得的是 在目前暂没发现有人做了这件事时而博主想到了可以通过IDE告警方式去解决问题并且实际行动了。此外知道该用什么API本身是件不容易的事而阅读代码时已经处于一个上帝视角则会显得非常简单。 下载一推荐 idea插件市场搜索 Equals Inspection 下载二 github : https://github.com/qiuhuanhen/objects-equals-inspect/releases 安装方式1.idea内插件下载会自动安装 2. github下载直接将jar包拖进idea重启ideaQ为什么是IDE插件层面而不是在java项目中重写一个工具类 针对类型判断呢 A 1.效率问题:java项目代码判断 说明要执行到该方法时才能校验很多时候我们编写完在测试环节被提了bug我们自己断点执行一遍才能发现传错了参插件层面在我们编写时即可提醒节省了大量时间. 2.设计问题: 很重要的一点java项目层面的提示要怎么提示throw new RuntimeExection? 显然不太合理吧例如在设计一些框架/通用代码时类型就是可以不一致 难道抛一个异常阻止程序运行吗插件尽管会提示报错但它归根结底都只是一个样式并不会阻止程序运行。 使用前后效果对比 使用前没有告警 使用后示例 vo.getStatus(Integer类型)与枚举比较时能直接提示我们类型不一致 正确写法是StatusEnum.AWAIT.getValue() 与枚举类型的值进行比较 以下就以博主编写的插件为例 写一篇如何编写idea插件的教程 注本文由csdn博主 孟秋与你 编写如您在其它地方看到本文很可能是被其它博主爬虫/复制过来的文章可能会持续更新强烈建议您搜索孟秋与你csdn 找到原文查看 第一步创建插件项目 tips: 1.需要jdk11 2.以idea2021.1版本为例不同idea版本可能有所差异 new project -IntelliJ Platform Plugin- Project SDK (需要jdk11) 第二步修改plugin.xml文件内容及创建java代码 其中plugin.xml的description节点需要40个字符以上否则插件上传时会报错。 编写插件的核心难点在于我们不知道idea的api是什么什么情况用什么api。 以下是可以参考的几点 idea官方文档 https://plugins.jetbrains.com/docs/intellij/welcome.htmlgithub idea 示例项目:https://github.com/JetBrains/intellij-sdk-code-samples idea-pluginidcsdn-mengqiuyuni/idnameEquals参数类型检查/nameversion0.1.0/versionvendor email1005738053qq.com urlhttps://blog.csdn.net/qq_36268103 /vendordescription![CDATA[licheck java.lang.Objects equals method params type ,if not match,idea will show the error line/librlicould reduce Objects.equals(a,b) error params type by mistake/librlinotice:this plugin can only inspect your code,its just reminder java developers,but dont impact code execution,and never change or fix your code./li]]/descriptionchange-notes![CDATA[ligithub:qiuhuanhen,project name :objects-equals-inspect/librlibeta version.csdn:孟秋与你/librlithe first beta version,welcome,update date:2024.01.09/li]]/change-notesvendorqiuhuanhen/vendor!-- please see https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html for description --idea-version since-build173.0/!-- please see https://plugins.jetbrains.com/docs/intellij/plugin-compatibility.htmlon how to target different products --dependscom.intellij.modules.platform/dependsdependscom.intellij.java/dependsdependscom.intellij.modules.java/dependsextensions defaultExtensionNscom.intellijlocalInspectionlanguageJAVAdisplayNameTitlegroupPathJavagroupBundlemessages.InspectionsBundlegroupKeygroup.names.probable.bugsenabledByDefaulttruelevelERRORimplementationClasscom.qiuhuanhen.ObjectsEqualsInspection/!--java类所在路径--/extensions/idea-plugin package com.qiuhuanhen;import com.intellij.codeInspection.LocalInspectionTool; import com.intellij.codeInspection.ProblemHighlightType; import com.intellij.codeInspection.ProblemsHolder; import com.intellij.psi.*; import org.jetbrains.annotations.NotNull;/*** author qiuhuanhen*/ public class ObjectsEqualsInspection extends LocalInspectionTool {NotNullOverridepublic PsiElementVisitor buildVisitor(NotNull ProblemsHolder holder, boolean isOnTheFly) {return new MyVisitor(holder);}private static class MyVisitor extends JavaElementVisitor {private final ProblemsHolder holder;public MyVisitor(ProblemsHolder holder) {this.holder holder;}Overridepublic void visitMethodCallExpression(PsiMethodCallExpression expression) {super.visitMethodCallExpression(expression);String methodName expression.getMethodExpression().getReferenceName();if (equals.equals(methodName)) {PsiExpressionList argumentList expression.getArgumentList();PsiExpression[] expressions argumentList.getExpressions();if (expressions.length 2) {PsiType arg1Type expressions[0].getType();PsiType arg2Type expressions[1].getType();// 都为空 不做提示 注即使idea会提示 type不为空 为防止插件报NPE 还是有大量的非空判断if (null arg1Type null arg2Type) {return;}// 其一为空 给出错误提示if (null arg1Type || null arg2Type) {holder.registerProblem(expression, Objects.equals parameters are not of the same type., ProblemHighlightType.GENERIC_ERROR_OR_WARNING);return;}// 这是忽视某些通用类框架 用于比较反射class类型的情况if (arg1Type.getCanonicalText().contains(Class) arg2Type.getCanonicalText().contains(Class)) {return;}if (isByte(arg1Type) isByte(arg2Type)) {return;}if (isShort(arg1Type) isShort(arg2Type)) {return;}if (isInt(arg1Type) isInt(arg2Type)) {return;}if (isLong(arg1Type) isLong(arg2Type)) {return;}if (isFloat(arg1Type) isFloat(arg2Type)) {return;}if (isDouble(arg1Type) isDouble(arg2Type)) {return;}if (isChar(arg1Type) isChar(arg2Type)) {return;}if (isBoolean(arg1Type) isBoolean(arg2Type)) {return;}if (!arg1Type.equals(arg2Type)) {holder.registerProblem(expression, Objects.equals parameters are not of the same type., ProblemHighlightType.GENERIC_ERROR_OR_WARNING);}}}}private boolean isInt(PsiType type) {PsiPrimitiveType unboxedType PsiPrimitiveType.getUnboxedType(type);if (PsiType.INT.equals(unboxedType)) {// 是 int 类型return true;}return PsiType.INT.equals(type) || java.lang.Integer.equals(type.getCanonicalText());}private boolean isLong(PsiType type) {PsiPrimitiveType unboxedType PsiPrimitiveType.getUnboxedType(type);if (PsiType.LONG.equals(unboxedType)) {// 是 long 类型return true;}return PsiType.LONG.equals(type) || java.lang.Long.equals(type.getCanonicalText());}private boolean isDouble(PsiType type) {PsiPrimitiveType unboxedType PsiPrimitiveType.getUnboxedType(type);if (PsiType.DOUBLE.equals(unboxedType)) {return true;}return PsiType.DOUBLE.equals(type) || java.lang.Double.equals(type.getCanonicalText());}private boolean isFloat(PsiType type) {PsiPrimitiveType unboxedType PsiPrimitiveType.getUnboxedType(type);if (PsiType.FLOAT.equals(unboxedType)) {return true;}return PsiType.FLOAT.equals(type) || java.lang.Float.equals(type.getCanonicalText());}private boolean isBoolean(PsiType type) {PsiPrimitiveType unboxedType PsiPrimitiveType.getUnboxedType(type);if (PsiType.BOOLEAN.equals(unboxedType)) {return true;}return PsiType.BOOLEAN.equals(type) || java.lang.Boolean.equals(type.getCanonicalText());}private boolean isByte(PsiType type) {PsiPrimitiveType unboxedType PsiPrimitiveType.getUnboxedType(type);if (PsiType.BYTE.equals(unboxedType)) {return true;}return PsiType.BYTE.equals(type) || java.lang.Byte.equals(type.getCanonicalText());}private boolean isChar(PsiType type) {PsiPrimitiveType unboxedType PsiPrimitiveType.getUnboxedType(type);if (PsiType.CHAR.equals(unboxedType)) {return true;}return PsiType.CHAR.equals(type) || java.lang.Char.equals(type.getCanonicalText());}private boolean isShort(PsiType type) {PsiPrimitiveType unboxedType PsiPrimitiveType.getUnboxedType(type);if (PsiType.SHORT.equals(unboxedType)) {return true;}return PsiType.SHORT.equals(type) || java.lang.Short.equals(type.getCanonicalText());}} } 第三步打成jar包 没有main方法则不用选择main class 第四步发布插件 发布插件没有什么难点唯一值得注意的是description非常严格必须要40个字符以上且不能有非拉丁字符博主在反复修改后发现不能有任何中文最后把description里面的中文都改成了英文。 插件项目源码地址https://github.com/qiuhuanhen/objects-equals-inspect 打开项目方式 在github下载博主的项目idea打开后 默认是常规项目这时我们需要稍作处理 最后一步 最后: 原创不易 欢迎各位在idea插件商店下载 Equals Inspection 给github项目点上star 非常感谢各位
http://www.dnsts.com.cn/news/258716.html

相关文章:

  • 不写编程可以做网站建设影视文化传媒公司网站建设
  • 英文网站站长工具常州市经开区建设局网站
  • 南宁网站建设流程wordpress 页脚修改
  • 与企业网站做接口第三方网站下载素材是怎么做
  • 沈阳设计培训网站建设网站建设合作方案
  • wordpress网站管理最新新闻事件100字
  • 英语网站建设的必要性html5手机网站教程
  • 天津河西做网站公司工程项目管理咨询公司加盟
  • 自己做的网站还要买域名么做电影下载网站赚钱
  • 优化的网站做域名跳转个人网页参考
  • 有没有可以做各种字体的网站网站换空间步骤
  • 手机网站页面范例淘宝提货网站怎么做的
  • 网站做百度竞价的标志哈尔滨城乡建设网站
  • app推广项目从哪接一手seo搜索引擎优化入门
  • 福州的网站建设中石建基础设施建设有限公司网站
  • 备案期间关闭网站网上培训课程平台
  • 域名访问网站是什么意思国外电商怎么做
  • 海珠网站建设报价专业网站建设加盟合作
  • 自己搭建网站怎么搭建wordpress个性登录插件
  • 学校的网站怎么做的好做网站销售挣钱吗
  • 笫三性WordPress网站快速优化排名软件
  • 江门学做网站课程微信公众号小程序开发多少钱
  • wordpress换域名后网站地址怎么办wordpress设计
  • 深圳苏州企业网站建设服务我自己的网站
  • 顺德品牌网站建设公司中山网站建设企业
  • 微信网站制作腾讯云 建网站
  • 一台电脑主机做网站免费外贸电商平台
  • 北京创意网站建设乐清人才网官方网站
  • 河北智慧团建网站有那些专门做外贸的网站呀
  • 广汉市建设局网站环球旅行卡怎么用