ECE 2524

Introduction to Unix for Engineers

Thankful it's only a simulation!

Usage

  • The README contained everything I needed to easily use the program:

    formatting is off making it awkward to read on github. Markdown uses indentation to mark text as code blocks, remove the leading spaces before the second paragraph.

  • The program compiles/runs without errors:

  • The program worked as advertised:

Style

  • The code is cleaning divided into modules and multiple files:

    a bit of refactoring might be useful, e.g. why not allow Monster::init accept a dict argument and encapsulate GenMonster into the object? There are valid reasons not to do this, but I think it this case it would make sense.

  • Variable and function names are meaningful:

  • Comments are used where appropriate:

    using Python's docstrings in place of function # comments would allow for automatic documentation generation.

Philosophy

  • The program most closely follows the ed-like interface pattern:

  • This choice of pattern is a good one for this application:

  • This program follows the Rule of Silence and Least Surprise:

  • This program follows the Rules of Modularity and Composition:

    checking for a starting vowel to use either 'a' or 'an' is a nice touch, but this would be best moved to a separate linquistics module so it might be more easily used by other parts of the program, or other programs. This would also make it feasible to add more sophisticated linquistic transformation, in particular, starting with a vowel isn't a guaranteed test to determine if 'a' or 'an' should be used, rather we want to test if the word starts with a vowel sound.

  • This program follows the Rules of Representation and Simplicity:

    In record_jar_reader.py the loadFiles function takes two file name arguments, but these don't appear to be used, instead the function uses string literals to define the two data file names. It's great that monsters and weapons are defined in record jar files. If a similar approach were taken with the commands it would eliminate the need to explicitly list the commands in a string literal which duplicates information and makes bugs/inconsistancies more likely.