Code Standard
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
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/
❓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/
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/
...
PostController
UserMapper
Post
createUser()
getAllPosts()
postTitle
userList
Team1PostController ❌
User_controller ❌
👉 Team-navn skal ligge i package, ikke i klassens navn.
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);
Templates placeres i:
src/main/resources/templates/
Hver gruppe får sin egen mappe:
templates/team1/
templates/team2/
templates/team1/index.html
templates/team1/post-list.html
- små bogstaver
- bindestreg
post-list.html
create-user.html
resources/public/css/
resources/public/images/
Evt. gruppespecifik struktur:
css/team1/
images/team1/
- skal være korte
- skal have ét ansvar
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");
}
- at forklare hvorfor
- TODO
- kompleks logik
- 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");
}
Hver gruppe skal have en kort beskrivelse:
- gruppenavn
- medlemmer
- appens funktionalitet
- arbejde i jeres egne packages
- lave commits løbende
- ændre i andre gruppers kode uden aftale
Add post entity
Create user registration
Fix validation bug
fix
done
hej
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
Forsiden linker til alle grupper:
<ul>
<li><a href="/team1">Team 1</a></li>
<li><a href="/team2">Team 2</a></li>
</ul>
✔ Brug team-underpakker
✔ Brug fælles struktur
✔ Brug eget URL-prefix
✔ Hold koden simpel og læsbar
❓Krav om unit tests og integrationstests