SlideShare a Scribd company logo
What do class comments tell us? 

An investigation of comment
evolution and practices in Pharo
Smalltalk
Pooja Rani, Sebastiano Panichella, Manuel
Leuenberger, Mohammad Ghafari, Oscar Nierstrasz
Journal First
/**
* A class representing a window on the screen.
*
* For example:
* <pre>
* Window win = new Window(parent);
* win.show();
* </pre>
*
* @author Sami Shaio
* @version 1.13, 06/08/06
* @see java.awt.BaseWindow
*/
class Window extends BaseWindow {
…
}
2
Motivation
High-quality code comments assist developers
- Dekel et al. 2009
Java class comment
/**
* A class representing a window on the screen.
*
* For example:
* <pre>
* Window win = new Window(parent);
* win.show();
* </pre>
*
* @author Sami Shaio
* @version 1.13, 06/08/06
* @see java.awt.BaseWindow
*/
class Window extends BaseWindow {
…
}
3
Motivation
Java class comment
Different languages use different conventions to write comments
Smalltalk class comment
4
5
6
Intent
7
Example
8
Implementation
details
9
Class comments are a main source of documentation

No strict comment conventions, such as tags 

Lack of quality assessment tools

Lack of empirical studies

Challenges
10
Class comments are a main source of documentation

No strict comment conventions such as tags 

Lack of quality assessment tools

Lack of empirical studies

Challenges
11
Class comments are a main source of documentation

No strict comment conventions such as tags 

Lack of quality assessment tools

Lack of empirical studies

Challenges
12
Class comments are a main source of documentation

No strict comment conventions such as tags 

Lack of quality assessment tools

Lack of empirical studies

Challenges
13
Class comments are a main source of documentation

No strict comment conventions such as tags 

Lack of quality assessment tools

Lack of empirical studies

Requires empirical knowledge
Using previous techniques a non-trivial task
Challenges
14
We study Smalltalk class comments
15
We analyse from three perspectives
P1
Commenting trend
Comment
adherence to
template
P3
Comment
information types
P2
16
We analyse from three perspectives
P1
Commenting trend
Comment
adherence to
template
P3
Comment
information types
P2
How often developers


write?
17
Commenting trend
https://en.wikipedia.org/wiki/Pharo https://pharo.org/
18
Commenting trend
■ Pharo software system (first appeared in 2008)


■ Study its seven versions from 2008-2019 (11 years)
https://en.wikipedia.org/wiki/Pharo https://pharo.org/
19
0
1000
2000
3000
4000
5000
6000
7000
8000
2 3 4 5 6 7
#
Classes
Pharo versions
New classes
Old classes unchanged
Old classes only comment changed
Old classes only code changed
Old classes comment and code changed
50% of comment changes were related to code changes
20
0
100
200
300
400
500
600
700
800
2 3 4 5 6 7
#
Classes
Pharo versions
Comments removed of old classes
Comments added to old classes
Comments updated of old classes
developers add or update comment of old classes
21
We analyse from three perspectives
P1
Commenting trend
Comment
adherence to
template
P3
Comment
information types
P2
What do developers


write?
22
Implementation
details
Intent
Example
Unlike Java and Python, there is no comment taxonomy
Smalltalk class comments
23
Information types in Smalltalk
7 Pharo versions


2008-2019


364 sample comments


