Common issues

IT1901 Fall 2020 - 19th Lecture

Overview

  • Planer vs. implementasjon

  • Uheldig programmeringspraksis

  • Testing

  • Sjekk av kodekvalitet

  • Utviklingsoppgaver

  • Merge requests

  • Diverse

Planer vs. implementasjon

  • Litt vel stor forskjell mellom ambisjoner som beskrevet i planer, skjermbildeskisser og faktisk innlevering.

  • Det er lurt å tenke at innlevering 2 og 3 er noe brukere kunne prøvd ut.

  • Mange strekker seg litt langt, på bekostning av kvalitet.

Uheldig programmeringspraksis

  • En del kjernekode er rene data-klasser uten noen særlig logikk, heller ikke validering.

  • Innkapsling brytes ved at interne lister returneres direkte

  • Variabler og felt types til implementasjonsklasser heller enn grensesnitt (ArrayList<> vs. List<>)

Testing

  • Testing er ment å øke tilliten til koden

  • Ikke test kode som er like triviell som testen; det er viktigere å teste metoder med logikk

  • Det er ikke vits i å teste toString(), når den kun er ment å bli brukt til debugging

  • En del bruker try/catch og fail() galt når det ikke trengs

Sjekk av kodekvalitet

  • Mange tar ikke hensyn til checkstyle-anmerkninger, og en del har ikke engang koblet det inn.

  • Noen prøver å lure spotbugs…​

    // We need to implement this to make spotbugs shut up.
    // Technically, we are supposed to make equals and compareTo
    // agree, but we specifically want events to be sorted
    // chronologically. The right way is probably to implement
    // a comparator instead of overriding compareTo, and sorting
    // with that.
    @Override
    @Deprecated
    public boolean equals(Object o) {
        // We can check quilcky by comparing pointers
        if (this == o) {
            return true;
        }
        return false;
    }

Utviklingsoppgaver

  • Mange utviklingsoppgaver mangler detaljer og/eller diskusjoner

  • Noen knytter ikke oppgaver til "assignee" og/eller milepæler

  • Verktøyene er ment å hjelpe på samarbeidet og brukes ikke bare for syns skyld

Merge forespørsler

  • noen grupper bruker merge forespørsler jevnlig, og det er bra!

  • men det er få kommentarer eller diskusjoner for forbedring av koden…​

Diverse

  • For mange er opptatt av registrering/innlogging

  • Oppdeling i flere kontrollere kan være vanskelig å gjøre ryddig

  • Ikke bruk toString() til visning i UI-et

  • Mange legger til filer i repoet som burde vært ignorert (i .gitignore)

Summary

Norwegian University of Science and Technology