Mir gefällt im übrigen Helmuts rein spekulative Behauptung, die Vorbedingung würde in seiner rein spekulativen Sammlung von Stringfunktionen hundertemale vorkommen, nicht. Die Bedingung würde man nur dort aufführen, wo sie eben wirklich Bedingung ist (sprich, wo das Argument konkret irgendwie dereferenziert wird), also z. B. nicht dort, wo in einer Funktion lediglich sich anderer Hilfsfunktionen bedient wird, oder z. B. auch dort nicht, wo NULL gültiger Eingabewert ist (kann man doch manchmal gut so machen). -- VolkerGlave |
Mir gefällt im übrigen Helmuts rein spekulative Behauptung, die Vorbedingung würde in seiner rein spekulativen Sammlung von Stringfunktionen hundertemale vorkommen, nicht. Die Bedingung würde man nur dort aufführen, wo sie eben wirklich Bedingung ist (sprich, wo das Argument konkret irgendwie dereferenziert wird), also z. B. nicht dort, wo in einer Funktion lediglich sich anderer Hilfsfunktionen bedient wird, oder z. B. auch dort nicht, wo NULL gültiger Eingabewert ist (kann man doch manchmal gut so machen). -- VolkerGlave :Die NULL als gültiger Eingabewert ist eine seltene, schlechte (weil dokumentierungsbedürftige) Ausnahme. Die spekulative Sammlung findet sich unter HelmutLeitner/StringFunktionen und 70-100 reine Stringfunktionen ist vermutlich niedrig gegriffen, ich habe sie noch nicht abgezählt. -- hl ::Das erste akzeptiere ich in dieser Absolutheit nicht. Z. B. bei einer Funktion "void kopiere(char* nach, const char* von)" halte ich es für absolut legitim und für nicht notwendigerweise extra dokumentierungsbedürftig, dass bei einem aktualen Wert NULL des Arguments von halt nichts in das Argument nach kopiert wird. Als Funktonsbeschreibung kann man sagen "Kopiert den String von in den String nach (der über ausreichend Platz verfügen muss)". kopiere(str, "123") kopiert "123" nach str, kopiere(str, "") kopiert einen Leerstring nach str, kopiere(str, NULL) kopiert nichts nach str, läßt str also unverändert, wunderbar, warum nicht. -- vgl :Meine negative Einschätzung von NullAlsInputParameter ist nicht als absolute Wertung zu sehen, sondern als individuelle Festlegung im Rahmen meines persönlichen Coding-Standards. Für mich ist bei solchen Stilfragen immer entscheidend (und das trifft auch IstAssertSinnvoll): kann man eine universelle Regel für die Anwendung des Stilelements entwickeln. Wenn nein, dann ist das Stilelement IMO im Rahmen einer technischen Betrachtungsweise nicht brauchbar, weil eine Implementierung des Interfaces dann kein eindeutiges Ergebnis besitzt. Man kann aber IMO durch geeignete Maßnahmen im Interface-Design Eindeutigkeit herstellen und das Problem entschärfen. Dass die obige Funktion "kopiere" keine gute Lösung ist, lässt die Implementierung von "strcpy" vermuten. -- hl ::Die vertretene Ansicht, "kopiere" sei, wie die Implementierung von "strcpy" vermuten lasse, keine gute Lösung, basiert wie mir scheint auf der Annahme, "kopiere" würde "strcpy" nachahmen wollen. Nur wurde das nirgends behauptet oder angedeutet. Wobei, wenn wir nun schon dabei sind: Erfüllt ein "strcpy", das sich bzgl. der NULL-Eigenschaft des zweiten Arguments so wie "kopiere" verhält, denn den CeeStandard nicht? -- vgl |
Mir gefällt im übrigen Helmuts rein spekulative Behauptung, die Vorbedingung würde in seiner rein spekulativen Sammlung von Stringfunktionen hundertemale vorkommen, nicht. Die Bedingung würde man nur dort aufführen, wo sie eben wirklich Bedingung ist (sprich, wo das Argument konkret irgendwie dereferenziert wird), also z. B. nicht dort, wo in einer Funktion lediglich sich anderer Hilfsfunktionen bedient wird, oder z. B. auch dort nicht, wo NULL gültiger Eingabewert ist (kann man doch manchmal gut so machen). -- VolkerGlave