Smalltalk class comments contain 23 types of information
24
Color scale according to number of comments falling into a category
0 25 52
0 26 52
1 (52)
2 (52)
3 (52)
4 (52)
5 (52)
6 (52)
7 (52)
O
t
h
e
r
L
i
c
e
n
s
e
D
e
p
e
n
d
e
n
c
i
e
s
C
o
n
t
r
a
c
t
s
O
b
s
e
r
v
a
t
i
o
n
s
R
e
c
o
m
m
e
n
d
a
t
i
o
n
s
E
x
t
e
n
s
i
o
s
L
i
n
k
s
D
i
s
c
o
u
r
s
e
W
a
r
n
i
n
g
s
C
o
d
i
n
g
G
u
i
d
e
l
i
n
e
s
N
a
m
i
n
g
C
o
n
v
e
n
t
i
o
n
s
T
o
d
o
c
o
m
m
e
n
t
s
C
l
a
s
s
R
e
f
e
r
e
n
c
e
s
S
u
b
c
l
a
s
s
e
s
E
x
p
l
a
n
a
t
i
o
n
R
e
f
e
r
e
n
c
e
O
t
h
e
r
R
e
s
o
u
r
c
e
s
I
m
p
l
e
m
e
n
t
a
t
i
o
n
P
o
i
n
t
s
E
x
a
m
p
l
e
s
K
e
y
M
e
s
s
a
g
e
s
I
n
s
t
a
n
c
e
V
a
r
i
a
b
l
e
s
C
o
l
l
a
b
a
r
t
o
r
s
R
e
s
p
o
n
s
i
b
i
l
i
t
y
I
n
t
e
n
t
Categories
Pharo
versions
(total
classes)
Smalltalk class comments contain 23 types of information
Information types in Smalltalk
25
Color scale according to number of comments falling into a category
0 25 52
0 26 52
1 (52)
2 (52)
3 (52)
4 (52)
5 (52)
6 (52)
7 (52)
O
t
h
e
r
L
i
c
e
n
s
e
D
e
p
e
n
d
e
n
c
i
e
s
C
o
n
t
r
a
c
t
s
O
b
s
e
r
v
a
t
i
o
n
s
R
e
c
o
m
m
e
n
d
a
t
i
o
n
s
E
x
t
e
n
s
i
o
s
L
i
n
k
s
D
i
s
c
o
u
r
s
e
W
a
r
n
i
n
g
s
C
o
d
i
n
g
G
u
i
d
e
l
i
n
e
s
N
a
m
i
n
g
C
o
n
v
e
n
t
i
o
n
s
T
o
d
o
c
o
m
m
e
n
t
s
C
l
a
s
s
R
e
f
e
r
e
n
c
e
s
S
u
b
c
l
a
s
s
e
s
E
x
p
l
a
n
a
t
i
o
n
R
e
f
e
r
e
n
c
e
O
t
h
e
r
R
e
s
o
u
r
c
e
s
I
m
p
l
e
m
e
n
t
a
t
i
o
n
P
o
i
n
t
s
E
x
a
m
p
l
e
s
K
e
y
M
e
s
s
a
g
e
s
I
n
s
t
a
n
c
e
V
a
r
i
a
b
l
e
s
C
o
l
l
a
b
a
r
t
o
r
s
R
e
s
p
o
n
s
i
b
i
l
i
t
y
I
n
t
e
n
t
Categories
Pharo
versions
(total
classes)
26
Color scale according to number of comments falling into a category
0 25 52
0 26 52
1 (52)
2 (52)
3 (52)
4 (52)
5 (52)
6 (52)
7 (52)
O
t
h
e
r
L
i
c
e
n
s
e
D
e
p
e
n
d
e
n
c
i
e
s
C
o
n
t
r
a
c
t
s
O
b
s
e
r
v
a
t
i
o
n
s
R
e
c
o
m
m
e
n
d
a
t
i
o
n
s
E
x
t
e
n
s
i
o
s
L
i
n
k
s
D
i
s
c
o
u
r
s
e
W
a
r
n
i
n
g
s
C
o
d
i
n
g
G
u
i
d
e
l
i
n
e
s
N
a
m
i
n
g
C
o
n
v
e
n
t
i
o
n
s
T
o
d
o
c
o
m
m
e
n
t
s
C
l
a
s
s
R
e
f
e
r
e
n
c
e
s
S
u
b
c
l
a
s
s
e
s
E
x
p
l
a
n
a
t
i
o
n
R
e
f
e
r
e
n
c
e
O
t
h
e
r
R
e
s
o
u
r
c
e
s
I
m
p
l
e
m
e
n
t
a
t
i
o
n
P
o
i
n
t
s
E
x
a
m
p
l
e
s
K
e
y
M
e
s
s
a
g
e
s
I
n
s
t
a
n
c
e
V
a
r
i
a
b
l
e
s
C
o
l
l
a
b
a
r
t
o
r
s
R
e
s
p
o
n
s
i
b
i
l
i
t
y
I
n
t
e
n
t
Categories
Pharo
versions
(total
classes)
27
High-level
overview
Color scale according to number of comments falling into a category
0 25 52
0 26 52
1 (52)
2 (52)
3 (52)
4 (52)
5 (52)
6 (52)
7 (52)
O
t
h
e
r
L
i
c
e
n
s
e
D
e
p
e
n
d
e
n
c
i
e
s
C
o
n
t
r
a
c
t
s
O
b
s
e
r
v
a
t
i
o
n
s
R
e
c
o
m
m
e
n
d
a
t
i
o
n
s
E
x
t
e
n
s
i
o
s
L
i
n
k
s
D
i
s
c
o
u
r
s
e
W
a
r
n
i
n
g
s
C
o
d
i
n
g
G
u
i
d
e
l
i
n
e
s
N
a
m
i
n
g
C
o
n
v
e
n
t
i
o
n
s
T
o
d
o
c
o
m
m
e
n
t
s
C
l
a
s
s
R
e
f
e
r
e
n
c
e
s
S
u
b
c
l
a
s
s
e
s
E
x
p
l
a
n
a
t
i
o
n
R
e
f
e
r
e
n
c
e
O
t
h
e
r
R
e
s
o
u
r
c
e
s
I
m
p
l
e
m
e
n
t
a
t
i
o
n
P
o
i
n
t
s
E
x
a
m
p
l
e
s
K
e
y
M
e
s
s
a
g
e
s
I
n
s
t
a
n
c
e
V
a
r
i
a
b
l
e
s
C
o
l
l
a
b
a
r
t
o
r
s
R
e
s
p
o
n
s
i
b
i
l
i
t
y
I
n
t
e
n
t
Categories
Pharo
versions
(total
classes)
Color scale according to number of comments falling into a category
0 25 52
0 26 52
1 (52)
2 (52)
3 (52)
4 (52)
5 (52)
6 (52)
7 (52)
O
t
h
e
r
L
i
c
e
n
s
e
D
e
p
e
n
d
e
n
c
i
e
s
C
o
n
t
r
a
c
t
s
O
b
s
e
r
v
a
t
i
o
n
s
R
e
c
o
m
m
e
n
d
a
t
i
o
n
s
E
x
t
e
n
s
i
o
s
L
i
n
k
s
D
i
s
c
o
u
r
s
e
W
a
r
n
i
n
g
s
C
o
d
i
n
g
G
u
i
d
e
l
i
n
e
s
N
a
m
i
n
g
C
o
n
v
e
n
t
i
o
n
s
T
o
d
o
c
o
m
m
e
n
t
s
C
l
a
s
s
R
e
f
e
r
e
n
c
e
s
S
u
b
c
l
a
s
s
e
s
E
x
p
l
a
n
a
t
i
o
n
R
e
f
e
r
e
n
c
e
O
t
h
e
r
R
e
s
o
u
r
c
e
s
I
m
p
l
e
m
e
n
t
a
t
i
o
n
P
o
i
n
t
s
E
x
a
m
p
l
e
s
K
e
y
M
e
s
s
a
g
e
s
I
n
s
t
a
n
c
e
V
a
r
i
a
b
l
e
s
C
o
l
l
a
b
a
r
t
o
r
s
R
e
s
p
o
n
s
i
b
i
l
i
t
y
I
n
t
e
n
t
Categories
Pharo
versions
(total
classes)
28
High-level
overview
Conversation
exchanged
29
Color scale according to number of comments falling into a category
0 25 52
0 26 52
1 (52)
2 (52)
3 (52)
4 (52)
5 (52)
6 (52)
7 (52)
O
t
h
e
r
L
i
c
e
n
s
e
D
e
p
e
n
d
e
n
c
i
e
s
C
o
n
t
r
a
c
t
s
O
b
s
e
r
v
a
t
i
o
n
s
R
e
c
o
m
m
e
n
d
a
t
i
o
n
s
E
x
t
e
n
s
i
o
s
L
i
n
k
s
D
i
s
c
o
u
r
s
e
W
a
r
n
i
n
g
s
C
o
d
i
n
g
G
u
i
d
e
l
i
n
e
s
N
a
m
i
n
g
C
o
n
v
e
n
t
i
o
n
s
T
o
d
o
c
o
m
m
e
n
t
s
C
l
a
s
s
R
e
f
e
r
e
n
c
e
s
S
u
b
c
l
a
s
s
e
s
E
x
p
l
a
n
a
t
i
o
n
R
e
f
e
r
e
n
c
e
O
t
h
e
r
R
e
s
o
u
r
c
e
s
I
m
p
l
e
m
e
n
t
a
t
i
o
n
P
o
i
n
t
s
E
x
a
m
p
l
e
s
K
e
y
M
e
s
s
a
g
e
s
I
n
s
t
a
n
c
e
V
a
r
i
a
b
l
e
s
C
o
l
l
a
b
a
r
t
o
r
s
R
e
s
p
o
n
s
i
b
i
l
i
t
y
I
n
t
e
n
t
Categories
Pharo
versions
(total
classes)
30
Color scale according to number of comments falling into a category
0 25 52
0 26 52
1 (52)
2 (52)
3 (52)
4 (52)
5 (52)
6 (52)
7 (52)
O
t
h
e
r
L
i
c
e
n
s
e
D
e
p
e
n
d
e
n
c
i
e
s
C
o
n
t
r
a
c
t
s
O
b
s
e
r
v
a
t
i
o
n
s
R
e
c
o
m
m
e
n
d
a
t
i
o
n
s
E
x
t
e
n
s
i
o
s
L
i
n
k
s
D
i
s
c
o
u
r
s
e
W
a
r
n
i
n
g
s
C
o
d
i
n
g
G
u
i
d
e
l
i
n
e
s
N
a
m
i
n
g
C
o
n
v
e
n
t
i
o
n
s
T
o
d
o
c
o
m
m
e
n
t
s
C
l
a
s
s
R
e
f
e
r
e
n
c
e
s
S
u
b
c
l
a
s
s
e
s
E
x
p
l
a
n
a
t
i
o
n
R
e
f
e
r
e
n
c
e
O
t
h
e
r
R
e
s
o
u
r
c
e
s
I
m
p
l
e
m
e
n
t
a
t
i
o
n
P
o
i
n
t
s
E
x
a
m
p
l
e
s
K
e
y
M
e
s
s
a
g
e
s
I
n
s
t
a
n
c
e
V
a
r
i
a
b
l
e
s
C
o
l
l
a
b
a
r
t
o
r
s
R
e
s
p
o
n
s
i
b
i
l
i
t
y
I
n
t
e
n
t
Categories
Pharo
versions
(total
classes)
Internal
(Pharo
core)
Color scale according to number of comments falling into a category
0 25 52
0 26 52
1 (52)
2 (52)
3 (52)
4 (52)
5 (52)
6 (52)
7 (52)
O
t
h
e
r
L
i
c
e
n
s
e
D
e
p
e
n
d
e
n
c
i
e
s
C
o
n
t
r
a
c
t
s
O
b
s
e
r
v
a
t
i
o
n
s
R
e
c
o
m
m
e
n
d
a
t
i
o
n
s
E
x
t
e
n
s
i
o
s
L
i
n
k
s
D
i
s
c
o
u
r
s
e
W
a
r
n
i
n
g
s
C
o
d
i
n
g
G
u
i
d
e
l
i
n
e
s
N
a
m
i
n
g
C
o
n
v
e
n
t
i
o
n
s
T
o
d
o
c
o
m
m
e
n
t
s
C
l
a
s
s
R
e
f
e
r
e
n
c
e
s
S
u
b
c
l
a
s
s
e
s
E
x
p
l
a
n
a
t
i
o
n
R
e
f
e
r
e
n
c
e
O
t
h
e
r
R
e
s
o
u
r
c
e
s
I
m
p
l
e
m
e
n
t
a
t
i
o
n
P
o
i
n
t
s
E
x
a
m
p
l
e
s
K
e
y
M
e
s
s
a
g
e
s
I
n
s
t
a
n
c
e
V
a
r
i
a
b
l
e
s
C
o
l
l
a
b
a
r
t
o
r
s
R
e
s
p
o
n
s
i
b
i
l
i
t
y
I
n
t
e
n
t
Categories
Pharo
versions
(total
classes)
31
Color scale according to percentage of comments falling into a category
Internal
External
GToolkit
Seaside
Roassal
Moose
PolyMath
Petit
Pillar
O
t
h
e
r
L
i
c
e
n
s
e
D
e
p
e
n
d
e
n
c
i
e
s
C
o
n
t
r
a
c
t
s
O
b
s
e
r
v
a
t
i
o
n
s
R
e
c
o
m
m
e
n
d
a
t
i
o
n
s
E
x
t
e
n
s
i
o
s
L
i
n
k
s
D
i
s
c
o
u
r
s
e
W
a
r
n
i
n
g
s
C
o
d
i
n
g
G
u
i
d
e
l
i
n
e
s
N
a
m
i
n
g
C
o
n
v
e
n
t
i
o
n
s
T
o
d
o
c
o
m
m
e
n
t
s
C
l
a
s
s
R
e
f
e
r
e
n
c
e
s
S
u
b
c
l
a
s
s
e
s
E
x
p
l
a
n
a
t
i
o
n
R
e
f
e
r
e
n
c
e
O
t
h
e
r
R
e
s
o
u
r
c
e
s
I
m
p
l
e
m
e
n
t
a
t
i
o
n
P
o
i
n
t
s
E
x
a
m
p
l
e
s
K
e
y
M
e
s
s
a
g
e
s
I
n
s
t
a
n
c
e
V
a
r
i
a
b
l
e
s
C
o
l
l
a
b
a
r
t
o
r
s
R
e
s
p
o
n
s
i
b
i
l
i
t
y
I
n
t
e
n
t
External
projects
Total
Internal
(Pharo
core)
32
Color scale according to percentage of comments falling into a category
0 50 100
Internal
External
GToolkit
Seaside
Roassal
Moose
PolyMath
Petit
Pillar
O
t
h
e
r
L
i
c
e
n
s
e
D
e
p
e
n
d
e
n
c
i
e
s
C
o
n
t
r
a
c
t
s
O
b
s
e
r
v
a
t
i
o
n
s
R
e
c
o
m
m
e
n
d
a
t
i
o
n
s
E
x
t
e
n
s
i
o
s
L
i
n
k
s
D
i
s
c
o
u
r
s
e
W
a
r
n
i
n
g
s
C
o
d
i
n
g
G
u
i
d
e
l
i
n
e
s
N
a
m
i
n
g
C
o
n
v
e
n
t
i
o
n
T
o
d
o
c
o
m
m
e
n
t
s
C
l
a
s
s
R
e
f
e
r
e
n
c
e
s
S
u
b
c
l
a
s
s
e
s
E
x
p
l
a
n
a
t
R
e
f
e
r
e
n
c
e
O
t
h
e
r
R
e
s
I
m
p
l
e
m
e
n
t
a
t
i
o
n
P
o
i
E
x
a
m
p
l
e
s
K
e
y
M
e
s
s
a
g
e
s
I
n
s
t
a
n
c
e
V
a
r
i
a
b
l
e
s
C
o
l
l
a
b
a
r
t
o
r
s
R
e
s
p
o
n
s
i
b
i
l
i
t
y
I
n
t
e
n
t
External
projects
Total
Color scale according to percentage of comments falling into a category
Internal
External
GToolkit
Seaside
Roassal
Moose
PolyMath
Petit
Pillar
O
t
h
e
r
L
i
c
e
n
s
e
D
e
p
e
n
d
e
n
c
i
e
s
C
o
n
t
r
a
c
t
s
O
b
s
e
r
v
a
t
i
o
n
s
R
e
c
o
m
m
e
n
d
a
t
i
o
n
s
E
x
t
e
n
s
i
o
s
L
i
n
k
s
D
i
s
c
o
u
r
s
e
W
a
r
n
i
n
g
s
C
o
d
i
n
g
G
u
i
d
e
l
i
n
e
s
N
a
m
i
n
g
C
o
n
v
e
n
t
i
o
n
s
T
o
d
o
c
o
m
m
e
n
t
s
C
l
a
s
s
R
e
f
e
r
e
n
c
e
s
S
u
b
c
l
a
s
s
e
s
E
x
p
l
a
n
a
t
i
o
n
R
e
f
e
r
e
n
c
e
O
t
h
e
r
R
e
s
o
u
r
c
e
s
I
m
p
l
e
m
e
n
t
a
t
i
o
n
P
o
i
n
t
s
E
x
a
m
p
l
e
s
K
e
y
M
e
s
s
a
g
e
s
I
n
s
t
a
n
c
e
V
a
r
i
a
b
l
e
s
C
o
l
l
a
b
a
r
t
o
r
s
R
e
s
p
o
n
s
i
b
i
l
i
t
y
I
n
t
e
n
t
Categories
External
projects
Total
Core developers and external developers vary
33
We analyse from three perspectives
P1
Commenting trend
Comment
adherence to
template
P3
Comment
information types
P2
Do developers


