Einzelnen Beitrag anzeigen

Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#2

Re: [Liste] Suchen & Sortieren

  Alt 25. Nov 2005, 20:13
Zitat von Mr_Anderson:
Hallo
Ich habe in der Schule die Aufgabe erhalten eine Bücher.txt mit 2000 Datensätzen in eine Liste zu schreiben und diese Liste nach Autoren bzw. Titel zu durchlaufen und zu sortieren. Ich habe es geschrieben, aber ich weiß nicht, ob es so wirklich "gute geschrieben" ist.

Könntet ihr euch das einmal anschauen? Ich hänge den Code an:
Hi,
erstmal zum Thema Schulaufgaben und DP, es ist eine der Grundregeln, dass Schulaufgaben nicht komplett durch Mitglieder der DP gelöst werden. Keine Sorge, ich seh schon ein dass du hier deine Lösung postest und nicht nach einer Lösung fragst, aber ich wollte es schon mal gesagt haben. Auf jeden Fall hast du keinen Code angehangen (dazu gibt es in dem Fenster wo du auch deinen Beitrag schreibst weiter unten einige Felder) und ich glaube solange du die Datei einfach nur postest (und nicht anhängst) wird sich keiner deinen Code anschauen. Ist einfach zu mühsam im Browser. Also bitte anhängen, danke.

Ansonsten wäre es natürlich schöner, wenn du etwas genauer sein könntest. Wenn du dir an einer Stelle (oder halt an mehreren) nicht sicher bist, benenn einfach die Stelle, den ganzen Code durchgehen ist halt ein wenig so, als ob du Arbeit abschieben möchtest. Nicht falsch verstehen!

Aber ein paar Dinge, die mir sofort auffallen. Es fängt eigentlich damit an, dass du sehr wenig Struktur in deinem Code hast. Es gehört ein wenig zur gängigen Konvention dass man kleinere Regeln einhält. D.h. du musst dich nicht dran halten, aber du solltest es so gut wie möglich. Man sollte es sich vorallem immer früh angewöhnen, je später desto schwerer.
Wie gesagt, keine böse Kritik, nur Tipps. Für Kritik wär ich eh der falsche, ich halte mich weniger an die Delphi-Konvention als vielmehr an welche die ich hauptsächlich aus Java (und ein paar anderen Sprachen) kenne.

Also, mal der erste Block

Delphi-Quellcode:
unit mSortListe;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, mDListe, XPMan, Buttons;
const max=2000;
type TBuch = class(TSortElement)
    Sachgebiet, Autor, Titel, Ort, Verlag : String;
    Jahr : integer;
    function gleich (zweites:TSortElement):boolean;override;
    function kleiner (zweites:TSortElement):boolean;override;
  end;
type TAutor = class(TSortElement)
    Sachgebiet, Autor, Titel, Ort, Verlag : String;
    Jahr : integer;
    function gleich (zweites:TSortElement):boolean;override;
    function kleiner (zweites:TSortElement):boolean;override;
  end;
Hier gäbe es gleich mehrere Dinge die ich persönlich bemängeln würde. Du solltest auf jeden Fall mehr Leerzeilen verwenden. Da sieht man schneller wo was aufhört und was neues anfängt.
Konstanten sollte man möglichst immer GROß schreiben (sorry, will nicht schreien, sondern meine nur alle Buchstaben groß).
Type brauchst du nicht vor jeden Block schreiben. Und bei deiner Objekt-Hierachie wäre ich mir auch nicht so sicher (hat ein Autor denn einen Autor, einen Titel und einen Ort? Beim Rest könnte man drüber streiten).

Also mal rein zur Formatierung versuch es mal so :

Delphi-Quellcode:
unit mSortListe;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, mDListe, XPMan, Buttons;

CONST MAX = 2000;

type
  TBuch = class(TSortElement)
    public
      Sachgebiet, Autor, Titel, Ort, Verlag : String;
      Jahr : Integer;
      function gleich(zweites:TSortElement) : Boolean; override;
      function kleiner(zweites:TSortElement) : Boolean; override;
  end;

  TAutor = class(TSortElement)
    Sachgebiet, Autor, Titel, Ort, Verlag : String;
    Jahr : Integer;
    function gleich (zweites:TSortElement) : Boolean; override;
    function kleiner (zweites:TSortElement) : Boolean; override;
  end;
Hoffe du siehst ein wenig was ich meine. Und wo kommt eigentlich die Klasse TSortElement her?
Eine weitere Sache ist es, möglichst Dinge die zusammen gehören auch in eine Datei zu schreiben statt alles in einer unter zu bringen. Auch dass schafft etwas mehr Übersicht.
Zwischen zwei Methoden solltest du auch mindestens eine Leerzeile lassen und
Delphi-Quellcode:
function TBuch.gleich (zweites:TSortElement):boolean;
   begin gleich := Self.Titel = TBuch(zweites).Titel end;
sieht auch nicht hübsch aus. Lieber etwas offensichtlicher die Hierachie anzeigen
Delphi-Quellcode:
function TBuch.gleich(zweites : TSortElement) : Boolean;
begin
  gleich := Self.Titel = TBuch(zweites).Titel
end;
Gut, du solltest natürlich auch die Typsicherheit (if zweites is TBuch then ...) prüfen, aber ich glaube das kommt schon noch (später).

Ja, wie gesagt nich böse sein oder so, nur tipps und die Datei anhängen sonst liest es keiner

Gruß Der Unwissende
  Mit Zitat antworten Zitat