Code Monkey home page Code Monkey logo

ot-harjoitust's Introduction

SnippetManager

(of your dreams)

Sovelluksen avulla on mahdollista tallentaa ja katsella myöhemmin näppäriä koodinpätkiä mitä on tullut kirjoitettua. Sovellus on toteutettu yhdelle käyttäjälle (tässä vaiheessa), ja se tallentaa siihen syötetyt pätkät tietokantaan.

Riippuvuuksista

Tässä vaiheessa sovellus edellyttää ainakin seuraavia: Java11, maven, testaukseen jacoco ja surefire(?), junit 4.12. Riippuvuudet ovat pom.xml:ssä, joten jos koneelta löytyy java11 ja maven, pitäisi toimia.

Dokumentaatio

Releaset

Komentorivitoiminnot

Suoritus komentoriviltä

mvn compile exec:java -Dexec.mainClass=himapaja.snippetmanager.SnippetManagerApp

Testaus

Testit suoritetaan komennolla

mvn test

Tässä vaiheessa testataan: FileSnippetDao, FileLanguageDao, sekä luokkien Snippet ja Language antamia tulostuksia, Snippet luokasta lähinnä data() metodin antamaa suoraan tiedostoon tallennettavaa muotoa. Nyt tietysti alkaa sql dao:jen testaaminen.

Testikattavuusraportti luodaan komennolla

mvn test jacoco:report

Kattavuusraporttia voi tarkastella selaimella avaamalla sillä tiedoston target/site/jacoco/index.html . Toistaiseksi kattavuus on aika pieni, testaan vain oleellisimmat asiat.

Suoritettavan jarin generointi

mvn package

generoi hakemistoon target suoritettavan jar-tiedoston SnippetManager-1.0-SNAPSHOT.jar

JavaDoc

Luodaan komennolla mvn javadoc:javadoc Javadocit on tehty kolmelle luokalle.

Checkstyle

Tarkistus suoritetaan komennolla

mvn jxr:jxr checkstyle:checkstyle

Tarkistusta ei suoriteta käyttöliittymätoteutuksille, eli tekstipohjaiselle TextUI:lle, eikä graafiselle FxGUI:lle. Tällä hetkellä SqlSnippetDao:ssa on 4 liian pitkää metodia.

ot-harjoitust's People

Contributors

sanikk avatar

Watchers

 avatar

Forkers

larikkai

ot-harjoitust's Issues

Code Review 1

Ladattu 25.4.2020 20:30 ja uudelleen 28.4 20:00
Editoitu, koska tämähän oli pelkkä koodikatselmointi. Jätin kuitenkin muutkin jos niistä saa mielipiteitä

Koodi

Yleisesti: Koodi on selkeää ja helppo lukuista.

  • Nimeä luokat, metodit, attribuutit, parametrit ja muuttujat selkeästi ja johdonmukaisesti. Käytössä camelCaset, englanniksi ja hyvin kuvaavia. Hyvä
  • Ei pitkiä metodeja (Muutamia pitkiä metodeja UI:ssa ja näistä sai jo dokumentaatiossa tiedon, että todennäköisesti korjataan.) Yleisesti hyvällä tasolla.
  • Ei copy-pastea. Hyvä!
  • Luokkien Single Responsibility
  • Pakkaukset. Selkeästi jaoteltu käyttöliittymä, logiikka, luokat ja daot. Hyvä
  • Testaus Reippaasti virheitä, varsinkin filelanguagedaossa toStringien kanssa häikkää joita en saanut ratkaistua.

Tags ei toiminut, mutta varmasti tulossa. Koodikatselmoinnin hengenssä loisin uuden snippetin listalla ja sitten vasta päivittäisi snippetin tietokantaan, näin sain toimimaan:

