Skip to content

Commit a43de3c

Browse files
author
gabriele.sisinna
committed
Add explanatory comments across codebase
1 parent 1b04825 commit a43de3c

40 files changed

Lines changed: 54 additions & 0 deletions

src/main/java/com/example/demo/DemoApplication.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import org.springframework.boot.autoconfigure.SpringBootApplication;
55

66
@SpringBootApplication
7+
// Standard Spring Boot entry point. Running main() starts the embedded server.
78
public class DemoApplication {
89

910
public static void main(String[] args) {

src/main/java/com/example/demo/basics/annotations/LearningExample.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
@Target(ElementType.TYPE)
99
@Retention(RetentionPolicy.RUNTIME)
10+
// Custom annotation used to tag classes with the concepts they are meant to teach.
1011
public @interface LearningExample {
1112

1213
String title();

src/main/java/com/example/demo/basics/exceptions/InvalidScoreException.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.example.demo.basics.exceptions;
22

3+
// Small custom exception that shows how domain rules can reject invalid input.
34
public class InvalidScoreException extends RuntimeException {
45

56
public InvalidScoreException(String message) {

src/main/java/com/example/demo/basics/generics/Box.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.example.demo.basics.generics;
22

3+
// Generic class example: the same class can wrap different types safely.
34
public class Box<T> {
45

56
private final T value;

src/main/java/com/example/demo/basics/inheritance/LearningStudent.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.example.demo.basics.inheritance;
22

3+
// Child class that inherits state from Person and overrides behavior.
34
public class LearningStudent extends Person {
45

56
private final String track;

src/main/java/com/example/demo/basics/inheritance/Person.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.example.demo.basics.inheritance;
22

3+
// Parent class used to demonstrate inheritance and method overriding.
34
public class Person {
45

56
private final String name;

src/main/java/com/example/demo/basics/interfaces/EmailNotifier.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.example.demo.basics.interfaces;
22

3+
// One implementation of the Notifier contract.
34
public class EmailNotifier implements Notifier {
45

56
@Override

src/main/java/com/example/demo/basics/interfaces/Notifier.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.example.demo.basics.interfaces;
22

3+
// Interface example: callers depend on a contract, not a concrete implementation.
34
public interface Notifier {
45

56
String channel();

src/main/java/com/example/demo/basics/model/Student.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
"annotations"
2323
}
2424
)
25+
// Central plain-Java example used to teach fields, constructors, methods, collections, and control flow.
2526
public class Student {
2627

2728
private final long id;
@@ -47,6 +48,7 @@ public Student(
4748
List<String> subjects,
4849
Map<String, Integer> scores
4950
) {
51+
// Defensive copies keep callers from mutating the internal state by accident.
5052
this.id = id;
5153
this.name = name;
5254
this.age = age;
@@ -60,13 +62,15 @@ public void activate() {
6062
}
6163

6264
public void enroll(String subject) {
65+
// Early return keeps invalid values out of the subjects list.
6366
if (subject == null || subject.isBlank()) {
6467
return;
6568
}
6669
this.subjects.add(subject.trim());
6770
}
6871

6972
public void addScore(String subject, int score) {
73+
// Throwing an exception is the explicit "fail fast" path for invalid state.
7074
if (score < 0 || score > 100) {
7175
throw new InvalidScoreException("Score must be between 0 and 100");
7276
}
@@ -81,6 +85,7 @@ public String level() {
8185
}
8286

8387
public int totalScore() {
88+
// Classic for-each loop example over a Map's values.
8489
int total = 0;
8590
for (int value : scores.values()) {
8691
total += value;
@@ -93,6 +98,7 @@ public String subjectSummary() {
9398
return "No subjects yet";
9499
}
95100

101+
// StringBuilder is efficient when building strings in a loop.
96102
StringBuilder summary = new StringBuilder();
97103
for (String subject : subjects) {
98104
if (!summary.isEmpty()) {
@@ -104,6 +110,7 @@ public String subjectSummary() {
104110
}
105111

106112
public Student withId(long newId) {
113+
// Returns a new instance instead of mutating the id after construction.
107114
return new Student(newId, name, age, active, subjects, scores);
108115
}
109116

src/main/java/com/example/demo/basics/streams/StudentAnalytics.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import java.util.Map;
77
import java.util.stream.Collectors;
88

9+
// Stream examples that transform a list of students into derived data.
910
public class StudentAnalytics {
1011

1112
public List<String> activeStudentNames(List<Student> students) {

0 commit comments

Comments
 (0)