In a large management system, you can analyze and define the main functional module interface, function functions, universal variables, subroutines in advance. Then package it. Other team members can only inherit and call on the basis.
In my development group we divide the system into maintenance part (TQueryFRM), print part (TLOCATEFRM), select List (TselectFRM).
This reduces workload, increase development efficiency, reduce redundant code, and reduce post-maintenance.
At the same time, you should do a good job before development. Such as: (Note: func_name ---> Function Name)
Form: FUNC_NAME FRM '| Others:
Unit: FUNC_NAME 'Unit' | Naming Rules for Database Controls
Project: FUNC_NAME 'PRJ' | Common Non-Database Control Naming Rules
Process: FUNC_NAME 'PRC' | Naming Rules for Database
Function: FUNC_NAME FUN '| Naming Rules for Database Table
Constant: FUNC_NAME 'Const' | Naming Rules for Database Fields
Local variable: FUNC_NAME 'PRV' | Naming Rules for Database Indexes
Global variable: FUNC_NAME 'GLO' | Naming Rules for Database Storage Process
and many more. (If you are interested in understanding, you can send your email.)