Для служебного класса, полностью не имеющего состояния в Java, я предлагаю объявить класс public
и final
и иметь частный конструктор для предотвращения создания экземпляров. Ключевое слово final
предотвращает подклассы и может повысить эффективность во время выполнения.
Класс должен содержать все static
методы и не должен объявляться abstract
(поскольку это означало бы, что класс не является конкретным и должен быть каким-то образом реализован).
Классу следует дать имя, соответствующее его набору предоставленных утилит (или «Утилита», если класс должен предоставлять широкий диапазон утилит без категорий).
Класс не должен содержать вложенный класс, если только вложенный класс не должен быть служебным классом (хотя эта практика потенциально сложна и ухудшает читаемость).
У методов в классе должны быть соответствующие имена.
Методы, используемые только самим классом, должны быть закрытыми.
Класс не должен иметь каких-либо нефинальных / нестатических полей класса.
Класс также может быть статически импортирован другими классами для улучшения читаемости кода (однако это зависит от сложности проекта).
Пример:
public final class ExampleUtilities {
// Example Utility method
public static int foo(int i, int j) {
int val;
//Do stuff
return val;
}
// Example Utility method overloaded
public static float foo(float i, float j) {
float val;
//Do stuff
return val;
}
// Example Utility method calling private method
public static long bar(int p) {
return hid(p) * hid(p);
}
// Example private method
private static long hid(int i) {
return i * 2 + 1;
}
}
Возможно, самое главное, чтобы документация по каждому методу была точной и описательной. Скорее всего, методы этого класса будут использоваться очень часто, и хорошо иметь качественную документацию, дополняющую код.
person
initramfs
schedule
09.08.2014
Should I do nothing?
Как дзен. - person awwsmm   schedule 07.12.2018