follow guidelines?
Each community has its own guidelines
Apache
Oracle
Google Smalltalk
PEP8/257
34
Coding style guidlines
Each community has its own guidelines
Apache
Oracle
Google Smalltalk
PEP8/257
35
State a one line of summary


Summary should be written in
fi
rst
person style


Coding style guidlines
36
Smalltalk comment template
37
Measure adherence to template
38
Measure adherence to template
Color scale according to number of comments falling into a category
0 25 52
0 26 52
1 (52)
2 (52)
3 (52)
4 (52)
5 (52)
6 (52)
7 (52)
O
t
h
e
r
L
i
c
e
n
s
e
D
e
p
e
n
d
e
n
c
i
e
s
C
o
n
t
r
a
c
t
s
O
b
s
e
r
v
a
t
i
o
n
s
R
e
c
o
m
m
e
n
d
a
t
i
o
n
s
E
x
t
e
n
s
i
o
s
L
i
n
k
s
D
i
s
c
o
u
r
s
e
W
a
r
n
i
n
g
s
C
o
d
i
n
g
G
u
i
d
e
l
i
n
e
s
N
a
m
i
n
g
C
o
n
v
e
n
t
i
o
n
s
T
o
d
o
c
o
m
m
e
n
t
s
C
l
a
s
s
R
e
f
e
r
e
n
c
e
s
S
u
b
c
l
a
s
s
e
s
E
x
p
l
a
n
a
t
i
o
n
R
e
f
e
r
e
n
c
e
O
t
h
e
r
R
e
s
o
u
r
c
e
s
I
m
p
l
e
m
e
n
t
a
t
i
o
n
P
o
i
n
t
s
E
x
a
m
p
l
e
s
K
e
y
M
e
s
s
a
g
e
s
I
n
s
t
a
n
c
e
V
a
r
i
a
b
l
e
s
C
o
l
l
a
b
a
r
t
o
r
s
R
e
s
p
o
n
s
i
b
i
l
i
t
y
I
n
t
e
n
t
Categories
Pharo
versions
(total
classes)
39
31%
38%
37%
Smalltalk
Python
Java
Followed rules
31%
38%
37%
Smalltalk
Python
Java
Followed rules
Measure adherence to template
40
31%
38%
37%
30%
7%
2%
Smalltalk
Python
Java
Followed rules Not followed rules
31%
38%
37%
30%
7%
2%
Smalltalk
Python
Java
Followed rules Not followed rules
Measure adherence to template
41
31%
38%
37%
30%
7%
2%
40%
55%
60%
Smalltalk
Python
Java
Followed rules Not followed rules Not applicable rules
31%
38%
37%
30%
7%
2%
40%
55%
60%
Smalltalk
Python
Java
Followed rules Not followed rules Not applicable rules
Measure adherence to template
Developers do not always adopt conventions (not applicable rules)
42
Developers embed 23 types of information in class
comments

