2015-05-02 2 views
5

Я пишу javadoc для своего веб-приложения jsp. Поэтому у меня есть класс (созданный в соответствии с шаблоном Command и расположенный на уровне сервиса), называемый AcceptOrder. Этот класс содержит метод execute и вызывает метод acceptOrder из уровня DAO. Класс находится в сервисном слое.javadoc для классов обслуживания и классов DAO с одинаковыми целями

/** 

* Class allows customer order (which was assigned by dispatcher) be accepted  by driver. 
* 
* 
*/ 


public class AcceptOrder implements Command { 

private static final String USER_ATTRIBUTE = "user"; 
private static final String ORDER_ID_ATTRIBUTE = "order_id"; 
private static final String DAO_COMMAND_EXCEPTION_MESSAGE = "Exception on executing DAO command"; 
private static final String WRONG_ORDER_ID_EXCEPTION_MESSAGE = "Wrong order ID"; 
/** {@inheritDoc} 
* <p> Accepts user order, which was assigned by dispatcher. 
* @param request request object 
* @param response response object 
*/ 
@Override 
public String execute(HttpServletRequest request, HttpServletResponse response) throws CommandException { 
    DriverDao driverDao = MySqlDaoFactory.getInstance().getDriverDao(); 

    try { 
     User user = (User) request.getSession().getAttribute(USER_ATTRIBUTE); 
     int userId = user.getId(); 
     int orderId = Integer.valueOf(request.getParameter(ORDER_ID_ATTRIBUTE)); 
     driverDao.acceptOrder(orderId, userId); 
    } catch (DaoException e) { 
     throw new CommandException(DAO_COMMAND_EXCEPTION_MESSAGE, e); 
    } catch (NumberFormatException e) { 
     throw new CommandException(WRONG_ORDER_ID_EXCEPTION_MESSAGE, e); 
    } 
    return PageManager.getInstance().generatePageRequest(CommandName.SHOW_DRIVER_ORDER); 
} 

} 

АОЛ У меня есть метод в классе драйвера DAO (в DAO слое) называется acceptOrder, который подключается к базе данных и применить некоторые изменения в соответствии с параметрами.

@Override 
    public void acceptOrder(int orderId, int userId) throws DaoException { 
     ConnectionPool connectionPool = null; 
     Connection connection = null; 
     PreparedStatement preparedStatement = null; 
     ResultSet result = null; 
     try { 
      connectionPool = ConnectionPool.getInstance(); 
      connection = connectionPool.takeConnection(); 
      preparedStatement = connection.prepareStatement(SQL_ACCEPT_ORDER); 
      preparedStatement.setInt(1, userId); 
      preparedStatement.setInt(2, orderId); 
      preparedStatement.executeUpdate(); 
     } catch (SQLException e) { 
      throw new DaoException(STATEMENT_EXCEPTION_MESSAGE, e); 
     } catch (ConnectionPoolException e) { 
      throw new DaoException(CONNECTION_POOL_EXCEPTION_MESSAGE, e); 
     } finally { 
      connectionPool.closeConnection(connection, preparedStatement, result); 
     } 
    } 

Так что вопрос: Что Javadoc я должен написать для него, и мой Javadoc для метода команды выполнить правильно? Что должно быть написано в описании обоих методов. Похоже, что их описания одинаковы - принимайте заказ клиента.

ответ

0

Я думаю, вам следует лучше объяснить, что делает метод, случаи, когда выбрано исключение, возвращаемые значения, что действительно возвращается и почему. Как назвать этот метод, примеры. Общее использование, используемые зависимости, общий рабочий процесс, валидация, моделирование вы можете объяснить на уровне класса.

0

Я стараюсь следовать приведенным ниже правилам.

  1. Имеет ли код, который вы пишете, API для внешних пользователей? Или, может быть, это всего лишь внутренняя реализация, скрытая за другими интерфейсами и классами (и они должны предоставить javadoc)?
  2. Когда вы пишете документ, подумайте, что вы хотели бы видеть по API, который вы не знаете
  3. Не пишите очевидные вещи (например, тривиальный javadoc для геттеров и сеттеров, не просто повторяйте имя метода без пробелы и т. д.)
  4. Возможно, вы не должны делиться данными о реализации, так как это не имеет значения для пользователя вашего API. Тем не менее, иногда есть некоторые сведения, которые вам нужно поделиться, чтобы предупредить пользователей, чтобы они не злоупотребляли вашим API. Если вам нужно оставить сообщение для будущих разработчиков кода, оставьте это в комментарии к коду, а не общественным javadoc
  5. Документ null Обращение. Принимается ли это значение параметра? Если да, то какой смысл имеет это? Может ли метод вернуть null? Если да, то при каких обстоятельствах?
  6. Исключения для документов. Предоставьте полезную информацию для клиентов API, чтобы они могли надлежащим образом обрабатывать их.
  7. Документируйте любые предположения о состоянии класса. Должен ли объект находиться в определенном состоянии для вызова метода, потому что иначе он будет генерировать исключение?
  8. Наследование: класс, предназначенный для расширения (в противном случае он должен быть помечен final, справа)? Если да, должны ли подклассы подчиняться каким-либо конкретным правилам?
  9. Безопасность резьбы: безопасна ли классная резьба? Если класс предназначен для расширения, как подклассы должны сохранять безопасность потоков?
  10. В зависимости от вашего домена производительность может быть очень важной. Возможно, вам нужно документировать сложность времени и пространства.

И снова, всегда старайтесь думать, какую информацию вы ожидаете от внешней библиотеки. Я много использую Java SDK и Java EE javadoc. Некоторые ее части великолепны.От других я ожидал бы информации, например, если я могу использовать объект из нескольких потоков или нет, но в нем нет ни единого слова, и я должен ссылаться на источники (и никогда не будет гарантии, что мои выводы будут правильными).

С другой стороны, подумайте также, если вы должны написать комментарий javadoc вообще. Стоит ли оно того? Будут ли у вас внешние клиенты вашего API (особенно без доступа к исходному коду)? Если вы это сделаете, вы, вероятно, также должны написать a reference manual. Если у вас небольшое приложение и небольшая команда, может быть проще просто снять кусочек короткого метода.

Обратите внимание, что я не говорю, что вы не должны писать javadoc вообще. Я пытаюсь сказать, что javadoc - это инструмент с определенной целью. Подумайте, поможет ли вам написать конкретный фрагмент javadoc.

Смежные вопросы