Утилита класса для форматирования
Я реализовал служебный класс FormatUtils (последний со статическими методами), который преобразует данные из объектов Employee в пригодный для использования формат (например, снимая со знака '$' строки и анализируя их как двойные, переформатируя имена в имена и фамилии). Теперь где-то в моем коде мне нужен метод, который форматирует множество полей данных Employee для вывода в виде единой строки (отправленной позже в stdout). Имеет ли смысл помещать его в этот служебный класс, когда он, вероятно, понадобится только для использования с объектами Employee, а не общего назначения?
2 ответа
Я бы, вероятно, переместить методы для форматирования одного Employee
в Employee
сам класс. Если есть другое / дополнительное форматирование, которое необходимо сделать для списка сотрудников (например, заголовки строк и столбцов), я мог бы поместить это в служебный метод (или класс, если его необходимо использовать повторно).
Не использовать Employee#toString()
отформатировать его для читателей-людей; используйте этот метод только для отладки. В противном случае вы не сможете использовать что-либо в классе для отображения его статуса в отладчике. Я знаю примитивные обертки и использование перечислений toString()
для этого, но это в основном для использования их с конкатенацией строк.
Что означает "удаление символов $ со строк и их разбор как двойные"? Вы храните зарплату сотрудника в виде строки? Не делай этого. По большому счету, валютные ценности должны быть BigDecimal
или же BigInteger
объекты. Вы вводите знаки доллара при форматировании с помощью NumberFormat.getCurrencyInstance()
, Это также облегчает работу базы данных.
Если вы заняты разделением имен на имена и фамилии, вам действительно нужно Name
класс, и вы должны предоставить форматеры для этого. Для работы JPA вы можете сделать переменную экземпляра Name@Embeddable
,
Вы можете дать Employee
методы формата класса, или вы можете иметь свой класс реализовать java.util.Formattable
возможно принятие альтернативного флага форматирования. Вы могли бы даже использовать "бесполезное программирование" и дать Employee
методы как:
public void writeToFormally(final Appendable a) {...}
public void writeToSimply(final Appendable a) {...}