Skip to main content
Dat 2. semester
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

Code Standard

Kodestandard – 2. semester Lifehack projekt

Dette dokument beskriver de fælles regler for struktur og kodestandard i vores fælles GitHub repository.

Formålet er at sikre:

  • overskuelig kode
  • ensartet struktur
  • lettere samarbejde
  • lettere feedback og bedømmelse

1. Overordnet struktur

Alle arbejder i samme repository og samme overordnede package:

src/main/java/app/

Projektet er opdelt i lag:

app/
├── Main.java
├── config/
├── controllers/
├── entities/
├── persistence/
└── exceptions/

2. Team-opdeling

❓Er det sådan vi gør?: Hver gruppe skal placere deres kode i egne team-underpakker.

Eksempel (team1):

app/controllers/team1/
app/entities/team1/
app/persistence/team1/
app/exceptions/team1/

Eksempel på package:

package app.controllers.team1;

❓Navngiver vorees packages med teamnavn eller app navn?

app/controllers/pizzacalculator/
app/entities/pizzacalculator/
app/persistence/pizzacalculator/
app/exceptions/pizzacalculator/

app/controllers/bmicalculator/
app/entities/bmicalculator/
...

3. Navngivning

Klasser (PascalCase)

PostController
UserMapper
Post

Metoder og variabler (camelCase)

createUser()
getAllPosts()
postTitle
userList

Undgå

Team1PostController   
User_controller       

👉 Team-navn skal ligge i package, ikke i klassens navn.


4. Routing (Javalin)

Hver gruppe SKAL have eget URL-prefix

Eksempel:

/team1/posts
/team1/users
/team2/tasks

❓ eller

/pizzacalculator/orders
/pizzacalculator/menu

/bmicalculator/calculate
/bmicalculator/history
## Route-opsætning

I Main.java:

app.get("/", ctx -> ctx.render("index.html"));

Team1Routes.addRoutes(app, connectionPool);
Team2Routes.addRoutes(app, connectionPool);

5. HTML og templates

Templates placeres i:

src/main/resources/templates/

Hver gruppe får sin egen mappe:

templates/team1/
templates/team2/

Eksempel

templates/team1/index.html
templates/team1/post-list.html
  • små bogstaver
  • bindestreg
post-list.html
create-user.html

6. CSS og assets

resources/public/css/
resources/public/images/

Evt. gruppespecifik struktur:

css/team1/
images/team1/

7. Java kodeprincipper

Metoder

  • skal være korte
  • skal have ét ansvar

Eksempel

public static void createPost(Context ctx, ConnectionPool connectionPool) {
    String title = ctx.formParam("title");
    String content = ctx.formParam("content");

    PostMapper.createPost(title, content, connectionPool);
    ctx.redirect("/team1/posts");
}

8. Kommentarer

Brug kommentarer til:

  • at forklare hvorfor
  • TODO
  • kompleks logik

9. Fejlhåndtering

  • input skal valideres
  • brugeren skal have fejlbeskeder
  • appen må ikke crashe

Eksempel:

try {
    UserMapper.createUser(username, password, connectionPool);
    ctx.redirect("/team1/login");
} catch (DatabaseException e) {
    ctx.attribute("error", "Brugernavnet findes allerede");
    ctx.render("team1/create-user.html");
}

10. README (for hver gruppe)

Hver gruppe skal have en kort beskrivelse:

  • gruppenavn
  • medlemmer
  • appens funktionalitet

11. Git regler

I må:

  • arbejde i jeres egne packages
  • lave commits løbende

I må ikke:

  • ændre i andre gruppers kode uden aftale

Gode commit-beskeder:

Add post entity
Create user registration
Fix validation bug

Dårlige:

fix
done
hej

12. Minimumskrav

Alle projekter skal:

  • kunne starte uden fejl
  • have korrekt package-struktur
  • bruge team-underpakker
  • have meningsfulde navne
  • have læsbar kode
  • have basic validering
  • have fungerende routing med eget prefix

13. Fælles forside (index.html)

Forsiden linker til alle grupper:

<ul>
    <li><a href="/team1">Team 1</a></li>
    <li><a href="/team2">Team 2</a></li>
</ul>

Kort opsummering

✔ Brug team-underpakker
✔ Brug fælles struktur
✔ Brug eget URL-prefix
✔ Hold koden simpel og læsbar

14. Testautomatisering

❓Krav om unit tests og integrationstests

15. ❓Andet