2016-05-11 8 views
0

Unten sind die Implementierung von zwei Klassen Temp1 und Temp2.
Ich möchte wissen, Temp2 Klasse ist besser als Temp1 wegen der Reduzierung der Redundanz des Codes.
Gibt es einen größeren Vorteil mit Temp2 Klasse statt Temp1?Verschiedene Implementierung von Klassen

Temp1:

class Temp1 { 

    String var1, var2, var3, var4; 

    method1() 
    { 
    var1 = "m1_1"; 
    var2 = "m1_2"; 
    var3 = "m1_3"; 
    var4 = "m1_4"; 
    } 

    method2() 
    { 
    var1 = "m2_1"; 
    var2 = "m2_2"; 
    var3 = "m2_3"; 
    var4 = "m2_4"; 
    } 

    method3(a,b,c,d) 
    { 
    var1 = a; 
    var2 = b; 
    var3 = c; 
    var4 = d; 
    } 

} 

Temp2:

class Temp2 { 

String var1, var2, var3, var4; 

method1() 
{ 
assign_values("m1_1","m1_2","m1_3","m1_4"); 
} 

method2() 
{ 
assign_values("m2_1","m2_2","m2_3","m2_4"); 
} 

method3(a,b,c,d) 
{ 
assign_values(a,b,c,d); 
} 

assign_values(p,q,r,s){ 
var1 = p; 
var2 = q; 
var3 = r; 
var4 = s; 
} 

} 
+2

Ich würde vorschlagen, dass interne Methoden, die Instanzvariablen aktualisieren ist fast immer vorzuziehen, so kann man die Überprüfung der potenziellen Variablen implementieren. In der 'assign_values ​​()' Methode könnte man sicherstellen, dass 'p' beispielsweise <100 ist. In der Klasse "temp1" müsste diese Überprüfung dupliziert werden. – KevinO

+2

Dies ist eine Codereview-Frage. Sein Off-Topic in Stackoverflow IMO. Bitte schließen und öffnen Sie erneut unter http://codereview.stackexchange.com/ –

+3

'method3 (...)' und 'assign_values ​​(...)' machen genau dasselbe. Du brauchst beides nicht. –

Antwort

2

Sie sollten es implementieren wie diese Redundanz zu reduzieren (umgerechnet bis zu einem gewissen gültigen Java-Code):

public class Temp { 

    public String var1, var2, var3, var4; 

    public void method1() { 
     method3("m1_1", "m1_2", "m1_3", "m1_4"); 
    } 

    public void method2() { 
     method3("m2_1", "m2_2", "m2_3", "m2_4"); 
    } 

    public void method3(String a, String b, String c, String d) 
    { 
     var1 = a; 
     var2 = b; 
     var3 = c; 
     var4 = d;  
    } 
} 

Von c Die Klasse macht nicht wirklich viel Sinn und alle Variablen- und Methodennamen sind schlecht gewählt, aber das ist wahrscheinlich nicht dein Punkt.

Eigentlich sollten alle drei Methoden wahrscheinlich als Konstruktoren implementiert werden. Das einzige Problem ist, dass Sie nicht zwei verschiedene Standardkonstruktoren haben können (die ohne Argumente). Aber Sie könnten Factory-Methoden verwenden:

public class Temp { 

    public String var1, var2, var3, var4; 

    public static Temp method1() { 
     return new Temp("m1_1", "m1_2", "m1_3", "m1_4"); 
    } 

    public static Temp method2() { 
     return new Temp("m2_1", "m2_2", "m2_3", "m2_4"); 
    } 

    public Temp(String a, String b, String c, String d) 
    { 
     var1 = a; 
     var2 = b; 
     var3 = c; 
     var4 = d;  
    } 
} 
Verwandte Themen