Here are ten best practices for Salesforce Apex programming:

1. Follow Coding Standards: Adhere to consistent naming conventions, indentation, and commenting. This makes the code readable and maintainable.

2. Bulkify Your Code: Always write code that can handle multiple records efficiently. Use collections like lists, sets, and maps to process bulk records to avoid hitting governor limits.

3. Avoid SOQL in Loops: Never place SOQL or DML statements inside loops. This can lead to exceeding governor limits. Instead, query or modify data outside the loop and process it in memory.

4. Use Efficient SOQL Queries: Retrieve only the necessary fields and records to reduce the amount of data transferred and processed. Use indexed fields in WHERE clauses to improve query performance.

5. Handle Exceptions Properly: Use try-catch blocks to handle exceptions and ensure that errors are logged appropriately. This helps in diagnosing and fixing issues more efficiently.

6. Leverage Apex Triggers Wisely: Use trigger frameworks to control the execution flow and avoid recursion. Ensure that triggers are bulkified and perform minimal logic by delegating complex processing to helper classes.

7. Optimize DML Operations: Minimize the number of DML statements by grouping records into a single insert, update, or delete operation. This reduces the likelihood of hitting governor limits.

8. Write Unit Tests: Ensure that your Apex code has comprehensive unit tests with at least 75% code coverage. Test for both positive and negative scenarios to validate the code's behavior.

9. Use Custom Settings and Custom Metadata Types: Store configuration data in custom settings or custom metadata types to avoid hardcoding values. This makes the code more flexible and easier to maintain.

10. Monitor and Optimize Performance: Use Salesforce’s developer tools like the Debug Log and the Query Plan tool to monitor and optimize the performance of your Apex code. Regularly review and refactor the code to improve efficiency.

Implementing these best practices will help you write robust, efficient, and maintainable Apex code in Salesforce.