4

Overall review I think it's too early to give a profound review of your architecture, so here's only what I found at a quick glance. It would be helpful to see the interface definitions besides the Engine class, at least (with Javadoc, please). Naming conventions With Java naming conventions, method names begin with lower case. Javadoc There are no Javadoc ...


2

Types should be discriminated This way of having one mega container that doesn't discriminate will make the code run through all objects multiple times. Let's imagine there are 10000 objects (because particles, for instance), but only 3 MouseInputter? Well, the CPU will do nothing but loop 99.997% of the time. Just create several Maps: one for your entities ...


2

Your try: value = socket.gethostbyname(s) except socket.gaierror: raise argparse.ArgumentTypeError(f"Host '{s}' could not be resolved.") return value should probably be try: return socket.gethostbyname(s) except socket.gaierror as e: raise argparse.ArgumentTypeError(f"Host '{s}' could not be resolved.") from e in other ...


2

It's finished and works nicely however I am not very happy with having to write twice global host_IP in main() and scan_tcp(). I don't really understand the issue. The variable already has global scope since you assign it a None value on top of your code. Then all you have to do is pass it as a function argument, for example (preferably in lowercase ...


Only top voted, non community-wiki answers of a minimum length are eligible