网站首页 > 文章中心 > 其它

java代码必须注释吗

作者:小编 更新时间:2023-10-22 12:06:59 浏览量:85人看过

java工作中良好的代码注释习惯是什么

注释是为了方便自己或代码维护方更容易地读懂代码的用处.

第一段:背景?

①.、当我们第一次接触某段代码,但又被要求在极短的时间内有效地分析这段代码,我们需要什么样的注释信息?

第二段:意义?

java代码必须注释吗-图1

程序中的注释是程序设计者与程序阅读者之间通信的重要手段.应用注释规范对于软件本身和软件开发人员而言尤为重要.并且在流行的敏捷开发思想中已经提出了将注释转为代码的概念.好的注释规范可以尽可能的减少一个软件的维护成本?,?并且几乎没有任何一个软件,在其整个生命周期中,均由最初的开发人员来维护.好的注释规范可以改善软件的可读性,可以让开发人员尽快而彻底地理解新的代码.好的注释规范可以最大限度的提高团队开发的合作效率.长期的规范性编码还可以让开发人员养成良好的编码习惯,甚至锻炼出更加严谨的思维能力.?

第三段:注释的原则?

①.、注释形式统一?

在整个应用程序中,使用具有一致的标点和结构的样式来构造注释.如果在其他项目组发现他们的注释规范与这份文档不同,按照他们的规范写代码,不要试图在既成的规范系统中引入新的规范.?

内容要简单、明了、含义准确,防止注释的多义性,错误的注释不但无益反而有害.?

在写代码之前或者边写代码边写注释,因为以后很可能没有时间来这样做.另外,如果有机会复查已编写的代码,在今天看来很明显的东西六周以后或许就不明显了.通常描述性注释先于代码创建,解释性注释在开发过程中创建,提示性注释在代码完成之后创建.修改代码的同时修改相应的注释,以保证代码与注释的同步.?

保证注释与其描述的代码相邻,即注释的就近原则.对代码的注释应放在其上方相邻或右方的位置,不可放在下方.避免在代码行的末尾添加注释;行尾注释使代码更难阅读.不过在批注变量声明时,行尾注释是合适的;在这种情况下,将所有行尾注释要对齐.?

java代码必须注释吗-图2

在代码交付或部署发布之前,必须删掉临时的或无关的注释,以避免在日后的维护工作中产生混乱.?

如果需要用注释来解释复杂的代码,请检查此代码以确定是否应该重写它.尽一切可能不注释难以理解的代码,而应该重写它.尽管一般不应该为了使代码更简单便于使用而牺牲性能,但必须保持性能和可维护性之间的平衡.?

描述程序功能和程序各组成部分相互关系的高级注释是最有用的,而逐行解释程序如何工作的低级注释则不利于读、写和修改,是不必要的,也是难以维护的.避免每行代码都使用注释.如果代码本来就是清楚、一目了然的则不加注释,避免多余的或不适当的注释出现.?

典型算法必须有注释.在代码不明晰或不可移植处必须有注释.在代码修改处加上修改标识的注释.在循环和逻辑分支组成的代码中添加注释.为了防止问题反复出现,对错误修复和解决方法的代码使用注释,尤其是在团队环境中.?

①.0、注释在编译代码时会被忽略,不编译到最后的可执行文件中,所以注释不?

会增加可执行文件的大小.?

第四段:JAVA注释技巧?

①.、空行和空白字符也是一种特殊注释.利用缩进和空行,使代码与注释容易区?

别,并协调美观.?

结束处加注释(在闭合的右花括号后注释该闭合所对应的起点),注释不能?

写得很长,只要能表示是哪个控制语句控制范围的结束即可,这样便于阅读.?

这样做会使注释很明显且容易被找到.?

这样虽然麻烦,但是在做屏蔽调试时不用查找配对的"/*......*/".?

什么是注释?如何在Java程序中加入注释?

试想一下,一个没有一句注释的程序源码,怎么读,一个程序要上万条代码不可能全部记得住哪一块是什么用,而且一个项目也不会是一个人独自完成,那样效率太低,多人合作就要给别人说明,每一块是什么用,方便他人使用,方便自己更正,而这些说明文字就是注释,注释不会被执行,不影响运行结果.

Java中代码的注释有三种:

// 注释一行?

/* ...... */ 注释若干行?

/** ...... */ 注释若干行,并写入 javadoc 文档

前两种比较容易理解,至于第三种,你学习Java看的api文档就是javadoc程序根据第三种的注释生成的.

扩展资料

注释就是对代码的解释和说明,其目的是让人们能够更加轻松地了解代码.注释是编写程序时,写程序的人给一个语句、程序段、函数等的解释或提示,能提高程序代码的可读性.

对于java语言来说,大量注释会影响执行效率么

