codexog / otm-notes

Course Project
1 stars 0 forks source link

Review #1

Open miikka opened 4 years ago

miikka commented 4 years ago

Background: I've been asked to review this course project. I'm not familiar with the requirements of Ohjelmistotekniikan menetelmät; these are my observations as a professional software developer assessing a new codebase.

Usability

The graphical user interface is simple and I quickly learned to use it. It seems to work in general. However, I immediately encountered a number of problems when I tried it out:

Both the graphical interface and the command-line interface have a number of low-hanging fruit improvements that I'd consider essential if you were developing a real application.

Project setup

The project is set up with modern Clojure tooling. I followed the instructions in the documentation and everything worked as I expected as an experienced Clojure developer. Only the name of the JAR file is wrong in README.

Software design

In general, the code is clear and idiomatic Clojure. The architecture is well-designed:

These make the code easy to test and change.

I have some reservations about the data model implemented in otm_notes/notes.clj. The note database consists of a note register, which is a mapping from node ids to note contents, and a tag register, which is a mapping from tags to notes.

Testing

The unit tests cover the core note database operations, but not much else.

codexog commented 4 years ago

Usability

Most of the issues pertaining to the usability are resolved by reading the Manual. There is a way to load the notes, the fact that tags are space separated is mentioned explicitly. The fact that there isn't a warning in case saving fails is accurate.

Software design

It is true that the notes are added to a map which doesn't maintain any particular order. However the notes are displayed in lexicographical according to the uid in the graphical user interface, and therefore their order is in fact well defined and stable. See otm_notes/ui/jfx.