mirror of
https://github.com/evennia/evennia.git
synced 2026-03-17 05:16:31 +01:00
46 lines
No EOL
2.1 KiB
Markdown
46 lines
No EOL
2.1 KiB
Markdown
# API refactoring
|
|
|
|
Building up to Evennia 1.0 and beyond, it's time to comb through the Evennia API for old cruft. This
|
|
whitepage is for anyone interested to contribute with their views on what part of the API needs
|
|
refactoring, cleanup or clarification (or extension!)
|
|
|
|
Note that this is not a forum. To keep things clean, each opinion text should ideally present a
|
|
clear argument or lay out a suggestion. Asking for clarification and any side-discussions should be
|
|
held in chat or forum.
|
|
|
|
---
|
|
|
|
### Griatch (Aug 13, 2019)
|
|
|
|
This is how to enter an opinion. Use any markdown needed but stay within your section. Also remember
|
|
to copy your text to the clipboard before saving since if someone else edited the wiki in the
|
|
meantime you'll have to start over.
|
|
|
|
### Griatch (Sept 2, 2019)
|
|
|
|
I don't agree with removing explicit keywords as suggested by [Johnny on Aug 29 below](API-
|
|
refactoring#reduce-usage-of-optionalpositional-arguments-aug-29-2019). Overriding such a method can
|
|
still be done by `get(self, **kwargs)` if so desired, making the kwargs explicit helps IMO
|
|
readability of the API. If just giving a generic `**kwargs`, one must read the docstring or even the
|
|
code to see which keywords are valid.
|
|
|
|
On the other hand, I think it makes sense to as a standard offer an extra `**kwargs` at the end of
|
|
arg-lists for common methods that are expected to be over-ridden. This make the API more flexible by
|
|
hinting to the dev that they could expand their own over-ridden implementation with their own
|
|
keyword arguments if so desired.
|
|
|
|
---
|
|
|
|
### Johnny
|
|
|
|
#### Reduce usage of optional/positional arguments (Aug 29, 2019)
|
|
```
|
|
# AttributeHandler
|
|
def get(self, key=None, default=None, category=None, return_obj=False,
|
|
strattr=False, raise_exception=False, accessing_obj=None,
|
|
default_access=True, return_list=False):
|
|
```
|
|
Many classes have methods requiring lengthy positional argument lists, which are tedious and error-
|
|
prone to extend and override especially in cases where not all arguments are even required. It would
|
|
be useful if arguments were reserved for required inputs and anything else relegated to kwargs for
|
|
easier passthrough on extension. |