2009-03-26 6 views
4

Verzeihen Sie mir, wenn dies ein geringfügiger Missbrauch des Systems ist, aber ich möchte, dass andere StackOverflow-Benutzer eine Debatte beilegen, die ein Kollege und ich haben.Soll eine Funktionalität, die nur einmal benutzt wird, in ein UserControl gehen?

Als eine allgemeine Regel bevorzuge ich jede separate Funktionalität in einem UserControl gekapselt werden, auch wenn ich weiß, dass es nur einmal verwendet wird.

Mein Kollege wird in diesem Fall die Erstellung eines UserControls vermeiden und ein WebForm verwenden. Wenn es nur einmal verwendet wird, wird ein UserControl erstellt - es fügt nur einen zusätzlichen, unnötigen Overhead hinzu.

Ich argumentiere, dass der zusätzliche Aufwand vernachlässigbar ist und es für besser organisierten Code sorgt, und wer weiß, Sie können die Funktionalität irgendwann in der Zukunft wiederverwenden.

Wer hat Recht?

bearbeiten

Es sieht aus wie ich schon einige Antworten bekommen kann - meinen Kollegen und ich habe vereinbart, dass wir die Antworten in einem Tag zählen würden und preis der richtige Antwort auf welche auch immer Argument den bekommt die meisten Stimmen.

Weitere bearbeiten

Sieht aus wie ich der Gewinner bin: D

ich Beiträge ignoriert haben, die wir vorschlagen, sind beide Recht und zählte eine Antwort zur Unterstützung jeder Seite als +1, und jede Abstimmung über diese Antwort als +1. Ich gewinne 11-6.

Antwort

7

Wenn es den Code besser organisiert, werde ich immer versuchen, separate Benutzersteuerelemente zu erstellen.

Dies macht die Kommunikation wirklich einfacher zu folgen. Denken Sie SRP.

+0

Dies kann auch den Code leichter lesbar machen. – decasteljau

+0

Amen Bruder. Amen ... – Salamander2007

4

Warum lassen Sie es nicht einfach im WebForm und refactor zu einem UserControl, wenn Sie tun diese Funktionalität wiederverwenden? Denken Sie daran: YAGNI.

Sicher, Code wird besser organisiert, aber es gibt auch ein Gleichgewicht mit der Menge an Klassen/Dateien, die Ihr Projekt hat - wenn Sie über Bord gehen, kann es entmutigend werden, Sachen zu finden.

+0

Richtig, siehe http://stackoverflow.com/questions/437/what-is-your-solution-to-the-fizzbuzz-problem/1902#1902 Enterprise Fizzbuzz für absichtliche Über-Engineering! – Davy8

3

Ich würde es nicht in einem UserControl einkapseln, so tut mir leid, aber ich teile die Meinung Ihres Kollegen. UserControls sind speziell für wiederverwendbaren Inhalt gedacht (es ist ein Steuerelement, richtig?). Halte es einfach, übertreibe nicht, erschaffe nicht mehr Arbeit für dich selbst, denn "du kannst die Funktionalität irgendwann in der Zukunft wiederverwenden". Du darfst nicht. Sie werden es zur Kontrolle machen, wenn Sie es wirklich brauchen.

+0

Sie gehören also zu jenen Puristen, die nie Tabellen für Design verwenden, weil "sie für Tabellendaten gedacht sind"? – User

+0

Ja, ich bin. :) Ich benutze DIVs für das Layout. –

+0

+1 für den Puristen !!!!! – Treb

2

Ich bevorzuge auch, alles in User Controls zu setzen. Zum einen ist es besser organisiert, und Sie können nicht sicher sein, dass Sie dieses Stück UI nicht irgendwo anders auf Ihrer Website platzieren wollen.

Einfache Antwort: Sie haben Recht, Ihr Kollege hat Unrecht.

1

Betrachten Sie den Fall, in dem es Dutzende solcher Codeabschnitte auf einer Seite gibt: Macht es Sinn, dass alle in einer Form leben oder sollte jede Form ihre eigene Kontrolle haben?

Um nicht zu sagen, dass Sie 100% ig richtig dabei sind, aber dies könnte ein Weg sein, ein Loch in der Ansicht Ihres Kollegen auf diesem zu stoßen.

0

ich argumentieren, dass der zusätzliche Aufwand

Vereinbarte vernachlässigbar ist - versuchen, zu Mikro optimize Leistung durch den Verzicht auf Usercontrols sollte auf sein runzelte die Stirn.

und macht es für besser organisierten Code,

Es kann, und wenn es in Ihrem speziellen Kontext tut - dann, ja, es ist eine gute Idee.

und wer weiß, können Sie die Funktionalität irgendwann in der Zukunft wiederverwenden.

Ja, Sie können. Oder du magst es nicht. Dies ist eine Wäsche, und am besten widerlegt von Y (P) AGNI (Sie (wahrscheinlich) wird es nicht brauchen).

Also - um es zusammenzufassen, es hängt davon ab, ob es wirklich für besser organisierten Code sorgt.

1

Sogar selbst verwenden Sie den Code nur einmal - den Code in ein usercontrol zu setzen, gibt Ihnen die Möglichkeit des Fragment-Caching. Wenn Ihre App leistungskritisch ist, würde ich Benutzersteuerelemente bevorzugen. Zu dem Zeitpunkt, an dem Sie Ihre App testen, ist es unwahrscheinlich, dass Sie Ihren Code in Benutzersteuerelemente zurückverwandeln können, um den Vorteil des Fragmentcachings zu nutzen.