Developers follow template inspired information types
more often than others

Takeaway
43
The ultimate goal of automatically assessing
comments is still far away…
44
Which information types do developers find important?

How do various information types support developers?

How to extract them automatically?

Future work
45
https://twitter.com/poojaruhal http://scg.unibe.ch/staff/Pooja-Rani
What do class comments tell us? 

An investigation of comment evolution and practices in
Pharo Smalltalk
Paper

https://link.springer.com/content/pdf/10.1007/
s10664-021-09981-5.pdf

Replication Package on GitHub

https://github.com/poojaruhal/CommentAnalysisInPharo

Contact us

More Related Content

PDF
What Do Developers Discuss about Code Comments?
PDF
How to Identify Class Comment Types? A Multi-language Approach for Class Com...
PDF
PhD defense presenation
PDF
Speculative analysis for comment quality assessment
PDF
Comment soup with a pinch of types, served in a leaky bowl
PDF
Would Static Analysis Tools Help Developers with Code Reviews?
PPT
KEY
Pharo, an innovative and open-source Smalltalk
What Do Developers Discuss about Code Comments?
How to Identify Class Comment Types? A Multi-language Approach for Class Com...
PhD defense presenation
Speculative analysis for comment quality assessment
Comment soup with a pinch of types, served in a leaky bowl
Would Static Analysis Tools Help Developers with Code Reviews?
Pharo, an innovative and open-source Smalltalk

