A namespace is a unique name which groups certain things (like procedures, constants, variables, templates) together.
A namespace is used to uniquely identify one or more names from other similar names of different objects, groups or the namespace in general. Namespace makes it possible to distinguish objects with similar names but different origins. — Techopedia
All exported symbols (procedures, constants and variables) need to be unique in the system and thus needs to be in a namespace. But as RPG does not support the namespace concept we have to make those symbols unique by prefixing them with a namespace, f. e.
arraylist_create. There could have been dozens of
create procedures. But by putting a namespace in front of the procedure name it will be unique in the system.
If a program or service program is made up of multiple modules then I also prefix the exported symbols with a subnamespace, f. e.
stream is the namespace and
emitter is the subnamespace.
I try to use whole words for namespaces. This makes it easier to read and remember.