Intentional

Intentional solutions are well-planned and meet the specific needs of your business. They are designed with clear goals and objectives in mind.

Anti-patterns

Undocumented Apex methods

Documenting code through comments can quickly help others understand the functionality of different classes and methods.
View anti-pattern

Missing custom fields description

Using field descriptions helps keeping your application well documented and easy to maintain.
View anti-pattern

Inconsistent naming Apex test classes

Naming conventions help drive consistency across the application, which makes source code easier to read and understand.
View anti-pattern

Use of deprecated: API version

Using the latest (or a sufficiently recent) version of the Salesforce API is generally a best practice to leverage the most recent features and reduce the risk of bugs.
View anti-pattern

Inconsistent naming Apex methods

Naming conventions help drive consistency across the application, which makes source code easier to read and understand.
View anti-pattern

Missing comment in test assertions

Assertions let you test the behaviour of your application, increasing your confidence that your logic works as expected. Adding precise assertions to your tests is one of the most effective ways to detect and correct bugs. Using comments to describe the rationale of each assertion has the added benefit of documenting the inner working of the application logic, enhancing maintainability.
View anti-pattern

Inconsistent naming Apex classes

Naming conventions help drive consistency across the application, which makes source code easier to read and understand.
View anti-pattern

Inconsistent naming Apex variables

Naming conventions help drive consistency across the application, which makes source code easier to read and understand.
View anti-pattern

Missing custom objects description

Using descriptions helps keep your application well-documented and easy to maintain.
View anti-pattern

Missing descriptions in flows

Using descriptions helps keep your Flows well documented and easy to maintain.
View anti-pattern

Inconsistent naming Apex  inner classes

Naming conventions help drive consistency across the application, which makes source code easier to read and understand.
View anti-pattern

Unused Apex method

Removing unnecessary code makes your app cleaner, more efficient and easier to understand.
View anti-pattern

Inconsistent naming custom object

Naming conventions help drive consistency across the application, which makes source code easier to read and understand.
View anti-pattern

Inconsistent naming custom fields

Naming conventions help drive consistency across the application, which makes source code easier to read and understand.
View anti-pattern

Inconsistent naming Apex triggers

Naming conventions help drive consistency across the application, which makes source code easier to read and understand.
View anti-pattern

Inline JavaScript

Malicious code injected through inline JavaScript can exploit vulnerabilities, allowing injection attacks like cross-site scripting (XSS), which can lead to site defacement, unauthorized access, and data theft.
View anti-pattern

Visualforce Tags not supported by Salesforce1

Most core Visualforce components function normally within Salesforce1. Unfortunately, that doesn't mean they're optimised for mobile, or that every feature works with Salesforce1.
View anti-pattern

Inconsistent naming Apex test classes (inner classes)

Naming conventions help drive consistency across the application, which makes source code easier to read and understand.
View anti-pattern

Inactive flows

As a best practice, teams should remove any logic that is no longer required to keep the application cleaner, more efficient and easier to understand and maintain.
View anti-pattern

Hardcoded callouts authentication

Named credentials make callouts much easier to maintain. For example, if an endpoint URL changes, named credentials allow updating it without any code changes. Furthermore, named credentials don’t need remote site settings, otherwise required for callouts to external sites via Apex.
View anti-pattern

Excessive nesting of conditional statements

Nesting many conditional statements makes code generally harder to read, test and more prone to bugs.
View anti-pattern

Inline Cascading Style Sheets (CSS)

When using CSS style tags and attributes, the HTML parser switches to CDATA or raw text context, which is prone to code injection. For this reason, using inline CSS is considered unsafe and should be avoided.
View anti-pattern

Inactive workflows

As a best practice, teams should remove any logic that is no longer required to keep the application cleaner, more efficient and easier to understand and maintain.
View anti-pattern

Use of deprecated: methods in URL Class

In API version 59.0 and later, the getSalesforceBaseUrl() method is deprecated and versioned out.
View anti-pattern

Inactive validation rules

As a best practice, teams should remove any logic that is no longer required to keep the application cleaner, more efficient and easier to understand and maintain.
View anti-pattern

Inactive workflow rules

As a best practice, teams should remove any logic that is no longer required to keep the application cleaner, more efficient and easier to understand and maintain.
View anti-pattern

Use of deprecated: Salesforce API (21-30)

Versions 21.0 through 30.0 of the Salesforce Platform SOAP, REST, and Bulk APIs will be deprecated and no longer supported in the Summer '23 release. Applications should be modified to consume the latest available API version.
View anti-pattern

Use of deprecated: SiteSettings

The enableExperienceFriendlyUrls field on the SiteSettings metadata type has been deprecated.
View anti-pattern

Use of deprecated: Streaming API versions

Streaming API versions 23.0 through 36.0 are scheduled for retirement in Winter '25.
View anti-pattern

Use of deprecated: Salesforce Functions

On January 31, 2025, Salesforce is retiring Salesforce Functions, also known as Salesforce Elastic Services.
View anti-pattern

Use of deprecated: AccountInsights and OpportunityInsights Settings

The “AccountInsightsSettings” and “OpportunityInsightsSettings” metadata types have been deprecated as of API version 59.0.
View anti-pattern

Invalid RestResponse headers

With Spring '24 regardless of API version, Salesforce will enforce all REST response headers defined in Apex via the RestResponse.addHeader(name, value) method to have valid names in accordance with RFC 7230.
View anti-pattern

Inconsistent naming Aura controller properties

Naming conventions help drive consistency across the application, which makes source code easier to read and understand.
View anti-pattern

Access to Session ID in flows

To improve org security, an updated enforced with Summer '23 update prevents flows from accessing the $Api.Session_ID variable.
View anti-pattern