Similar to What do class comments tell us?An investigation of comment evolution and practices in Pharo Smalltalk (20)

PDF
Can We Automatically Generate Class Comments in Pharo?
PDF
Java Coding Conventions
PDF
Comment soup with a pinch of types
PPT
03 standardclasses
PDF
Can We Automatically Generate Class Comments in Pharo?
DOCX
NamingConvention
PDF
Introduction to Smalltalk
PDF
1. Coding Conventions [Part 1]
PDF
Performance from Aligning Smalltalk & Javascript Classes
PPT
4 - OOP - Taste of Smalltalk (Tamagoshi)
PDF
1. Coding Conventions [Part 2]
PDF
Smalltalk and ruby - 2012-12-08
PPTX
Smalltalk.pptx
PDF
Javaprogbasics
PDF
Lecture 8 Library classes
PPT
Chapter 2 - Getting Started with Java
PPT
Java căn bản - Chapter2
Can We Automatically Generate Class Comments in Pharo?
Java Coding Conventions
Comment soup with a pinch of types
03 standardclasses
Can We Automatically Generate Class Comments in Pharo?
NamingConvention
Introduction to Smalltalk
1. Coding Conventions [Part 1]
Performance from Aligning Smalltalk & Javascript Classes
4 - OOP - Taste of Smalltalk (Tamagoshi)
1. Coding Conventions [Part 2]
Smalltalk and ruby - 2012-12-08
Smalltalk.pptx
Javaprogbasics
Lecture 8 Library classes
Chapter 2 - Getting Started with Java
Java căn bản - Chapter2
Ad

Recently uploaded (20)

PDF
CHAPTER 3 Cell Structures and Their Functions Lecture Outline.pdf
PPTX
Introduction to Cardiovascular system_structure and functions-1
PDF
Formation of Supersonic Turbulence in the Primordial Star-forming Cloud
PDF
ELS_Q1_Module-11_Formation-of-Rock-Layers_v2.pdf
PPTX
2Systematics of Living Organisms t-.pptx
PDF
Placing the Near-Earth Object Impact Probability in Context
PDF
. Radiology Case Scenariosssssssssssssss
PPTX
ognitive-behavioral therapy, mindfulness-based approaches, coping skills trai...
PDF
The scientific heritage No 166 (166) (2025)
DOCX
Q1_LE_Mathematics 8_Lesson 5_Week 5.docx
PDF
Biophysics 2.pdffffffffffffffffffffffffff
PPT
protein biochemistry.ppt for university classes
PDF
Sciences of Europe No 170 (2025)
PPTX
TOTAL hIP ARTHROPLASTY Presentation.pptx
PDF
VARICELLA VACCINATION: A POTENTIAL STRATEGY FOR PREVENTING MULTIPLE SCLEROSIS
PDF
Assessment of environmental effects of quarrying in Kitengela subcountyof Kaj...
PPTX
Introduction to Fisheries Biotechnology_Lesson 1.pptx
PDF
lecture 2026 of Sjogren's syndrome l .pdf
PPTX
ANEMIA WITH LEUKOPENIA MDS 07_25.pptx htggtftgt fredrctvg
PPTX
Pharmacology of Autonomic nervous system
CHAPTER 3 Cell Structures and Their Functions Lecture Outline.pdf
Introduction to Cardiovascular system_structure and functions-1
Formation of Supersonic Turbulence in the Primordial Star-forming Cloud
ELS_Q1_Module-11_Formation-of-Rock-Layers_v2.pdf
2Systematics of Living Organisms t-.pptx
Placing the Near-Earth Object Impact Probability in Context
. Radiology Case Scenariosssssssssssssss
ognitive-behavioral therapy, mindfulness-based approaches, coping skills trai...
The scientific heritage No 166 (166) (2025)
Q1_LE_Mathematics 8_Lesson 5_Week 5.docx
Biophysics 2.pdffffffffffffffffffffffffff
protein biochemistry.ppt for university classes
Sciences of Europe No 170 (2025)
TOTAL hIP ARTHROPLASTY Presentation.pptx
VARICELLA VACCINATION: A POTENTIAL STRATEGY FOR PREVENTING MULTIPLE SCLEROSIS
Assessment of environmental effects of quarrying in Kitengela subcountyof Kaj...
Introduction to Fisheries Biotechnology_Lesson 1.pptx
lecture 2026 of Sjogren's syndrome l .pdf
ANEMIA WITH LEUKOPENIA MDS 07_25.pptx htggtftgt fredrctvg
Pharmacology of Autonomic nervous system
Ad

