In an effort to consolidate USGS hosted Wikis, myUSGS’ Confluence service is scheduled for retirement on January 27th, 2023. The official USGS Wiki and collaboration space is now SharePoint. Please migrate existing spaces and content to the SharePoint platform and remove it from Confluence at your earliest convenience. If you need any additional information or have any concerns about this change, please contact firstname.lastname@example.org. Thank you for your prompt attention to this matter.
Avoid spaces or any special characters in pathnames. Including spaces in folder names may work.
Avoid long pathnames. Try to "flatten" your folder structures so that your system pathnames under 128 characters. It is likely you can go higher but not that much: the absolute Windows pathname limit (MAXPATH) is 260 characters. (This actually makes sense if 256 is the real ancestral limit: 1+2+256+1 or [drive][:\][path][null] = 260)
Never begin an ArcGIS object name (table, field, relationship class, mxd file, folder, etc) with a number or any other non-alpha character. The only recommended non alphanumeric to use is "_". Other characters like (" ", "%$.,-", etc) are not advisable.
Try to avoid names that may conflict with SQL other language reserved words. For example: OBJECTID, VALUE, COUNT, NOT, OR, ON, IN, OVER, SELECT.
All field names should contain 10 characters or less. This is a dBase limit, so it applies to .dbf files AND shape files. For that reason it's best practice in case you need to go "through" a dbf based format. Coverage and grid names have a limit of 13 characters, but 10 is safer. It's still an 8.3 world sometimes. Deal with it.
If you choose to use names that do not follow these rules, be warned that you may be causing unnecessary trouble when you try to convert the data to a format or run a tool down the road.
Raster file names can be particularly problematic. Raster dataset names MUST start with a letter and it is best to keep the filename under 14 characters to support Esri grid format.
The arcpy methods ValidateFieldName and ValidateTableName can be used at parameter validation time, or in your code, to prevent users of your tool from inserting invalid output names. The CreateScratchName method if provided the proper arguments, will generate valid dataset names.