captmcneil
Ensign
- Registriert
- Juni 2005
- Beiträge
- 189
Irgendwie hast Du einen sehr unangenehmen Diskussionsstil.
Zuletzt bearbeitet:
Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
Maria S. schrieb:Hi
@captmcneil
Wie dein Nachredner schon gesagt hat. Wenn du Quellcode Kommentieren mußt weil er sich nicht selbst erschließt dann sollte man darüber nachdenken was man besser machen kann.
und nein ich bin kein SoftwareArchitekt trotzdem programmiere ich schon lange an großen Projekten und daher kann ich aus Erfahrung sprechen.
Wenn der Code so kompliziert ist das man ihn versuchen muß zu erklären dann schafft das eine Erklärung selten es wirklich anständig aufzuklären. Die beste Erklärung ist ein Code der sich selbst erklärt.
Das heißt also wenn die Codevariablen gut benannt wurden, wenn vorher über die Software nachgedacht wurde und das von anfang an anständig durchgezogen wurde so ist eine Documentation über jeder Methode vollkommen ausreichend.
Gruß Maria
// Deaktiviere die Tabellenborders...
innerTable.Borders.Enable = 0;
// Da es nicht mit 2x2 Tabelle funktionieren will, muss man die zweite Zeile per hand noch einmal hinzufügen.
innerTable.Rows.Add(missing);
// diese Methode addiert 1 zu 2
public function adz( $a, $b ){
//hier addiere ich die beiden zahlen
$c=$a+$b;
// ich gebe die Zahlen zurück damit man das Ergebnis verwenden kann
return $c;
}
Genau darum geht's. Es geht im Team darum, einheitliche Code-Richtlinien zu befolgen. Das gehört einfach zur sauberen Arbeit. Wenn jeder so codiert, wie ers für notwendig hält, mag das zwar alles für sich sinnvoll sein, aber die Resultierende Codesumme ist uneinheitlich und deswegen anstrengend zu lesen für jeden einzelnen. Dazu gehören halt so Regeln wie, man kommentiert jede Funktion. Wenn sowas fehlt, ist das einfach schludrig.Cobinja schrieb:Ich würde sagen, dass eine Funktion, wie die von captmcneil als Beispiel gebrachte, keinen großen Kommentar braucht.
Aber ich muss auch sagen, dass es irgendwo eine Frage der Höflichkeit gegenüber anderen Entwicklern ist, seinen Quellcode auch innerhalb von Funktionen zu kommentieren, auch dann, wenn der Quellcode selbsterklärend geschrieben ist. Wenn ich unkommentierten Quellcode lesen muss, fühle ich mich, auf gut deutsch gesagt, verarscht.
// hier ist xyz abseits vom Standard implementiert aus Performance-Gründen
Dem kann ich nur bedingt zustimmen.Maria S. schrieb:Kommentare in einer Funktion gehört da nicht hin.
Um zu erklären was die Funktion macht gibt es KlassenDiagramme und andere Sachen die Ausdrücken was passiert ( UseCase, Anwendungsfalldiagramme, Sequenzdiagramme, Kollaborationsdiagramme, Zustandsdiagramme, Aktivitätsdiagramme, Verteilungsdiagramme und bestimmt noch einiges mehr).
int length; // in cm
int lengthInCm;
Da kommt mir das essen fast wieder hoch.. LOCs oder LLOCs sind keine sinnvolle Maßeinheit für die Komplexität deines Codes. Sicher sollten variablennamen nicht länger als 20 oder 30 Zeichen sein, aber aus Tippfaulheit oder angst vor zu vielen LOCs keine sprechenden Variablennamen zu benutzen ist einfach nur dumm. Es ist so einfach.. Variable für den Threadpool um den Stack abzuarbeiten heißt tp und ist angenehm zu tippen. Sobald mein Test grün wird und es ans Refactoring geht wird ein tp markiert, Strg+R, Strg+R: tp wird umbenannt nach openJobsInStackQueue oder was auch immer und alle sind zufrieden. Wer das nicht schafft wird nie ein halbwegs anständiger Softwareentwickler.Ja das ist das Problem. Wenn du versuchst alle Variable sinnvoll zu benennen dann, hast du bald zu viel Codezeilen.
roker002 schrieb:Code:/// <summary> /// Schreibt eine 2x2 Tabelle in der Zelle Adresse /// </summary> /// <param name="Adresse">Tabellenzelle, in der die innere Tabelle erstellt wird.</param> private void Info(Cell Adresse) { ///Erstelle die innere Tabelle in der Zelle 2x2 Table innerTable = Adresse.Tables.Add(Adresse.Range, 1, 2, WdDefaultTableBehavior.wdWord9TableBehavior, missing); ///Da es nicht mit 2x2 Tabelle funktionieren will, muss man die zweite Zeile per hand noch einmal hinzufügen. innerTable.Rows.Add(missing); Cell c11 = innerTable.Cell(1, 1); Cell c12 = innerTable.Cell(1, 2); Cell c21 = innerTable.Cell(2, 1); Cell c22 = innerTable.Cell(2, 2); ///Ändere die Schrift c11.Range.Font.Size = 8; this.SetCell(c11, Kunde.ToString(), WdParagraphAlignment.wdAlignParagraphLeft); c11.VerticalAlignment = WdCellVerticalAlignment.wdCellAlignVerticalCenter; ///Ändere Tabellelänge auf 70%, da sonst Design einfach hässlich ist. c11.PreferredWidthType = WdPreferredWidthType.wdPreferredWidthPercent; c11.PreferredWidth = 70; this.SetCell(c12, Kasse.ToString(), WdParagraphAlignment.wdAlignParagraphLeft); c21.Range.Font.Size = 12; this.SetCell(c21, Kasse.ToString(Systems.Kassen.Info.Adresse), WdParagraphAlignment.wdAlignParagraphLeft); c22.Range.Text = string.Empty; innerTable.PreferredWidthType = WdPreferredWidthType.wdPreferredWidthPercent; innerTable.PreferredWidth = 100; ///Deaktiviere die Tabellenborders... innerTable.Borders.Enable = 0; }
Wenn man einmal die Kommentare sieht, versteht man sofort alles.
public void WriteInfoCellsInCell(Cell adresse)
{
Table innerTable = CreateInnerTable(adresse);
formatAddressTable(innerTable);
}
private Table CreateInnerTable(Cell adresse)
{
Table t = Adresse.Tables.Add(Adresse.Range, 1, 2, WdDefaultTableBehavior.wdWord9TableBehavior, missing);
//HACK: Da es nicht mit 2x2 Tabelle funktionieren will, muss man die zweite Zeile per hand noch einmal hinzufügen.
// Dieser Kommentar ist sinnvoll, da Bug oder sonstiger Hack
t.Rows.Add(missing);
return t;
}
private void FormatAddressTable(Table table)
{
// schöner wäre hier
// FormatFont(Table table); FormatBorder(Table table); SetSize(Table table);
// oder ähnliches, allerdings habe ich die Idee wohl schon gezeigt
Cell c11 = table.Cell(1, 1);
Cell c12 = table.Cell(1, 2);
Cell c21 = table.Cell(2, 1);
Cell c22 = table.Cell(2, 2);
c11.Range.Font.Size = 8;
this.SetCell(c11, Kunde.ToString(), WdParagraphAlignment.wdAlignParagraphLeft);
c11.VerticalAlignment = WdCellVerticalAlignment.wdCellAlignVerticalCenter;
c11.PreferredWidthType = WdPreferredWidthType.wdPreferredWidthPercent;
c11.PreferredWidth = 70;
this.SetCell(c12, Kasse.ToString(), WdParagraphAlignment.wdAlignParagraphLeft);
c21.Range.Font.Size = 12;
this.SetCell(c21, Kasse.ToString(Systems.Kassen.Info.Adresse), WdParagraphAlignment.wdAlignParagraphLeft);
c22.Range.Text = string.Empty;
table.PreferredWidthType = WdPreferredWidthType.wdPreferredWidthPercent;
table.PreferredWidth = 100;
table.Borders.Enable = 0;
}
Das ist unnötig:
Hier wiederholt das Kommentar den Code.Code:// Deaktiviere die Tabellenborders... innerTable.Borders.Enable = 0;
// Deaktiviere die Tabellenborders...
innerTable.Borders.Enable = 0;
Ich würde nicht sagen dass es unnötig ist. In der API Beschreibung steht dass Enable einen Boolean Typ besitzt. Hier in der Bibliothek ist es aber ein INT.
private Table CreateInnerTable(Cell adresse)
{
return Adresse.Tables.Add(Adresse.Range, 1, 2, WdDefaultTableBehavior.wdWord9TableBehavior, missing);
//HACK: Da es nicht mit 2x2 Tabelle funktionieren will, muss man die zweite Zeile per hand noch einmal hinzufügen.
// Dieser Kommentar ist sinnvoll, da Bug oder sonstiger Hack
innerTable.Rows.Add(missing);
}
Nicht alle verbreiteten Sprachen kennen überhaupt den Typ bool....Maria S.:
Mal abgesehen davon, würde ich jedem meiner Programmierer die Leviten lesen wenn sie so etwas machen würden. Boolean ist Boolean und da haben Zahlen nichts zu suchen.
if (isFolder(path)) {
// ...
}
Na ich bin davon ausgegangen das wir hier nicht über Programmiersprachen der 1., 2. oder 3. Generation reden sondern über mindestens 4. Generation bzw Objektorientierte Generation.Ich würd gern mal erleben, wie die "Kommentare im Code sind unnütz" Fraktion Assembler oder C Code modifiziert, der keine Kommentare zwischen den Zeilen hat... Macht sicher viel Spaß
Meine Meinung dazu hab ich ja schon gesagt, wenn jemand OOP programmiert und etwas in einer Methode/Klasse macht was er nicht im Methoden bzw. Klassenkopf erklären kann. Dann hat er etwas falsch gemacht.Wird etwas komplizierteres/fummeligeres programmiert, was jemand nochmal lesen muss, zB weil evtl. noch Fehler drin stecken oder weil Schnittstellen/Signaturen verändert werden, freut sich jeder Entwickler, der solchen Code verändern muss, wenn der vorige Entwickler die kryptischen Passagen erklärt...
Genau den gilt es zu vermeiden.Im Nachhinein sich in undokumentierten, fremden, komplizierten und evtl. schlechten Code reinzulesen
Wie schon gesagt dafür gibt es dann Style und Codevorlagen in jeder Firma die genau so etwas abhandeln.ist in C nicht gerade unüblich? Auch wenn isFolder() einen int returned..
Hab ich auch nicht so verstanden. Wir diskutieren und das find ich gut ..Das war nicht als Angriff gegen dich gemeint