2009-03-10 9 views
0

Ich denke über einige Dinge im Zusammenhang mit Runtime-Typ Info, und ich hätte gerne ein Feedback von Programmierern, die an viel größeren Projekten arbeiten als ich. Ist es vernünftig zu erwarten, dass jedes Programm mehr als 65536 (2^16) benutzerdefinierte Typen (Klassen und Strukturen) in einem einzigen Projekt hat? Dies bedeutet nicht bedeuten 65536 Instanzen, bedeutet es 65536 Typen. Wäre es in der Praxis überhaupt von Bedeutung, wenn ein Compiler Sie auf 65536 Klassen/Strukturen in einem Projekt beschränkt?Ist es sinnvoll, in großen Projekten mehr als 65536 benutzerdefinierte Typen zu verwenden?

Antwort

1

Nein, denn an diesem Punkt sollten Sie stark Projekte entkoppeln. Nur die "öffentlichen" Typen müssen projektübergreifend miteinander interagieren. Dann wird die Begrenzung: maximal 2^16 Typen pro Projekt und maximal 2^16 öffentlichkeitswirksame Typen in allen Projekten.

0

Wer sagt Typ Info == 16-Bit-Nummer?

+0

Es ist hypothetisch, für ein Schema, das ich in Betracht ziehe. – dsimcha

+0

Nun, machen Sie es eine 32-Bit-Nummer dann - eine zusätzliche 2-Byte pro Klasse wird nicht viele Probleme verursachen. –

+0

Es hat mit Zeigern zu RTTI zu tun, die von Garbage Collectors gespeichert werden, also wären es zusätzliche zwei Bytes pro * Instanz *. – dsimcha

1

Ich würde dies als eine Einschränkung der Umwelt betrachten. In einigen Systemen werden Typen automatisch generiert. Bei diesen Gelegenheiten würde eine große Anzahl von Arten geschaffen werden. Selbst wenn diese nicht in der Nähe von 65536 sind, warum sollten Sie eine solche Einschränkung auferlegen?

In allen modernen Anwendungen/Systemen wird die Anzahl aller Objekte nur durch den Systemspeicher begrenzt. Es ist ein Rückschritt, irgendeine andere Einschränkung zu haben.

1

Es ist eine Frage der Prioritäten. Wird die Zeit (und der Umfang des Codes) für die Implementierung einer "unbegrenzten" Anzahl von Typen verwendet, die im aktuellen Projektumfang gerechtfertigt sind?

Sie sollten auch die Wartbarkeit berücksichtigen, wenn das Projekt/der Compiler wächst.

Ich würde sagen, dass spezielle Fälle wie eine übergewichtige Menge von Arten nicht wirklich rechtfertigen dies zu berücksichtigen, wenn Sie nicht speziell darauf abzielen. Wer ist Ihre Zielgruppe?

UPDATE: In einigen Fällen Sie eigentlich wollen könnten sich zu beschränken, um effizienter in einem anderen Aspekt zu werden (wie Speicher, Ausführungsgeschwindigkeit, etc.) Solange es klar dokumentiert Ich glaube, Sie sollten gehen Sie mit, was Ihren spezifischen Bedürfnissen entspricht.