What do class comments tell us?An investigation of comment evolution and practices in Pharo Smalltalk

  • 1. What do class comments tell us? An investigation of comment evolution and practices in Pharo Smalltalk Pooja Rani, Sebastiano Panichella, Manuel Leuenberger, Mohammad Ghafari, Oscar Nierstrasz Journal First
  • 2. /** * A class representing a window on the screen. * * For example: * <pre> * Window win = new Window(parent); * win.show(); * </pre> * * @author Sami Shaio * @version 1.13, 06/08/06 * @see java.awt.BaseWindow */ class Window extends BaseWindow { … } 2 Motivation High-quality code comments assist developers - Dekel et al. 2009 Java class comment
  • 3. /** * A class representing a window on the screen. * * For example: * <pre> * Window win = new Window(parent); * win.show(); * </pre> * * @author Sami Shaio * @version 1.13, 06/08/06 * @see java.awt.BaseWindow */ class Window extends BaseWindow { … } 3 Motivation Java class comment Different languages use different conventions to write comments Smalltalk class comment
  • 4. 4
  • 5. 5
  • 9. 9 Class comments are a main source of documentation No strict comment conventions, such as tags Lack of quality assessment tools Lack of empirical studies Challenges
  • 10. 10 Class comments are a main source of documentation No strict comment conventions such as tags Lack of quality assessment tools Lack of empirical studies Challenges
  • 11. 11 Class comments are a main source of documentation No strict comment conventions such as tags Lack of quality assessment tools Lack of empirical studies Challenges
  • 12. 12 Class comments are a main source of documentation No strict comment conventions such as tags Lack of quality assessment tools Lack of empirical studies Challenges
  • 13. 13 Class comments are a main source of documentation No strict comment conventions such as tags Lack of quality assessment tools Lack of empirical studies Requires empirical knowledge Using previous techniques a non-trivial task Challenges
  • 14. 14 We study Smalltalk class comments
  • 15. 15 We analyse from three perspectives P1 Commenting trend Comment adherence to template P3 Comment information types P2
  • 16. 16 We analyse from three perspectives P1 Commenting trend Comment adherence to template P3 Comment information types P2 How often developers write?
  • 18. 18 Commenting trend ■ Pharo software system (first appeared in 2008) ■ Study its seven versions from 2008-2019 (11 years) https://en.wikipedia.org/wiki/Pharo https://pharo.org/
  • 19. 19 0 1000 2000 3000 4000 5000 6000 7000 8000 2 3 4 5 6 7 # Classes Pharo versions New classes Old classes unchanged Old classes only comment changed Old classes only code changed Old classes comment and code changed 50% of comment changes were related to code changes
  • 20. 20 0 100 200 300 400 500 600 700 800 2 3 4 5 6 7 # Classes Pharo versions Comments removed of old classes Comments added to old classes Comments updated of old classes developers add or update comment of old classes
  • 21. 21 We analyse from three perspectives P1 Commenting trend Comment adherence to template P3 Comment information types P2 What do developers write?
  • 22. 22 Implementation details Intent Example Unlike Java and Python, there is no comment taxonomy Smalltalk class comments
  • 23. 23 Information types in Smalltalk 7 Pharo versions 2008-2019 364 sample comments Smalltalk class comments contain 23 types of information
  • 24. 24 Color scale according to number of comments falling into a category 0 25 52 0 26 52 1 (52) 2 (52) 3 (52) 4 (52) 5 (52) 6 (52) 7 (52) O t h e r L i c e n s e D e p e n d e n c i e s C o n t r a c t s O b s e r v a t i o n s R e c o m m e n d a t i o n s E x t e n s i o s L i n k s D i s c o u r s e W a r n i n g s C o d i n g G u i d e l i n e s N a m i n g C o n v e n t i o n s T o d o c o m m e n t s C l a s s R e f e r e n c e s S u b c l a s s e s E x p l a n a t i o n R e f e r e n c e O t h e r R e s o u r c e s I m p l e m e n t a t i o n P o i n t s E x a m p l e s K e y M e s s a g e s I n s t a n c e V a r i a b l e s C o l l a b a r t o r s R e s p o n s i b i l i t y I n t e n t Categories Pharo versions (total classes) Smalltalk class comments contain 23 types of information Information types in Smalltalk
  • 25. 25 Color scale according to number of comments falling into a category 0 25 52 0 26 52 1 (52) 2 (52) 3 (52) 4 (52) 5 (52) 6 (52) 7 (52) O t h e r L i c e n s e D e p e n d e n c i e s C o n t r a c t s O b s e r v a t i o n s R e c o m m e n d a t i o n s E x t e n s i o s L i n k s D i s c o u r s e W a r n i n g s C o d i n g G u i d e l i n e s N a m i n g C o n v e n t i o n s T o d o c o m m e n t s C l a s s R e f e r e n c e s S u b c l a s s e s E x p l a n a t i o n R e f e r e n c e O t h e r R e s o u r c e s I m p l e m e n t a t i o n P o i n t s E x a m p l e s K e y M e s s a g e s I n s t a n c e V a r i a b l e s C o l l a b a r t o r s R e s p o n s i b i l i t y I n t e n t Categories Pharo versions (total classes)
  • 26. 26 Color scale according to number of comments falling into a category 0 25 52 0 26 52 1 (52) 2 (52) 3 (52) 4 (52) 5 (52) 6 (52) 7 (52) O t h e r L i c e n s e D e p e n d e n c i e s C o n t r a c t s O b s e r v a t i o n s R e c o m m e n d a t i o n s E x t e n s i o s L i n k s D i s c o u r s e W a r n i n g s C o d i n g G u i d e l i n e s N a m i n g C o n v e n t i o n s T o d o c o m m e n t s C l a s s R e f e r e n c e s S u b c l a s s e s E x p l a n a t i o n R e f e r e n c e O t h e r R e s o u r c e s I m p l e m e n t a t i o n P o i n t s E x a m p l e s K e y M e s s a g e s I n s t a n c e V a r i a b l e s C o l l a b a r t o r s R e s p o n s i b i l i t y I n t e n t Categories Pharo versions (total classes)
  • 27. 27 High-level overview Color scale according to number of comments falling into a category 0 25 52 0 26 52 1 (52) 2 (52) 3 (52) 4 (52) 5 (52) 6 (52) 7 (52) O t h e r L i c e n s e D e p e n d e n c i e s C o n t r a c t s O b s e r v a t i o n s R e c o m m e n d a t i o n s E x t e n s i o s L i n k s D i s c o u r s e W a r n i n g s C o d i n g G u i d e l i n e s N a m i n g C o n v e n t i o n s T o d o c o m m e n t s C l a s s R e f e r e n c e s S u b c l a s s e s E x p l a n a t i o n R e f e r e n c e O t h e r R e s o u r c e s I m p l e m e n t a t i o n P o i n t s E x a m p l e s K e y M e s s a g e s I n s t a n c e V a r i a b l e s C o l l a b a r t o r s R e s p o n s i b i l i t y I n t e n t Categories Pharo versions (total classes)
  • 28. Color scale according to number of comments falling into a category 0 25 52 0 26 52 1 (52) 2 (52) 3 (52) 4 (52) 5 (52) 6 (52) 7 (52) O t h e r L i c e n s e D e p e n d e n c i e s C o n t r a c t s O b s e r v a t i o n s R e c o m m e n d a t i o n s E x t e n s i o s L i n k s D i s c o u r s e W a r n i n g s C o d i n g G u i d e l i n e s N a m i n g C o n v e n t i o n s T o d o c o m m e n t s C l a s s R e f e r e n c e s S u b c l a s s e s E x p l a n a t i o n R e f e r e n c e O t h e r R e s o u r c e s I m p l e m e n t a t i o n P o i n t s E x a m p l e s K e y M e s s a g e s I n s t a n c e V a r i a b l e s C o l l a b a r t o r s R e s p o n s i b i l i t y I n t e n t Categories Pharo versions (total classes) 28 High-level overview Conversation exchanged
  • 29. 29 Color scale according to number of comments falling into a category 0 25 52 0 26 52 1 (52) 2 (52) 3 (52) 4 (52) 5 (52) 6 (52) 7 (52) O t h e r L i c e n s e D e p e n d e n c i e s C o n t r a c t s O b s e r v a t i o n s R e c o m m e n d a t i o n s E x t e n s i o s L i n k s D i s c o u r s e W a r n i n g s C o d i n g G u i d e l i n e s N a m i n g C o n v e n t i o n s T o d o c o m m e n t s C l a s s R e f e r e n c e s S u b c l a s s e s E x p l a n a t i o n R e f e r e n c e O t h e r R e s o u r c e s I m p l e m e n t a t i o n P o i n t s E x a m p l e s K e y M e s s a g e s I n s t a n c e V a r i a b l e s C o l l a b a r t o r s R e s p o n s i b i l i t y I n t e n t Categories Pharo versions (total classes)
  • 30. 30 Color scale according to number of comments falling into a category 0 25 52 0 26 52 1 (52) 2 (52) 3 (52) 4 (52) 5 (52) 6 (52) 7 (52) O t h e r L i c e n s e D e p e n d e n c i e s C o n t r a c t s O b s e r v a t i o n s R e c o m m e n d a t i o n s E x t e n s i o s L i n k s D i s c o u r s e W a r n i n g s C o d i n g G u i d e l i n e s N a m i n g C o n v e n t i o n s T o d o c o m m e n t s C l a s s R e f e r e n c e s S u b c l a s s e s E x p l a n a t i o n R e f e r e n c e O t h e r R e s o u r c e s I m p l e m e n t a t i o n P o i n t s E x a m p l e s K e y M e s s a g e s I n s t a n c e V a r i a b l e s C o l l a b a r t o r s R e s p o n s i b i l i t y I n t e n t Categories Pharo versions (total classes) Internal (Pharo core)
  • 31. Color scale according to number of comments falling into a category 0 25 52 0 26 52 1 (52) 2 (52) 3 (52) 4 (52) 5 (52) 6 (52) 7 (52) O t h e r L i c e n s e D e p e n d e n c i e s C o n t r a c t s O b s e r v a t i o n s R e c o m m e n d a t i o n s E x t e n s i o s L i n k s D i s c o u r s e W a r n i n g s C o d i n g G u i d e l i n e s N a m i n g C o n v e n t i o n s T o d o c o m m e n t s C l a s s R e f e r e n c e s S u b c l a s s e s E x p l a n a t i o n R e f e r e n c e O t h e r R e s o u r c e s I m p l e m e n t a t i o n P o i n t s E x a m p l e s K e y M e s s a g e s I n s t a n c e V a r i a b l e s C o l l a b a r t o r s R e s p o n s i b i l i t y I n t e n t Categories Pharo versions (total classes) 31 Color scale according to percentage of comments falling into a category Internal External GToolkit Seaside Roassal Moose PolyMath Petit Pillar O t h e r L i c e n s e D e p e n d e n c i e s C o n t r a c t s O b s e r v a t i o n s R e c o m m e n d a t i o n s E x t e n s i o s L i n k s D i s c o u r s e W a r n i n g s C o d i n g G u i d e l i n e s N a m i n g C o n v e n t i o n s T o d o c o m m e n t s C l a s s R e f e r e n c e s S u b c l a s s e s E x p l a n a t i o n R e f e r e n c e O t h e r R e s o u r c e s I m p l e m e n t a t i o n P o i n t s E x a m p l e s K e y M e s s a g e s I n s t a n c e V a r i a b l e s C o l l a b a r t o r s R e s p o n s i b i l i t y I n t e n t External projects Total Internal (Pharo core)
  • 32. 32 Color scale according to percentage of comments falling into a category 0 50 100 Internal External GToolkit Seaside Roassal Moose PolyMath Petit Pillar O t h e r L i c e n s e D e p e n d e n c i e s C o n t r a c t s O b s e r v a t i o n s R e c o m m e n d a t i o n s E x t e n s i o s L i n k s D i s c o u r s e W a r n i n g s C o d i n g G u i d e l i n e s N a m i n g C o n v e n t i o n T o d o c o m m e n t s C l a s s R e f e r e n c e s S u b c l a s s e s E x p l a n a t R e f e r e n c e O t h e r R e s I m p l e m e n t a t i o n P o i E x a m p l e s K e y M e s s a g e s I n s t a n c e V a r i a b l e s C o l l a b a r t o r s R e s p o n s i b i l i t y I n t e n t External projects Total Color scale according to percentage of comments falling into a category Internal External GToolkit Seaside Roassal Moose PolyMath Petit Pillar O t h e r L i c e n s e D e p e n d e n c i e s C o n t r a c t s O b s e r v a t i o n s R e c o m m e n d a t i o n s E x t e n s i o s L i n k s D i s c o u r s e W a r n i n g s C o d i n g G u i d e l i n e s N a m i n g C o n v e n t i o n s T o d o c o m m e n t s C l a s s R e f e r e n c e s S u b c l a s s e s E x p l a n a t i o n R e f e r e n c e O t h e r R e s o u r c e s I m p l e m e n t a t i o n P o i n t s E x a m p l e s K e y M e s s a g e s I n s t a n c e V a r i a b l e s C o l l a b a r t o r s R e s p o n s i b i l i t y I n t e n t Categories External projects Total Core developers and external developers vary
  • 33. 33 We analyse from three perspectives P1 Commenting trend Comment adherence to template P3 Comment information types P2 Do developers follow guidelines?
  • 34. Each community has its own guidelines Apache Oracle Google Smalltalk PEP8/257 34 Coding style guidlines
  • 35. Each community has its own guidelines Apache Oracle Google Smalltalk PEP8/257 35 State a one line of summary Summary should be written in fi rst person style Coding style guidlines
  • 38. 38 Measure adherence to template Color scale according to number of comments falling into a category 0 25 52 0 26 52 1 (52) 2 (52) 3 (52) 4 (52) 5 (52) 6 (52) 7 (52) O t h e r L i c e n s e D e p e n d e n c i e s C o n t r a c t s O b s e r v a t i o n s R e c o m m e n d a t i o n s E x t e n s i o s L i n k s D i s c o u r s e W a r n i n g s C o d i n g G u i d e l i n e s N a m i n g C o n v e n t i o n s T o d o c o m m e n t s C l a s s R e f e r e n c e s S u b c l a s s e s E x p l a n a t i o n R e f e r e n c e O t h e r R e s o u r c e s I m p l e m e n t a t i o n P o i n t s E x a m p l e s K e y M e s s a g e s I n s t a n c e V a r i a b l e s C o l l a b a r t o r s R e s p o n s i b i l i t y I n t e n t Categories Pharo versions (total classes)
  • 40. 40 31% 38% 37% 30% 7% 2% Smalltalk Python Java Followed rules Not followed rules 31% 38% 37% 30% 7% 2% Smalltalk Python Java Followed rules Not followed rules Measure adherence to template
  • 41. 41 31% 38% 37% 30% 7% 2% 40% 55% 60% Smalltalk Python Java Followed rules Not followed rules Not applicable rules 31% 38% 37% 30% 7% 2% 40% 55% 60% Smalltalk Python Java Followed rules Not followed rules Not applicable rules Measure adherence to template Developers do not always adopt conventions (not applicable rules)
  • 42. 42 Developers embed 23 types of information in class comments Developers follow template inspired information types more often than others Takeaway
  • 43. 43 The ultimate goal of automatically assessing comments is still far away…
  • 44. 44 Which information types do developers find important? How do various information types support developers? How to extract them automatically? Future work
  • 45. 45 https://twitter.com/poojaruhal http://scg.unibe.ch/staff/Pooja-Rani What do class comments tell us? An investigation of comment evolution and practices in Pharo Smalltalk Paper https://link.springer.com/content/pdf/10.1007/ s10664-021-09981-5.pdf Replication Package on GitHub https://github.com/poojaruhal/CommentAnalysisInPharo Contact us