Java代码注释写的多,会影响到编译效率,但是不会影响到执行效率.

Java代码是先编译成字节码,然后被JVM解释执行的.

我做了个实验

TimeDemo 类

import?java.util.ArrayList;

public?class?TimeDemo?{

public?static?void?main(String[]?args)?{

long?start?=?System.currentTimeMillis();

ArrayListInteger?list?=?new?ArrayListInteger();

for?(int?i?=?0;?i?1000000;?i++)?{

list.add(i);

}

long?end?=?System.currentTimeMillis();

System.out.println("本次执行耗费了"+(end-start)+"毫秒");

//用java.io生成了很多行的注释,

//注释

运行结果

当注释行数是1~1万行的时候. 能较快的编译

当注释行数达到1百万的时候,编译稍微慢一点

当注释行数达到1千万行的时候, CPU占用100%,卡了进1分钟也没有编译完成,只好强行关闭

结论:

简单明了的注释有助于程序猿对代码的读写

?只有当注释行数极大的时候,才会严重的影响编译速度. 但不会影响执行速度

java代码注释(所有代码)注释比较重点的也行

多注了些控制流程,希望我的注释能够对你有帮助:

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class GoodLucky extends JFrame implements ActionListener{

JTextField tf = new JTextField(); //实例化一个文本域

//设置两个按钮

JButton b1 = new JButton("开始");

boolean isGo = false;

//构造函数

public GoodLucky(){

b1.setActionCommand("start");//在开始按钮上设置一个动作监听 start

JPanel p = new JPanel(); //实例化一个可视化容器

//将两个按钮添加到可视化容器上面,用add方法

p.add(b1);

//在两个按钮上增加监听的属性,自动调用下面的监听处理方法actionPerformed(ActionEvent e),如果要代码有更好的可读性,可用内部类实现动作

//监听处理.

b1.addActionListener(this);

this.getContentPane().add(tf,"North"); //将上面的文本域放在面板的北方,也就是上面(上北下南左西右东)

this.getContentPane().add(p,"South"); //将可视化容器pannel放在南边,也就是下面

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置用户在此窗体上发起 "close" 时默认执行的操作,参数EXIT_ON_CLOSE是使用 System exit 方法退出应用程序.仅在应用程序中使用

Cursor cu = new Cursor(Cursor.HAND_CURSOR); //用指定名称创建一个新的定制光标对象,参数表示手状光标类型

this.setCursor(cu); //为指定的光标设置光标图像,即设置光标图像为上面所创建的手状光标类型

this.setVisible(true); //将面板可视化设置为true,即可视,如果为false,即程序运行时面板会隐藏

tf.setText("welcome you! "); //设置面板的标题为欢迎

this.go(); //调用go方法

public void go(){

if(isGo == true){ //上面所定义的isGo的初始值为false,所以程序第一次到此会跳过

String s = ""; //设置空字符串

if(i 10){

s = s + " 0" + i; //如果产生的随机数小于10的话做处理:这里就牵扯到一个重要的概念,简单叙述一下:

/*

当一个字符串与一个整型数项相加的意思是连接,上面的s = s + " 0" + i的意思是字符串s链接0再连接整型i值,而不会导致0和整型的i相加,

*/

}else{

s = s + " " + i; //如果产生的随机数比10打的话,那么加上空格显示,即数字和数字之间有个空格

tf.setText(s); //将产生的随机数全部显示在文本域上,用文本域对象tf调用它的设置文本的方法setText(String)实现.

//以下为线程延迟

try{

Thread.sleep(10); //线程类同步方法sleep,睡眠方法,括号里的单位为ms.

}catch(java.lang.InterruptedException e){

e.printStackTrace(); //异常捕获,不用多说.

//以下是上面设置的事件监听的具体处理办法,即监听时间处理方法,自动调用

public void actionPerformed(ActionEvent e){ //传入一个动作事件的参数e

String s = e.getActionCommand(); //设置字符串s来存储获得动作监听,上面的start

执行else语句块中的语句,isGo设置为false,将不执行上面go中的循环语句块,从而停止产生随机数,并显示,并且把开始按钮设置为可用,而把

停止按钮设置为不可用,等待用户按下开始再去开始新一轮循环产生随机数.

if(s.equals("start")){ //如果捕获到start,也就是用户触发了动作监听器,那么下面处理

isGo = true; //设置isGo为true

b1.setEnabled(false); //将开始按钮设置为不可用

isGo = false; //将isGo设置为false,isGo为循环标志位

b1.setEnabled(true); //设置开始按钮为可用

public static void main(String[] args){

new GoodLucky(); //产生类的实例,执行方法

圣诞平安夜了,祝朋友开心快乐!

java源程序的注释量必须在多少以上?

另外在命名是也要特别注意,命名能都充分表现你的变量、方法、类的含义,这样也能起到注释的作用.

还有就是类、方法不能过大,方法十几行也就差不多了,太多可读性就比较差了.

java 需要加注释.

注释的很详细了 还有什么不明白的可以给我留言

此外给楼主点建议,打好基础,这套代码乱七八糟,写的太烂了.不适合用来学习,要学习就找好代码,不然很容易被误导.

/**

*此类事dao层中的一个类 使用hibernate完成持久层的控制

*继承自抽象类AbstractDAO并实现了抽象类的相关方法

*主要包括获取图书列表,获取图书记录,添加图书信息,添加和更新图书信息,

*获取图书信息和判断判断是否可以删除图书信息这几个功能

public class BookDAO extends AbstractDAO {

//无参数构造方法

public BookDAO() {

/**治理竟然加了个主方法,恕在下愚钝,除了添乱之外想不出别的解释

*也可能是测试阶段用来测试 然后忘记删除了

public static void main(String[] args) {

// TODO Auto-generated method stub

* 获取图书信息 根据关键字使用模糊查询 得到包含关键字的图书信息列表

*如果输入的book对象的bookName属性为控制或者空字符串 默认查询所有图书信息

*默认情况返回数据库中所有图书的信息,

*这里返回值设计成ListBookinfo会更好 当然由于集成的抽象类的限制改不了(抽象类设计的不好 )

**/

public List getBookList(Bookinfo book,Pager pager) throws DataAccessException{

//hql语句 默认情况下 返回数据库中所有的图书信息

String hql = " from com.jframe.biz.book.Bookinfo book" +

" where 1=1 ";

/*如果book名存在且不是空串

*重新构造hql语句 添加限制条件 返回book名字的模糊查询结果集

if(book.getBookName()!=null!"".equals(book.getBookName())){

hql += " and book.bookName like '%"+book.getBookName()+"%'";

if(book.getAuthor()!=null!"".equals(book.getAuthor())){

hql += " and book.author like '%"+book.getAuthor()+"%'";

//创建查询对象 执行hql语句

Query query = this.getSession().createQuery(hql);

//以下两条记录设置了从数据库的第几条记录开始 查到第几条 用于分页

//设定结果集的大小 就是分页逻辑设定的每页显示的记录数

query.setMaxResults(pager.getPageSize());

//从分页中逻辑中传过来的起始记录开始查

query.setFirstResult((pager.getCurrentPage()-1)*pager.getPageSize());

//返回查询到的结果

return query.list();

*查询指定条件的图书的记录数

public int getBookCount(Bookinfo book) throws DataAccessException{

//设定默认的hql 查询所有的图书的记录

String hql = " select count(bookName) from com.jframe.biz.book.Bookinfo book" +

//如果图书名不为空且不是空串 添加限制条件--图书名的模糊查询

//返回查询的结果集到list

List list = query.list();

//如果结果集对象不为空且存在结果

if(list!=nulllist.size()0)

//将结果集中第一个元素转换成整形然后返回

return ((Integer)query.list().iterator().next()).intValue();

else

//没有记录返回0

return 0;

*添加图书信息

public Bookinfo addBookInfo(Bookinfo book) throws DataAccessException{

//创建hibernate模板对象

HibernateTemplate template = this.getHibernateTemplate();

//调用模板的保存方法保存图书信息

template.save(book);

//清理缓存或者说清理脏数据 检验内存中的持久态对象是否已经存入数据库

template.flush();

template.evict(book);

//以后返回值就不解释了 方法头上面有参数和返回值的解释

return getBookInfo(book);

public Bookinfo saveBookInfo(Bookinfo book) throws DataAccessException{

//同上个方法 以后不解释

//如果数据库中没有则插入 如果有则更新

template.saveOrUpdate(book);

return book;

*删除指定图书

public void deleteBookInfo(Bookinfo book) throws DataAccessException{

//调用模板的删除方法

template.delete(book);

*根据书号查询图书信息

public Bookinfo getBookInfo(Bookinfo book) throws DataAccessException{

//sql语句 查询指定书号的图书信息

String hql = " from com.jframe.biz.book.Bookinfo book" +

" where 1=1 and book.bookNo='"+book.getBookNo()+"'";

//调用查询的模板的查询类

List list = template.find(hql);

//将查询结果集的第一个值强制转换成对象返回

return (Bookinfo) list.iterator().next();

java代码必须注释吗-图3

return null;

*r如果日志信息中记录的书号是可删除的 并且在数据库中存在则返回true

public boolean isCanDelete(Bookinfo book) {

boolean flag = false;

String hql = " from com.jframe.biz.log.Loginfo log" +

" where 1=1 and log.bookinfo.bookNo='"+book.getBookNo()+"'";

flag = false;

flag = true;

return flag;

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章