2012-04-13 1 views
-1

Ich bin über zwei Probleme gestolpert, soweit der Code-Stil geht und ich frage mich nur, was ist der beste Weg, um sie zu lösen?Formatieren von großen Methoden

Die erste ist Methoden mit vielen Parametern, ich habe eine von zwei Dingen (mit Java für Demonstrationszwecke) getan.

someObj.bigMethod(someData, 
        moreData, 
        evenMoreData, 
        moar, 
        andMore); 

und

someObj.bigMethod 
    (
     someData, 
     moreData, 
     evenMoreData, 
     moar, 
     andMore 
    ); 

Manchmal soll auch den ganzen Weg zurück.

Was Deklaration von Methoden würde ich # 1

class SomeClass 
{ 
    public void someMethod(int someData, 
          int moreData, 
          int evenMoreData, 
          int moar, 
          int andMore) 
    { 
     // Blah 
    } 
} 

Für Anrufe Ich mag # 2 bevorzugen, weil es schneller ist, zu schreiben (ja, ich bin faul) und steigen Sie ist die Arbeit getan. Aber das kann natürlich verwirrend sein, weil es einen ähnlichen Stil verwendet, wie ich geschweifte Klammern formatiere, und auf den ersten Blick könnte man denken, dass es eine Erklärung von etwas ist, vielleicht weiß ich es nicht, es ist schwer zu sagen, wann ich derjenige bin es tatsächlich zu schreiben.

Das andere Problem, auf das ich stoße, obwohl nicht oft, ist, wenn eine Methode in einer Klasse innerhalb einer Klasse innerhalb einer Klasse ist und so weiter. Ich weiß nicht einmal, wie ich dieses Durcheinander zu formatieren habe, ich vermute nur, dass es eine schlechte Übung ist, es zu haben, aber hey, es passiert.

someObj.anotherObj.yetAnotherObj.betterThanTheNextObj.nextObj.someMethod(); 

Vielleicht nicht so extrem Ausmaß aber ähnlich, vor allem, wenn Namen groß sind.

Antwort

0
  1. Für Erklärungen, würde ich auf jeden Fall für Methode auch 1

  2. für Methodenaufrufe: Wenn die indirection Kette zu lang wird, können Sie es immer schneiden mithilfe von Variablen:

    var currentAnotherObj = someObj.anotherObj.yetAnotherObj; var currentNextObj = currentAnotherObj.betterThanTheNextObj.nextObj;

    currentNextObj.someMethod();

HTH