private void addNewSnippet() {
        System.out.println("\nYou are adding a snippet in " + snippetMan.getLanguage());
        System.out.println("\nPlease give a short description for your snippet:");
        String desc = skanner.nextLine();
        System.out.println("Insert the code to be saved below");
        String code = skanner.nextLine();

        System.out.println("Please give tags to make your code easier to find. Separate them by line changes. Empty line quits");
        List<String> lista = new ArrayList<>();
        while (true) {
            String tagi = skanner.nextLine();
            if (tagi.equals("")) {
                break;
            }
            lista.add(tagi);
        }
        Snippet uusi = snippetMan.createSnippet(desc, code, lista);
        snippetMan.updateSnippet(uusi);
    }

SnippetManager

Löydetty yksinkertainen ja mielekäs perusajatus, josta rakennetaan sovellusta. Sovelluksen tekstikäyttöliittymä antaa yksinkertaisen mielikuvan, mutta toisaalta toimii hyvin myös näin.

Testauksessa sovelluksessa esiintyi virheitä ja jopa pysähtyi. Nämä tulee varmasti saada pois (ellei sitten johtunut testaajasta..)

Kurssiin kuuluu myös dokumentaatiota ja ohjelmistotuotannon perusteiden hallintaa (vesiputoismalli / ketteräohjelmistokehitys), jotka olivat kunnossa.

Oli mielenkiintoista tutustua projektiin, kiitos. Voimaa ja menestystä viimeisille viikoille!

Dokumentaatio

Yleisesti: Siisti ja kurssin mukainen, lisäisin tyylilejä luettavuuden parantamiseksi. Hyvä

README

Readme on kurssin tämän vaiheen mukainen (esittely, linkit, komentorivitoiminnot).
Muutos ehdotukset:

  • luettavuutta voisi hieman parantaa lisäämällä boldausta tai tyylejä esim. komentorivi komennoille:
koodia tähän

Määrittely dokumentti

Kurssin tämän hetken mukainen ja siisti.

Arkkitehtuurikuvaus

  • Kurssin tämän hetken mukainen ja siisti. Teksti muotoinen, olisiko kuvallinen kuvaus myös tarpeellinen?

Työaikakirjanpito

Työ edennyt tasaisesti ja kirjanpito ajantasalla. Täsmää committeihin eikä sisällä laskareihin käytettyä aikaa.
Muutos ehdotus: kirjanpito vaikka taulukkoon, parantaa luettavuutta:

pvm aika info
12.3 2 dokumentaation parantelua
yht 2

Repo

Yleisesti siisti. Ja sisältää asiallisen .gitignoren.
Muutos ehdotus: Onko TestiUI tarpeellinen repossa?

Sovellus

Käynnistyy ja toiminnallisuus oli selkeä. En saanut lisättyä snippettiä error: "SNIPPETS" not found"). Testaus jäi vähäiseksi, koska tästä syystä. edit. korjattu uusimmassa versiossa
Muutos ehdotukset:

  • Jos valitulla kielellä ei ole yhtään snippettiä mutta silti haluaa nähdä listan niistä, ilmoitus ettei ole yhtään ja päävalikon valinnat? __Tyhmä käyttäjä valitsee snippetin jota ei ole olemassa, joka aiheuttaa errorin ( Exception in thread "main" java.lang.IndexOutOfBoundsException: Index 1 out of bounds for length 0) ja sovellus sulkeutuu.
  • Yleisesti lisää validointia ettei "tyhmä käyttäjälle" anneta mahdollisuutta tehdä vääriä valintoja.
  • Käyttäjälle näkyy UI:ssa virheilmoitukset (esim. Error getting full list: Table "SNIPPETS" not found; SQL statement), onko tämä välttämätöntä?. edit. korjattu uusimmassa versiossa

Komentorivikomennot

Muutamia ongelmia aiheutuu tietokantaongelmasta.

  • sovelluksen saa suoritettua komentoriviltä
  • testeissä paljon snippetistä johtuvia virheitä
  • mvn test jacoco:report ei luo tiedostoa target/site/jacoco/index.html
  • mvn package ei luo jar hakemistoon target
  • checkstyle hyvällä tasolla

Release week5

Release käynnistyy ja toimii. Pysähtyy erroreihin.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.