You can use below command to avoid the use of public synonyms. By setting the current_schema attribute to the schema owner name it is not necessary to create public synonyms for production table names
ALTER SESSION SET CURRENT_SCHEMA = "XX_SCHEMA_NAME"
Ex: ALTER SESSION SET CURRENT_SCHEMA = "APPS"