Cześć
Chciałbym poprosić was o porównanie dwóch sposobów na konstrukcje obiektów oraz zagnieżdżenie ifów. Próbuję napisać wydajniejszy kod i co do tych dwóch kwestii nie jestem pewien.
Niech przykładem będą te dwie prymitywne klasy. Czytałem, że jak tworzy się dużą ilość obiektów to wywoływanie super() może być mało wydajne zwłaszcza, gdy ustawiamy dla każdego obiektu taką samą zmienną statyczną.
public class Tree
{
protected static int size;
public Tree(int size)
{
this.size = size;
}
}
public class Maple extends Tree
{
public Maple()
{
super(5);
}
}
W drugim zestawie tych samych klas zastosowałem przypisanie wielkości klonu w bloku statycznym. Czy takie rozwiązanie jest lepsze? Nie spotkałem się osobiście by ktoś stosował coś takiego i stąd moja niepewność czy taki kod będzie wydajniejszy i działał tak samo jak ten z użyciem słowa kluczowego super.
public class Tree
{
protected static int size;
}
public class Maple extends Tree
{
static
{
size = 5;
}
}
Druga wątpliwość dotyczy zagnieżdżonych ifów, które właściwie można zredukować tylko do jednego. Czy zamiana kodu przyniesie korzyść, czy kompilator javy sam to jakoś uprości?
if(((point.x >= pointA.x && point.x <= pointB.x) || (point.x <= pointA.x && point.x >= pointB.x))
&& ((point.y >= pointA.y && point.y <= pointB.y) || (point.y <= pointA.y && point.y >= pointB.y))
&& ((point.z >= pointA.z && point.z <= pointB.z) || (point.z <= pointA.z && point.z >= pointB.z)))
{
return point;
}
if((point.x >= pointA.x && point.x <= pointB.x) || (point.x <= pointA.x && point.x >= pointB.x))
{
if((point.y >= pointA.y && point.y <= pointB.y) || (point.y <= pointA.y && point.y >= pointB.y))
{
if((point.z >= pointA.z && point.z <= pointB.z) || (point.z <= pointA.z && point.z >= pointB.z))
{
return point;
}
}
}
Dziękuję z góry za pomoc.