tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
311
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    xylibri xylibri ist offline Grünschnabel
    Registriert seit
    Sep 2007
    Beiträge
    2
    Hallo,

    ich habe folgendes Problem zu lösen:
    Es gibt zwei Klassen, A und B, B wird von A abgeleitet und eine der Methoden wird überladen.
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
    Class A 
    {
       protected void myMethod()
       {
          doThis();
       }
       protected void yourMethod(){};
       protected void theirMethod(){};
    }
     
    Class B extends A 
    {
       protected void myMethod()
       {
          doThat();
       }
    }

    Die Klassen werden von verschiedenen Entwicklern implementiert (EntwicklerA und EntwicklerB), die nichts voneinander wissen.
    Später ändert EntwicklerA diee Methode der Klasse A:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    Class A 
    {
       protected void myMethod()
       {
          doThis();
          yourMethod();
          theirMethod();
       }
       protected void yourMethod(){};
       protected void theirMethod(){};
    }

    EntwicklerB aktualisiert die KlasseA. Welche Konzepte gibt es, um dem EntwicklerB "mitzuteilen", dass er seine Methode in der KlasseB evtl. aktualisieren soll?

    Eine der Möglichkeiten z.B. ist, eine abstracte Methode mit der Versionsnummer hinzuzufügen:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    Class A 
    {
       ...
       abstract void version1(){}
    }
     
    Class B extends A 
    {
       protected void myMethod()
       {
          void version1(){}
       }
    }

    Nach jeder Änderung in der KlasseA ändert EntwicklerA die Methode version1():
    Code :
    1
    2
    3
    4
    5
    
    Class A 
    {
       ...
       abstract void version2(){}
    }

    Damit bekommt EntwicklerB mit, dass die KlasseA sich geändert hat.

    Nachteil: Umständlich, hässlich, 1 Methode für die ganze Klasse (ich hätte das gerne für jede Methode)

    Weißt jemand Konzepte, auch externe Tools (z.B. Hashes von Methoden zu erstellen), wie man dieses Problem lösen kann?

    Danke im Voraus.

    Gruß
    xylibri
     

  2. #2
    mattit-jah mattit-jah ist offline Mitglied Silber
    Registriert seit
    Apr 2005
    Ort
    Freiburg i. Breisgau
    Beiträge
    83
    Wenn ich das richtig verstanden habe, arbeiten zwei Entwickler gleichzeitig an der gleichen Klasse? Ist das Sinnvoll?

    Hast du dir schon SVN oder CVS angeschaut?
     

  3. #3
    xylibri xylibri ist offline Grünschnabel
    Registriert seit
    Sep 2007
    Beiträge
    2
    Die Arbeiten an verschiedenen Klassen: EntwicklerA an A und EntwicklerB an B. Die beiden können auch Versionsverwaltung benutzen. Nach dem Aktualisieren bleibt das Problem. Logs anzuschauen hilft nicht wirklich, wenn sich 1000 Dateien geändert haben, man aber nur an 2 interessiert ist.
     

  4. #4
    Avatar von Oliver Gierke
    Oliver Gierke Oliver Gierke ist offline Mitglied Rubin
    Registriert seit
    Dec 2003
    Ort
    Mannheim
    Beiträge
    1.457
    Zitat Zitat von xylibri Beitrag anzeigen
    Die Arbeiten an verschiedenen Klassen: EntwicklerA an A und EntwicklerB an B. Die beiden können auch Versionsverwaltung benutzen. Nach dem Aktualisieren bleibt das Problem. Logs anzuschauen hilft nicht wirklich, wenn sich 1000 Dateien geändert haben, man aber nur an 2 interessiert ist.
    Dann hast du ein methodisches Problem. Jemand, der 1000 Dateien auf einmal commitet bekommt ein Problem. Mit seinen Kollegen. Genau aus dem von dir geschilderten Grund. Ich würde definitiv nicht anfangen, Methoden mit Versionsinformationen zu versehen. Wer passt mir denn dann all die Clients der Methode an? Ausserdem werden dann die Methodennamen unheimlich hässlich und es gäbe unheimlich viel doppelten Code. Definitiv keine Lösung.

    Es ist einfach grundsätzlich keine Idee zwei Leute gleichzeitig an einer Implementierung arbeiten zu lassen. Es sollte regelmäßig mit SPRECHENDEN Kommentaren commitet werden. Sowas wie "Suchfunktion hinzugefügt" ist OK, was nicht geht ist "Änderungen gemacht" oder "Überarbeitet".

    Ich committe zum Teil jede halbe Stunde bzw. immer wenn wieder ein compilierbarer sinnvoller Codezustand gegeben ist (Testcases laufen usw.).

    Hilfreich ist die Regel, dass derjenige die Konflike mergen muss, der als später eingecheckt hat. Wer das einmal ein zwei Tage nicht gemacht hat, während Kollegen vernünftig arbeiten, ändert sein Verhalten ganz schnell

    REINHAUN!
     
    In theory, there is no difference between theory and practice. In practice, there is!

    www.olivergierke.de

Ähnliche Themen

  1. Klasse aus Methode aufrufen
    Von Morpheyz im Forum Java Grundlagen
    Antworten: 6
    Letzter Beitrag: 04.05.09, 13:00
  2. settimeout in eigener klasse auf eine Methode der Klasse
    Von user2580 im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 12.04.09, 16:26
  3. Antworten: 7
    Letzter Beitrag: 11.12.07, 15:33
  4. Antworten: 2
    Letzter Beitrag: 06.02.06, 19:57
  5. split() Methode für Java Version 1.3.1_1
    Von nautiLus` im Forum Java
    Antworten: 2
    Letzter Beitrag: 09.01.04, 14:17