Класс в конечном итоге выставляет все свои методы и поля на одном уровне и становится крайне неорганизованным.
Было бы лучше организовать это в специализированных подклассах. Ниже приведен пример грязного класса.
public class MyClass
{
//[Properties]
public String value1;
public String value2;
//[Methods used by outside world]
public void job1()
{
job1_task1();
job1_task2();
utilInternal1();
utilExternal1();
}
public void job2()
{
job2_task1();
utilInternal1();
utilExternal1();
}
//[Methods used locally and always specific to a job method]
private static void job1_task1() ...
private static void job1_task2() ...
private static void job2_task1() ...
//[Methods used locally and general to jobs methods]
private static void utilInternal1() ...
//[Methods that could be added to an external class util]
public static void utilExternal1() ...
}
До сих пор я организовал свой код в таких специализированных классах, как Props, Jobs, Tasks, Utils.Internal, Utils.Externals.
Класс экземпляра, такой как Работа и Реквизит. Выставляются через два поля экземпляра. Они будут напрямую использовать переменную экземпляра.
Статический класс можно использовать напрямую, например, Задачи и Утилиты. Они НЕ будут напрямую использовать переменную экземпляра.
public class MyClass
{
public Prop Props = new Prop();
public Job Jobs = new Job();
//[Properties]
private class Prop
{
public String value1;
public String value2;
}
//[Methods used by outside world]
public class Job
{
public void job1()
{
Tasks.Job1.task1();
Tasks.Job1.task2();
Utils.internal.util1();
Utils.external.util1();
}
public void job2()
{
Tasks.Job2.task1();
Utils.internal.util1();
Utils.external.util1();
}
}
//[Tasks for Jobs]
private static class Tasks
{
//[Tasks for job1]
private static class ForJob1
{
private static void task1() ...
private static void task2() ...
}
//[Tasks for job2]
private static class ForJob2
{
private static void task1() ...
}
}
private static class Utils
{
//[methods util used locally]
private static class Internal
{
private static void util1() ...
}
//[methods util generic that could be added to an external class Util]
private static class External
{
public static void util1() ...
}
}
}
Я сделал статическим большинство подклассов, содержащих методы, которые не должны напрямую использовать переменную класса, вместо этого они будут запрашивать их в качестве параметров.
Задачи бесполезны для внешнего класса и имеют смысл только в нашем классе.
private static Task
{
private static ForJob1
{
private static String task1(String value)
{
String result = value + ".";
return result;
}
}
}
Это что-то приемлемое?
Меня также беспокоит использование памяти?