Java类/接口中的默认注释和元信息

Java类/接口中的默认注释和元信息,java,coding-style,comments,Java,Coding Style,Comments,在一些代码库中,我看到了可以描述为默认注释的注释。这些注释通常会出现在项目的每个文件中,我相信,在大多数情况下,它们是在IDE的帮助下自动生成的。元信息有点不同。这实际上是代码的一部分。我想我最好在例子中说明这一点。这是我们的测试主题(取自现实生活并简化): 公共类UserServiceImpl实现IUserService{ //////////////////////////////////////////////////////////////////////// //常数 ////////

在一些代码库中,我看到了可以描述为默认注释的注释。这些注释通常会出现在项目的每个文件中,我相信,在大多数情况下,它们是在IDE的帮助下自动生成的。元信息有点不同。这实际上是代码的一部分。我想我最好在例子中说明这一点。这是我们的测试主题(取自现实生活并简化):

公共类UserServiceImpl实现IUserService{
////////////////////////////////////////////////////////////////////////
//常数
////////////////////////////////////////////////////////////////////////
/**此类的记录器*/
@抑制警告(“未使用”)
私有静态最终日志日志=LogFactory.getLog(userserviceinpl.class);
////////////////////////////////////////////////////////////////////////
//属性
////////////////////////////////////////////////////////////////////////
/**用户道*/
私有IUserDao userDao;
////////////////////////////////////////////////////////////////////////
//建设者
////////////////////////////////////////////////////////////////////////
/**
*默认构造函数
*/
公共用户服务impl(){
}
公共UserServiceImpl(最终IUserDao用户DAO){
this.userDao=userDao;
}
////////////////////////////////////////////////////////////////////////
//Getter和Setter方法
////////////////////////////////////////////////////////////////////////
/**
*{@link#userDao}字段的@return值
*
*/
公共IUserDao getUserDao(){
返回userDao;
}
/**
*设置{@link#userDao}字段
*
*@param userDao用户DAO
*/
公共void setUserDao(最终IUserDao userDao){
this.userDao=userDao;
}
////////////////////////////////////////////////////////////////////////
//实现/重写的方法
////////////////////////////////////////////////////////////////////////
/**
*
*@请参阅IUserService#saveUser(用户)
*/
@凌驾
公共void保存用户(最终用户){
fillMissingFields(用户);
userDao.saveUser(用户);
}
/**
*
*@see IUserService#getUserById(整数)
*/
@凌驾
公共列表getUserById(最终整数id){
返回userDao.getUserById(id);
}
/**
*
*@see IUserService#getUserList(IEnvironmentContext)
*/
@凌驾
公共列表getUserList(最终@SuppressWarnings(“未使用”)IEnvironmentContext上下文){
返回userDao.getUserList();
}
////////////////////////////////////////////////////////////////////////
//辅助方法
////////////////////////////////////////////////////////////////////////
私有void fillMissingFields(最终用户){
user.setLastUpdated(新日期());
}
////////////////////////////////////////////////////////////////////////
//toString()方法
////////////////////////////////////////////////////////////////////////
/**
*
*@see Object#toString()
*/
@凌驾
公共字符串toString(){
返回“UserServiceImpl{…}”;
}
}
这个类包含了很多我想讨论的概念,所以我将它们分为以下几种类型:

1)节默认注释-对于类的每个节,都有一个三行注释(如常量、构造函数等)。请注意,我并不是在讨论类的逻辑部分(比如
//user managenet
//Account Balance calculation

2)Getter和Setter默认注释-set/get方法的注释,这些注释只告诉对应的方法返回字段值集

3)元注释——描述某些java语言结构含义的注释。上面的示例:
@请参阅IUserService#saveUser(User)
-说明方法已被重写/实现,父方法的位置,
默认构造函数
-说明它是Java类的默认构造函数,
此类的记录器

4)@SuppressWarnings(“unused”)-在我的具体示例中,它常说,
LOG
不在类中使用(
LOG
实际上从未在类中使用过,但IDE不会显示警告)并且不使用
上下文
参数,但这没问题(假设
context
是一些一般信息,如果实现不使用它,通常是完全正常的)

5)
I
接口前缀
-前缀告诉我们,这就是接口

6)
final
用于方法参数
-防止方法体中的代码更改其值

我想知道您对课堂上默认评论和元信息的看法。为了更直观,我建议您对每种类型的评分从+5到-5进行投票:

+5-我认为这是必须的,每个Java开发人员都应该这样做,甚至应该使用工具(如checkstyle)来强制执行
...
0-我不在乎。如果有人告诉我去做,我会的——这些评论不会带来任何积极或消极的价值
...
-5-我强烈建议大家不要这样做。一旦你们看到这些默认的注释/元信息,你们就应该从类中删除它们

我还坚信,向你们解释你们的选择并回答这个问题是非常重要的:你们为什么这么认为?(我个人一直努力遵守这条规则)。所以我也鼓励你们解释你们为特定类型给出的观点

我将在大约一周内以最多的票数接受答案

PS.:你们中的一些人可能会变瘦
public class UserServiceImpl implements IUserService {

    ////////////////////////////////////////////////////////////////////////
    // Constants
    ////////////////////////////////////////////////////////////////////////

    /** Logger for this class */
    @SuppressWarnings("unused")
    private static final Log LOG = LogFactory.getLog(UserServiceImpl.class);

    ////////////////////////////////////////////////////////////////////////
    // Attributes
    ////////////////////////////////////////////////////////////////////////

    /** User DAO */
    private IUserDao userDao;

    ////////////////////////////////////////////////////////////////////////
    // Constructors
    ////////////////////////////////////////////////////////////////////////

    /**
     * Default constructor
     */
    public UserServiceImpl() {
    }

    public UserServiceImpl(final IUserDao userDao) {
        this.userDao = userDao;
    }

    ////////////////////////////////////////////////////////////////////////
    // Getter and Setter methods
    ////////////////////////////////////////////////////////////////////////

    /**
     * @return value of {@link #userDao} field
     *
     */
    public IUserDao getUserDao() {
        return userDao;
    }

    /**
     * Sets {@link #userDao} field
     *
     * @param userDao User DAO
     */
    public void setUserDao(final IUserDao userDao) {
        this.userDao = userDao;
    }

    ////////////////////////////////////////////////////////////////////////
    // Implemented/Overridden methods
    ////////////////////////////////////////////////////////////////////////

    /**
     *
     * @see IUserService#saveUser(User)
     */
    @Override
    public void saveUser(final User user) {
        fillMissingFields(user);
        userDao.saveUser(user);
    }

    /**
     *
     * @see IUserService#getUserById(Integer)
     */
    @Override
    public List<User> getUserById(final Integer id) {
        return userDao.getUserById(id);
    }

    /**
     *
     * @see IUserService#getUserList(IEnvironmentContext)
     */
    @Override
    public List<User> getUserList(final @SuppressWarnings("unused") IEnvironmentContext context) {
        return userDao.getUserList();
    }

    ////////////////////////////////////////////////////////////////////////
    // Helper methods
    ////////////////////////////////////////////////////////////////////////

    private void fillMissingFields(final User user) {
        user.setLastUpdated(new Date());
    }

    ////////////////////////////////////////////////////////////////////////
    // toString() method
    ////////////////////////////////////////////////////////////////////////

    /**
     *
     * @see Object#toString()
     */
    @Override
    public String toString() {
        return "UserServiceImpl {...}";
    }
}