Getting IDsby loopinstead ofMap(records)Checkingcollectionemptinessbefore DMLGiganticFlow insteadof multipleSubflowsAll classes inwithout sharingmodeExcessiveamount ofSystem.Debug()SOQLswithoutWHERE orLIMIT outsideBatchHard-codedIDHard-codedauthenticationinstead ofusing NamedCredentialsOnlycatchinggeneralException intry-catchDMLsin loopMissingbulk testsin testclassesExcessivelack of.startTest()and.stopTest()Noassertionsin TestsPublicRead/WriteOWDsNon‑descriptivevariable namesin FlowSOQLsin loopExactly75% testcoverageUsingProfilesinstead ofPermissionSetsNo flags todeactivatetrigger andvalidation rulesdeclarativelyMultiple RecordTriggeredFlows on sameOperationTypeon one sObjectNo FaultPaths inFlowsNo testdatafactory orbuilderMultipletriggerson onesObjectCode intriggerinstead ofTriggerHandlerGetting IDsby loopinstead ofMap(records)Checkingcollectionemptinessbefore DMLGiganticFlow insteadof multipleSubflowsAll classes inwithout sharingmodeExcessiveamount ofSystem.Debug()SOQLswithoutWHERE orLIMIT outsideBatchHard-codedIDHard-codedauthenticationinstead ofusing NamedCredentialsOnlycatchinggeneralException intry-catchDMLsin loopMissingbulk testsin testclassesExcessivelack of.startTest()and.stopTest()Noassertionsin TestsPublicRead/WriteOWDsNon‑descriptivevariable namesin FlowSOQLsin loopExactly75% testcoverageUsingProfilesinstead ofPermissionSetsNo flags todeactivatetrigger andvalidation rulesdeclarativelyMultiple RecordTriggeredFlows on sameOperationTypeon one sObjectNo FaultPaths inFlowsNo testdatafactory orbuilderMultipletriggerson onesObjectCode intriggerinstead ofTriggerHandler

Salesforce Development Practices Bingo - Call List

(Print) Use this randomly generated list as your call list when playing the game. There is no need to say the BINGO column name. Place some kind of mark (like an X, a checkmark, a dot, tally mark, etc) on each cell as you announce it, to keep track. You can also cut out each item, place them in a bag and pull words from the bag.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
  1. Getting IDs by loop instead of Map(records)
  2. Checking collection emptiness before DML
  3. Gigantic Flow instead of multiple Subflows
  4. All classes in without sharing mode
  5. Excessive amount of System.Debug()
  6. SOQLs without WHERE or LIMIT outside Batch
  7. Hard-coded ID
  8. Hard-coded authentication instead of using Named Credentials
  9. Only catching general Exception in try-catch
  10. DMLs in loop
  11. Missing bulk tests in test classes
  12. Excessive lack of .startTest() and .stopTest()
  13. No assertions in Tests
  14. Public Read/Write OWDs
  15. Non‑descriptive variable names in Flow
  16. SOQLs in loop
  17. Exactly 75% test coverage
  18. Using Profiles instead of Permission Sets
  19. No flags to deactivate trigger and validation rules declaratively
  20. Multiple Record Triggered Flows on same OperationType on one sObject
  21. No Fault Paths in Flows
  22. No test data factory or builder
  23. Multiple triggers on one sObject
  24. Code in trigger instead of Trigger Handler