2009-06-15 4 views
1

Ich habe gerade den gleichen Code zweimal kopiert und eingefügt.Sollte mein Funktionscode in eine andere Quelldatei aufgeteilt werden?

Im Moment habe ich eine Funktion, die ich zwischen zwei Quelldateien teilen möchte. Es wird die gleichen Variablen aus beiden Quelldateien übergeben. Wenn ich mich nicht "wiederholen" möchte, wäre das der beste Weg? Wenn beide Dateien andere Funktionen haben, die separat sind, sollten diese in der Bibliotheksdatei oder in der Quelldatei enthalten sein? Wie entscheiden Sie, ob eine Klasse geeignet ist? Wie bestimmen Sie, wann Sie anfangen sollen, Dinge auseinander zu brechen?

Antwort

4

Wiederhole dich nicht. Erstellen Sie eine Include-Datei mit der gemeinsamen Funktion.

2

Sie sollten ein objektorientiertes Analyse- und Designbuch lesen. In diesen Fragen geht es um die OO-Prinzipien.

Ihre bessere Option in meiner bescheidenen Meinung ist ein Buch wie: HF: OOA&D. Ich habe es gelesen und es beantwortet ALLE deine Fragen.

Wenn zwei Dateien Code wiederholen, sollten Sie den Code in einer Funktion auslesen und in den 2 Dateien verwenden.

Denken Sie daran, dass eine Klasse nur eine Verantwortung hat, dann müssen Sie diese Funktion an die richtige Stelle setzen, zum Beispiel, wenn es ein Dienstprogramm-Code ist, können Sie es nicht in ein Utilities-Modul einfügen.

Wenn eine Klasse geeignet ist? Sie müssen einige Domain-Anaylisis zu den Anwendungsfällen Ihres Problems machen und sich die Substantive ansehen, die die Kandidaten-Klassen Ihres Programms sind.

Wie ermittelt man das? Sie müssen Ihr Problem vor der Kodierung analysieren und entwerfen.

Kurz gesagt, empfehle ich Ihnen das Buch, es ist alles, was Sie brauchen: PP

2

mit oben Antwort Agree - nicht wiederholen (haha die Ironie jemand anderem beantworten wiederholt zu haben!).

In Bezug auf Klassen vs Funktionen würde ich nicht sagen, dass es eine eindeutige Antwort gibt.

Ich habe Argumente gehört, dass wir manchmal aus Gründen der Geschwindigkeit auf OO-Funktionalität verzichten sollten, aber ich denke, dass das heutzutage mit der Geschwindigkeit von Computern nichts mehr zu tun hat. Ich persönlich bevorzuge immer Klassen, sobald die App/Site beginnt, etwas größer als sehr klein zu bekommen. Sie können beispielsweise zwei Funktionen zusammen verwenden, um ein bestimmtes Ergebnis auf einer Seite zu erzielen. Die Wiederverwendung würde dann bedeuten, dass Sie a) beide wieder aufrufen müssen oder b) eine dritte Funktion schreiben müssen, um die andere 2 aufzurufen. In diesem Fall sieht eine Klasse ansprechender aus

Klassen sind leicht testbar, insbesondere bei Mocking-Frameworks. Klassen machen es auch einfach, ein Objekt mit vielen Daten zu serialisieren

1

Vor einiger Zeit las ich einen Artikel (ich glaube an Coding Horror, aber korrigieren Sie mich, wenn ich falsch liege) über Kopieren/Einfügen Code. Wenn Sie viel in Ihren Code kopieren/einfügen, sollten Sie wirklich darüber nachdenken, es zu einer Funktion zu machen. Dies ist eine gute Übung, da Sie Ihren Code vereinfachen und nicht nur optimieren, sondern auch erstellen können einfacher für andere Entwickler zu folgen.

Verwandte Themen