• java代码注释规范引(阿里巴巴开发规范-注释规约)结合注释规约,在IDEA下设置相应的注释模板1,安装阿里巴巴开发规约的IDEA提示插件,这样能够在很大程度上规范自己的编程规范,在出现代码编写风格不规范的情况下会...

    引(阿里巴巴开发规范-注释规约)

    1. 【强制】类、类属性、类方法的注释必须使用 Javadoc 规范,使用/*内容/格式,不得使用
      // xxx 方式。
      说明:在 IDE 编辑窗口中,Javadoc 方式会提示相关注释,生成 Javadoc 可以正确输出相应注
      释;在 IDE 中,工程调用方法时,不进入方法即可悬浮提示方法、参数、返回值的意义,提高
      阅读效率。
    2. 【强制】所有的抽象方法(包括接口中的方法)必须要用 Javadoc 注释、除了返回值、参数、
      异常说明外,还必须指出该方法做什么事情,实现什么功能。
      说明:对子类的实现要求,或者调用注意事项,请一并说明。
    3. 【强制】所有的类都必须添加创建者和创建日期。
    4. 【强制】方法内部单行注释,在被注释语句上方另起一行,使用//注释。方法内部多行注释
      使用/* */注释,注意与代码对齐。
    5. 【强制】所有的枚举类型字段必须要有注释,说明每个数据项的用途。
    6. 【推荐】与其“半吊子”英文来注释,不如用中文注释把问题说清楚。专有名词与关键字保持
      英文原文即可。
      反例:“TCP 连接超时”解释成“传输控制协议连接超时”,理解反而费脑筋。
    7. 【推荐】代码修改的同时,注释也要进行相应的修改,尤其是参数、返回值、异常、核心逻辑
      等的修改。
      说明:代码与注释更新不同步,就像路网与导航软件更新不同步一样,如果导航软件严重滞后,
      就失去了导航的意义。
    8. 【参考】谨慎注释掉代码。在上方详细说明,而不是简单地注释掉。如果无用,则删除。
      说明:代码被注释掉有两种可能性:1)后续会恢复此段代码逻辑。2)永久不用。前者如果没
      有备注信息,难以知晓注释动机。后者建议直接删掉(代码仓库保存了历史代码)。
    9. 【参考】对于注释的要求:第一、能够准确反应设计思想和代码逻辑;第二、能够描述业务含
      义,使别的程序员能够迅速了解到代码背后的信息。完全没有注释的大段代码对于阅读者形同
      天书,注释是给自己看的,即使隔很长时间,也能清晰理解当时的思路;注释也是给继任者看
      的,使其能够快速接替自己的工作。
    10. 【参考】好的命名、代码结构是自解释的,注释力求精简准确、表达到位。避免出现注释的
      一个极端:过多过滥的注释,代码的逻辑一旦修改,修改注释是相当大的负担。
      反例:
      // put elephant into fridge
      put(elephant, fridge);
      方法名 put,加上两个有意义的变量名 elephant 和 fridge,已经说明了这是在干什么,语
      义清晰的代码不需要额外的注释。
    11. 【参考】特殊注释标记,请注明标记人与标记时间。注意及时处理这些标记,通过标记扫描,
      经常清理此类标记。线上故障有时候就是来源于这些标记处的代码。
      1) 待办事宜(TODO):( 标记人,标记时间,[预计处理时间])
      表示需要实现,但目前还未实现的功能。这实际上是一个 Javadoc 的标签,目前的 Javadoc
      还没有实现,但已经被广泛使用。只能应用于类,接口和方法(因为它是一个 Javadoc 标签)。
      2) 错误,不能工作(FIXME):(标记人,标记时间,[预计处理时间])
      在注释中用 FIXME 标记某代码是错误的,而且不能工作,需要及时纠正的情况。

    结合注释规约,在IDEA下设置相应的注释模板

    1,安装阿里巴巴开发规约的IDEA提示插件,这样能够在很大程度上规范自己的编程规范,在出现代码编写风格不规范的情况下会给出相应的提示及建议:

    在这里插入图片描述

    2,安装JavaDoc在IntelljIDEA下的插件,可以单个或批量生成代码注释:

    插件安装:
    在这里插入图片描述
    安装完成后再IDEA中即可通过快捷键:Alt+Insert 生成代码javadoc的注释:
    在这里插入图片描述
    缺点是:由该插件生成的代码注释风格无法进行修改,所以在类的注释上也就无法添加author及create time的标志性字段,这与《阿里巴巴开发规约》的第3条相违背,但是在看dubbo或者其它阿里系产品的时候,发现他们自己开发的代码中类的注释也是采用的类似javadoc的插件自动生成的注释,类上面也没有加类似的标志性字段,自己也没有遵守相应的规范?
    在这里插入图片描述

    3,利用Live Template手动添加注释模版

    还记得在idea中使用sout,编辑器会自动提示是否为System.out.println();的功能,这里就是类似这样的实现。
    在Live templates中点击右侧的+号,选择第二项TemplateGroup,创建一个模板分组,而后在该分组下同样点击右侧的+号,这次选择第一项LiveTemplate。
    在这里插入图片描述
    这个名称尽量选择短一点,这其实就涉及到一个快捷键的问题,当输入cc的时候,就会自动生成类的注释,注释模板就采用阿里建议的模板风格:

    	/**
    	 *TODO:
    	 *
    	 *@author xxxx
    	 *@date $date$
    	 */
    

    在这里插入图片描述
    当编写完类需要完成什么功能后需要将TODO字样去掉,合乎《规范》第11.1的规定。

    综述:对于类注释采用liveTemplate配置注释模板,对于方法及字段注释采用javadoc插件自动生成的注释字样已完全够用,满足相应的需求。

    在这里插入图片描述

    附:IDEA生成javadoc的操作:

    在Tool中直接点击generate javaDoc,然后选择需要生成的项目及生成位置即可:
    在这里插入图片描述

    展开全文
  • IDEA JAVA模板定义

    2020-03-26 22:48:47
    IDEA JAVA模板定义1、...File and Code Templates3、新建java代码时,填写类注释到弹出的DESCRIPTION框中 IDEA JAVA模板定义 1、Settings->File and Code Templates Includes标签下 点击加号,添加文件,重...

    IDEA JAVA模板定义

    1、Settings->File and Code Templates

    Includes标签下
    点击加号,添加文件,重命名为:File Header
    添加内容为:

     /**
     * 
     * ${DESCRIPTION}
     *
     * @author ${USER}
     * @version 1.0
     * @date ${YEAR}-${MONTH}-${DAY} ${TIME}
     */
    

    2、Settings->File and Code Templates

    Files标签下
    Class修改为:

    /* Copyright © 2020 Yuech and/or its affiliates. All rights reserved. */
    #if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end
    #parse("File Header.java")
    public class ${NAME} {
    }
    

    Interface修改为:

    /* Copyright © 2020 Yuech and/or its affiliates. All rights reserved. */
    #if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end
    #parse("File Header.java")
    public interface ${NAME} {
    }
    

    Enum修改为:

    /* Copyright © 2020 Yuech and/or its affiliates. All rights reserved. */
    #if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end
    #parse("File Header.java")
    public @interface ${NAME} {
    }
    

    AnnotationType修改为:

    /* Copyright © 2020 Yuech and/or its affiliates. All rights reserved. */
    #if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end
    #parse("File Header.java")
    public @interface ${NAME} {
    }
    

    3、新建java代码时,填写类注释到弹出的DESCRIPTION框中

    展开全文
  • Java模板模式(template)

    2019-03-06 10:43:39
      java23中设计模式中的模板模式是我们经常在框架源码中能看到的设计模式,所以本文就给大家来介绍下模板模式 模板模式 模板模式介绍   模板方法模式是编程中经常用得到的模式,它定义了一个操作中的算法核心...

      java23中设计模式中的模板模式是我们经常在框架源码中能看到的设计模式,所以本文就给大家来介绍下模板模式

    模板模式

    模板模式介绍

      模板方法模式是编程中经常用得到的模式,它定义了一个操作中的算法核心,然后将某些步骤延迟到子类中实现。这样,新的子类可以在不改变一个算法结构的前提下重新定义该算法的某些特定的步骤。
      换个说法就是某个流程的代码已经都具备了,但是其中某个节点的代码暂时不能确定,因此,我们采用模板方法模式,将这个节点的代码实现转移到子类中完成,即:处理步骤父类中定义好,具体的实现延迟到子类定义中。

    代码实现

      我们通过银行办理业务,排队区号来操作来模拟模板模式。

    /**
     * 父类
     * @author 波波烤鸭
     *
     */
    public abstract class BankTemplateMethod {
    	/**
    	 * 具体方法
    	 */
    	public void takeNumber(){
    		System.out.println("取号排队");
    	}
    	/**
    	 * 办理具体的业务	钩子方法:抽象方法,交给子类去实现
    	 */
    	public abstract void transact(); 
    	/**
    	 * 具体方法
    	 */
    	public void evaluate(){
    		System.out.println("反馈评分");
    	}
    	
    	/**
    	 * 模板方法!!!
    	 */
    	public final void process(){	
    		this.takeNumber();
    
    		this.transact();
    
    		this.evaluate();
    	}
    }
    

    测试类

    public static void main(String[] args) {
    
    	// 采用匿名内部类
    	BankTemplateMethod btm1 = new BankTemplateMethod() {
    		@Override
    		public void transact() {
    			System.out.println("我要存钱!");
    		}
    	};
    	btm1.process();
    	System.out.println("---------------------------");
    	BankTemplateMethod btm2 = new BankTemplateMethod() {
    		@Override
    		public void transact() {
    			System.out.println("我要理财!我这里有2000万韩币");
    		}
    	};
    	btm2.process();
    }
    

    输出

    取号排队
    我要存钱!
    反馈评分
    ---------------------------
    取号排队
    我要理财!我这里有2000万韩币
    反馈评分
    

    小结:银行为了方便顾客办理业务,所以制定了一套固定的业务流程。比如来了先取号排队,然后办理业务,然后评分。取号排队和评分这些功能银行可以实现,但是办理具体的业务就得具体的顾客来实现了。这就是模板模式。

    开发中常见的场景

    1. 数据库访问的封装
    2. Junit单元测试
    3. servlet中的doGet和doPost方法
    4. Hibernate中的模板程序
    5. Spring中的JdbcTemplate,HibernateTemplate等
    展开全文
  • java打印的代码

    2014-08-18 17:15:24
    import java.util.*; /*下面我们用到了Date和Properties这两个类,是 属于java.util这个包的;而System和Runtime这两个类,是属于java.lang这个包的。*/  public class Property//程序员给这个类取名为Property ...

      import java.util.*; /*下面我们用到了Date和Properties这两个类,是 属于java.util这个包的;而System和Runtime这两个类,是属于java.lang这个包的。*/

      public class Property//程序员给这个类取名为Property

      {

      public static void main(String args[])//main是类的主方法

      {

      System.out.println(new Date()); //在命令行下面打印出日期

      Properties p=System.getProperties();//获得系统的Properties对象p

      p.list(System.out);//在命令行下打印出p中的各个系统变量的值

      System.out.println("--Memory Usage: \n");//打印一行字符串---Memory Usage

      Runtime rt=Runtime.getRuntime( ); //获得系统的Runtime对象rt

      System.out.println("Total Memory()="+rt.totalMemory()+"\nFree Memory="+rt.freeMemory()); //打印总内存大小

      }

    展开全文
  • 的论坛,有积分的限制,很是不爽,发帖可以增加积分,所以花了点时间琢磨弄个自动发帖机,以下是基本的代码和原理说明,要实现自动发帖,循环执行以下代码即可。(注意发帖的时间间隔限制)   package com.ldq; ...

     

         遇到一个 Powered by discuz 7.2 ! 的论坛,有积分的限制,很是不爽,发帖可以增加积分,所以花了点时间琢磨弄个自动发帖机,以下是基本的代码和原理说明,要实现自动发帖,循环执行以下代码即可。(注意发帖的时间间隔限制)

     

    package com.ldq;
    
    import java.io.InputStream;
    import java.io.OutputStreamWriter;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.util.List;
    import java.util.Map;
    
    public class MyNewTopic {
    
    	private static URL url;
    	private static HttpURLConnection con;
    	private static String temp;
    	private static InputStream is;
    	private static byte[] b;
    	private static int pos;
    	private static String cookie_sid;
    	private static String cookie_auth;
    	private static String my_cookie;
    	private static String login_formhash;
    	private static String post_formhash;
    	private static String user = "test";// 用户名
    	private static String pass = "test";// 密码
    	private static String new_fid = "11";// 版块 ID
    	private static String subject = "新主题";// 标题
    	private static String msg = "这里是新主题的内容";// 帖子内容
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		try {
    
    			// 获取 cookie_sid 和 login_formhash --------------------
    			url = new URL("http://192.168.72.130/bbs/logging.php?action=login");
    			con = (HttpURLConnection) url.openConnection();
    			if (con.getResponseCode() == HttpURLConnection.HTTP_OK) {
    				// 获取服务器发给客户端的 Cookie
    				temp = con.getHeaderField("Set-Cookie");
    				System.out.println("Set-Cookie:" + temp);
    				// 取 Cookie 前面的部分就可以了,后面是过期时间、路径等,不用管它
    				cookie_sid = temp.substring(0, 14);
    				System.out.println(cookie_sid);
    
    				is = con.getInputStream();
    				b = new byte[is.available()];
    				is.read(b);
    				// 服务器会返回一个页面,此页面中包含 formhash
    				temp = new String(b);
    				// 找出这个 formhash 的位置
    				pos = temp.indexOf("name=\"formhash\" value=");
    				// System.out.println(temp);
    				// 找出这个 formhash 的内容,这是登录用的 formhash
    				login_formhash = temp.substring(pos + 23, pos + 23 + 8);
    				System.out.println("login_formhash:" + login_formhash);
    				System.out
    						.println("------------------------------------------------------------");
    				is.close();
    			}
    
    			// 获取cookie_auth -----------------------------------------------
    			url = new URL("http://192.168.72.130/bbs/logging.php");
    			con = (HttpURLConnection) url.openConnection();
    
    			// 设定以 POST 发送
    			con.setRequestMethod("POST");
    			// 加入 Cookie 内容
    			con.setRequestProperty("Cookie", cookie_sid);
    			// 添加 POST 的内容
    			con.setDoOutput(true);
    			OutputStreamWriter osw = new OutputStreamWriter(con
    					.getOutputStream());
    			osw
    					.write("action=login&loginfield=username&questionid=0&answer=&loginsubmit=yes&formhash="
    							+ login_formhash
    							+ "&username="
    							+ user
    							+ "&password=" + pass);
    			osw.flush();
    			osw.close();
    
    			if (con.getResponseCode() == HttpURLConnection.HTTP_OK) {
    				Map<String, List<String>> map = con.getHeaderFields();
    				List<String> list = map.get("Set-Cookie");
    				for (int i = 0; i < list.size(); i++) {
    					temp = list.get(i);
    					if (temp.contains("CsN_auth")) {
    						System.out.println(temp);
    						// 取 Cookie 前面的部分就可以了,后面是过期时间、路径等,不用管它
    						cookie_auth = temp.split(";")[0];
    						System.out.println("cookie_auth:" + cookie_auth);
    					}
    				}
    
    				is = con.getInputStream();
    				byte[] b = new byte[is.available()];
    				is.read(b);
    				// System.out.println(new String(b));
    				System.out
    						.println("------------------------------------------------------------");
    				is.close();
    			}
    
    			// 正式登录
    			url = new URL(
    					"http://192.168.72.130/bbs/post.php?action=newthread&fid="
    							+ new_fid);
    			HttpURLConnection con = (HttpURLConnection) url.openConnection();
    
    			my_cookie = cookie_sid + ";" + cookie_auth;
    			System.out.println(my_cookie);
    			// 加入 Cookie 内容
    			con.setRequestProperty("Cookie", my_cookie);
    
    			if (con.getResponseCode() == HttpURLConnection.HTTP_OK) {
    				is = con.getInputStream();
    				byte[] b = new byte[is.available()];
    				is.read(b);
    				temp = new String(b);
    				pos = temp.indexOf("id=\"formhash\" value=");
    				// System.out.println(temp);
    				// 获得发帖用的 formhash
    				post_formhash = temp.substring(pos + 21, pos + 21 + 8);
    				System.out.println("post_formhash:" + post_formhash);
    				System.out
    						.println("------------------------------------------------------------");
    				is.close();
    			}
    
    			// 发新帖子
    			url = new URL("http://192.168.72.130/bbs/post.php");
    			con = (HttpURLConnection) url.openConnection();
    
    			con.setRequestMethod("POST");
    			con.setRequestProperty("Cookie", my_cookie);
    			con.setDoOutput(true);
    			osw = new OutputStreamWriter(con.getOutputStream());
    			temp = "action=newthread&topicsubmit=yes&subject=" + subject
    					+ "&formhash=" + post_formhash + "&fid=" + new_fid
    					+ "&message=" + msg;
    			osw.write(temp);
    			osw.flush();
    			osw.close();
    
    			if (con.getResponseCode() == HttpURLConnection.HTTP_OK) {
    				is = con.getInputStream();
    				byte[] b = new byte[is.available()];
    				is.read(b);
    				// System.out.println(new String(b));
    				System.out
    						.println("------------------------------------------------------------");
    				is.close();
    			}
    
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    
    	}
    }
    

     

         

          正好 2010-01-06 22:01,太晚了,再不走赶不上末班地铁了,原理下次再发帖详细说明吧。

     

    展开全文
  • 一套 BFS 算法框架,见到 BFS 直接套
  • 我使用的是VUE + springboot 引包 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17</versi...
  • 它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。 当Velocity应用于web开发时,界面设计人员可以和java程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计...
  • Java 模板模式

    2019-01-23 16:16:50
    模板模式的定义:  它定义了一个操作中的算法骨架,将某些步骤延迟到子类中实现,这样子类才可以不改变算法结构的前提下重新定义改算法的某些特定步骤。 模板模式的核心:  处理的步骤父类中早已定义好,具体的...
  • 打开路径 File-Settings-Editor-Code style-File and Code Templates-Includea-File Header 如图所示 我的模板是这个 /** *@Description *@auther ${USER} *@create ${YEAR}-${MONTH}-${DAY} ${T...
  • 使用Lambda 表达式,大量节省末班代码,特别是重复多余的findViewById。都说越少的代码越能减少错误。 函数式支持 使用高阶函数,可以将其作为返回值或参数值使用,特别方便。 扩展函数 Kotlin同C#类似,能够扩展一...
  • 登陆界面模板java

    2020-06-22 12:15:29
    登陆界面模板java
  • 一个标准的代码格式工模板,使用方式:Eclipse=>Window=>Preferences=>Java=>CodeStyle=>Formater=>Import
  • 我们在开发工具中的代码注释经常会用到一些@标签,比如常用的@author ,如下: 那么我们如果要自定义一些自己需要的注释标签模板呢,比如在使用 apidoc生成接口模板时,就需要经常写一些apidoc定义的注释标签如@...
  • 包含mybatis-generator1.3.2的jar包、mysql数据库连接jar包、mybatis3.2.7.jar以及自动生成代码的配置文件模板。
  • [摘要:正在Eclipse中有一些便利开辟的设置我们已认识,个中包含了一项模板代码的插进,比方:单例、TODO等,正在studio中一样能够那么设置。 1.翻开Settings,顺次面开到如图地位 2.再如图 ]  在Eclipse中有...
  • intellij java 注释模板

    2018-01-25 14:55:39
    配置环境说明:intellij 版本 14.1.1 一、添加模板及注释 1、包文件注释配置 File—》Settings—》如下图 图一 2、类文件注释配置 File—》Settings—》如下图
  • java发送邮件-模板

    2018-01-10 18:18:41
    今天写完了一个关于使用模板发送邮件的代码,作为例子保存着,希望以后用得着,也希望能够帮助到需要帮助的人 以163网易邮箱为例,使用java发送邮件,发送以邮件时使用模板(.ftl文件转换为html)发送邮件内容,并...
  • 如图所示 我的模板是这个 /** * @Description * @Author HuHuanJin * @Date ${YEAR}-${MONTH}-${DAY} ${TIME} */ ...下面附上内置的一些参数 ...${PACKAGE_NAME} - 将在其中创建新类或接口的目标包的名称 ...
  • 1. 常用模板代码快捷键 (1)main方法 在类体中输入 psvm ,回车。生成如下代码。 public static void main(String[] args) { } (2)打印输出 在方法体中输入 sout ,回车。生成如下代码。 System.out....
1 2 3 4 5 ... 20
收藏数 496
精华内容 198
热门标签