Open miikka opened 4 years ago
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.
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
.
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.
update-note
that I'd like to see covered if this was a real application.