I did not mean that you would call read from inside the module definition. I meant that you would utilize the $include directive inside the module definition.
I meant that the read command would be called only once, on the master source plaintext file for the module definition. The body of the module definition could then have many $include lines (ie. one per procedure, each stored in its own plaintext file).
Member dharr has illustrated it as I meant, in this Answer.
The basic idea is that the module definition is in one text file, and all its local and export procedures or submodules are $include'd from separate text files. (They might then have their own, distinct, revision control.)
I suggest not naming plaintext files with the .maple filename extension, as the Maple GUI uses that for its workbook format. I use the following convention:
.mpl for the plaintext file containg the module framework
.mm for the plaintext files containing the module members (local procedures, exports, or submodule definitions)
.mi for the plaintext files of anything else $include'd during the module definition (tables, re-used boilerplate, etc)