- Registriert
- Jan. 2021
- Beiträge
- 3.099
Schon gut. Hab mich vertan!
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.
Ich muss allerdings sagen, ich habe die "Abschnittkommentare" Der Kollegen zu schätzen gelernt. Besser wäre zuweilen eine eigene Funktion, aber wenn eine Funktion durch Kommentare in Abschnitte unterteilt wird, dann ist das schon viel Wert.tollertyp schrieb:Kommentare sollten sich auf das "Warum" konzentrieren, und nur in Ausnahmefällen auf das "Was".
Das ist halt immer pauschal gesagt ... ab wann ist eine Methode zu lang, wann übernimmt sie zu viele Aufgaben oder Zuständigkeiten, ab wann ist kein logischer Zusammenhang mehr da?maxpayne80 schrieb:Lieber mehr kurze Methoden als einen Riesenblock
Die Variablennamen sind schon sprechend. Es ist zudem legitim, temporäre Blockvariablen mit kleiner Sichtbarkeit abzukürzen (im Englischen nennt man diese throwaway variables).maxpayne80 schrieb:Sprechende Variablennamen ( und Methodennamen für 1. )
Auch da bin ich zwiegespalten. Es gibt die KISS, YAGNI und Overengineering Pattern/Prinzipien. Oder anders: Im Extremfall pflastert man alles mit extra Klassen zu, wobei viele dieselbe Zuständigkeit übernehmen. Oder auf Deutsch: Viele Köche verderben den Brei.maxpayne80 schrieb:Lieber eine eigene Klasse bauen,
Das stimmt so nicht. Die Variablennamen sind in Ordnung. Es geht nicht darum, diese künstlich in die Länge zu ziehen.tollertyp schrieb:ja, selbst vergebene Bezeichner sind immer vielsagend. Für den Moment.
||
und &&
geht ... das ist schon die CyborgBeta schrieb:Das ist halt immer pauschal gesagt ... ab wann ist eine Methode zu lang, wann übernimmt sie zu viele Aufgaben oder Zuständigkeiten, ab wann ist kein logischer Zusammenhang mehr da?
Die Variablennamen sind schon sprechend. Es ist zudem legitim, temporäre Blockvariablen mit kleiner Sichtbarkeit abzukürzen (im Englischen nennt man diese throwaway variables).
Auch da bin ich zwiegespalten. Es gibt die KISS, YAGNI und Overengineering Pattern/Prinzipien. Oder anders: Im Extremfall pflastert man alles mit extra Klassen zu, wobei viele dieselbe Zuständigkeit übernehmen. Oder auf Deutsch: Viele Köche verderben den Brei.
Und genau der Satz drückt deine Haltung zu gutem Code eben aus. Und das ist kein Lob.CyborgBeta schrieb:Ja, ok, also zumindest mit einigen Kommentaren beschreiben, was die drei Schleifen machen.
tollertyp schrieb:Kommentare sollten sich auf das "Warum" konzentrieren, und nur in Ausnahmefällen auf das "Was". Letzteres ist, wie du sagst, ein Zeichen für schlechten Code. Der Code sollte selbst ausdrücken, was er macht. Und dafür ist der Eröffnungspost ein gutes Beispiel, wie man es nicht machen sollte.
if
-Bedingung in einer eigenen Methode stehen.An dieser Stelle steht ein externer Inhalt von YouTube, der den Forumbeitrag ergänzt. Er kann mit einem Klick geladen und auch wieder ausgeblendet werden.
while (i < data.length() && isRowOfSameTable(data, i)) {
...
private static boolean isRowOfSameTable(final List<List<Object>> data, final int rowIndex) {
return (rowIndex > 0) && Objects.equals(data.get(rowIndex - 1).get(0), data.get(rowIndex).get(0));
}
// die beiden Zeilen würde ich in eine eigene Methode auslagern
List<List<Object>> data = MDB.get();
data.sort(Comparator.comparing(a -> ((java.sql.Timestamp) a.get(0))));
if (data.isEmpty()) {
return Collections.emptyList();
}
List<List<List<Object>>> tables = new ArrayList<>();
List<List<Object>> currentTable = new ArrayList<>();
Object currentTimestamp = null;
tables.add(currentTable);
for (int i = 0; i < data.size(); i++) {
final List<Object> currentRow = data.get(i);
if (!Objects.equals(currentTimestamp, currentRow.get(0))) {
currentTable = new ArrayList<>();
tables.add(currentTable);
currentTimestamp = currentRow.get(0);
}
currentTable.add(currentRow);
}
Map<Object, List<List<Object>>> tablesMap = data.stream()
.collect(Collectors.groupingBy(row -> row.get(0)));
List<List<List<Object>>> tables = new ArrayList<>(tablesMap.values());
while (isFirstEntry || i < data.size() && data.get(i - 1).get(0).equals(data.get(i).get(0))) {
Das ist meines Erachtens ein Bug in der Forensoftware bei der Funktion zum Zitieren von Code ... Ein Fall für @Steffen vielleichttollertyp schrieb:hat jemand eine Ahnung, warum, wenn ich Sachen in Code-Blöcken kopiere, immer so ein "Müll" erst mal kopiert wird?