30.06.2013 Aufrufe

Softwareentwicklung in C++ - ASC

Softwareentwicklung in C++ - ASC

Softwareentwicklung in C++ - ASC

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

494 16. Die <strong>C++</strong> Standard Library<br />

beschließen die Entwickler, dass es nun wirklich an der Zeit wäre, e<strong>in</strong>e allgeme<strong>in</strong>gültige<br />

Version zu schreiben, die auch den anderen Leuten im Team<br />

oder <strong>in</strong> der ganzen Firma zur Verfügung stehen soll. Auf diese Art kam und<br />

kommt es ständig dazu, dass D<strong>in</strong>ge, die zum Teil bereits seit der tiefsten<br />

Ste<strong>in</strong>zeit der <strong>Softwareentwicklung</strong> bekannt und gelöst s<strong>in</strong>d, wieder und wieder<br />

von neuem geschrieben werden. Das bedeutet auch, dass gleichermaßen<br />

immer und immer wieder dieselben Fehler gemacht werden und unter großem<br />

Arbeits- und Zeitaufwand korrigiert werden müssen. Teilweise Schuld an diesem<br />

Phänomen hat auch das sogenannte not <strong>in</strong>vented here Syndrom: “Diese<br />

Implementation kann bei me<strong>in</strong>em Problem nicht gut funktionieren, weil die<br />

Entwickler dies und das nicht bedacht haben / anders gemacht haben / etc.”<br />

Dass solche Kritik nicht so selten auch ihre Berechtigung hat, soll hier gar<br />

nicht <strong>in</strong> Frage gestellt werden.<br />

Die Entwickler der STL hatten also folgende Anforderungen zu erfüllen,<br />

um die Library auch wirklich für e<strong>in</strong>en möglichst breiten Anwenderkreis e<strong>in</strong>setzbar<br />

zu machen:<br />

• Die STL soll allgeme<strong>in</strong>, verständlich und s<strong>in</strong>nvoll genug gehalten se<strong>in</strong>, dass<br />

sie für E<strong>in</strong>steiger und erfahrene Entwickler gleichermaßen e<strong>in</strong>setzbar ist.<br />

• Die STL soll nicht nur leicht und s<strong>in</strong>nvoll bei der Entwicklung von Applikationen<br />

e<strong>in</strong>zusetzen se<strong>in</strong>, sondern sie soll auch e<strong>in</strong>fach und s<strong>in</strong>nvoll als<br />

Basis-Library für andere Library-Entwicklungen dienen können.<br />

• Die allgeme<strong>in</strong>en Implementationen <strong>in</strong> der STL müssen effizient genug se<strong>in</strong>,<br />

dass sie gute Alternativen zu speziellen, sehr problembezogenen Implementationen<br />

darstellen.<br />

• Alle Algorithmen, die <strong>in</strong> der STL Anwendung f<strong>in</strong>den, sollen entweder<br />

Policy-frei se<strong>in</strong>, oder e<strong>in</strong>e Policy als Argument nehmen. Das bedeutet, dass<br />

es z.B. ke<strong>in</strong>en Sortieralgorithmus <strong>in</strong> der STL geben darf, der auf Gedeih<br />

und Verderb aufsteigend sortiert und auch zwangsweise die Implementation<br />

der > < und = Operatoren von den e<strong>in</strong>zelnen Elementen erwartet. Es<br />

kann ja auch se<strong>in</strong>, dass man z.B. absteigend sortieren will und dass man e<strong>in</strong>e<br />

eigene Komparatorfunktion zum Vergleich von Elementen bereitstellen<br />

will. Dies muss dann über entsprechende selbst implementierbare Policies<br />

e<strong>in</strong>stellbar se<strong>in</strong>.<br />

• Alle Teile der STL müssen so designed se<strong>in</strong>, dass sie immer nur genau e<strong>in</strong>e<br />

e<strong>in</strong>zige Aufgabe erfüllen, diese aber so gut wie möglich. Niemals darf e<strong>in</strong>e<br />

Komponente zwei mite<strong>in</strong>ander gekoppelte Rollen erfüllen, denn dies geht<br />

erstens zu Lasten der Allgeme<strong>in</strong>heit und zweitens erlangt man durch explizites<br />

Verknüpfen zweier spezialisierter Komponenten üblicherweise e<strong>in</strong>e<br />

bessere Lösung.<br />

• Komponenten der STL müssen sicher <strong>in</strong> ihrer Verwendung se<strong>in</strong>. Das bedeutet,<br />

dass es nicht vorkommen darf, dass man besondere Interna e<strong>in</strong>er<br />

Komponente kennen muss, um mit ihr s<strong>in</strong>nvoll arbeiten zu können und<br />

z.B. ke<strong>in</strong> Speicherloch zu verursachen.<br />

• Komponenten der STL müssen typsicher se<strong>in</strong>.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!