TerraSky Power Night 2013/12/05

Apex 10 Commandments
最初に自己紹介

やまむろ あつし

1
Apex 10 Commandments

2
#1 Thou shalt not put queries in for loops

3
#2 Thou shalt not put DML in for loops

4
#3 Thou shalt have a happy balance
between clicks & code

5
#4 Thou shalt only put one trigger per object

#5 Thou shalt not put code in triggers other than
calling methods and managing execution order

6
#6 Thou shalt utilize maps for queries
wherever possible

7
#7 Thou shalt make use of relationships to
reduce queries wherever possible

8
#8 Thou shalt aim for 100% test coverage

In general test your methods for:
 Positive effects.
• Given proper input it should act like this.

• Not just happy path, but all logic branches.

 Negative effects.
• Given bad data it should error like this.

 Role/Profile/User effects
• Given a user with X profile and Y role it should
act like this.
9
#9 Thou shalt write meaningful and useful tests

It’s not a test without assertions.
 Assert(A==B, “Reason for Assert failure”)

 AssertEquals(A,B, “Reason for Assert failure”)
 AssertNotEquals(A,B, “Reason for Assert
failure”)

10
#10 Thou shalt limit future calls and use
asynchronous code where possible
In general bias towards batch apex

 Ensure it runs as efficiently as possible.
 If you need @future methods.

11
#11 Research the session content beforehand
If you go to Dreamforce・・・

12

4 TSPN_Apex 10 Commandments

  • 1.
    TerraSky Power Night2013/12/05 Apex 10 Commandments
  • 2.
  • 3.
  • 4.
    #1 Thou shaltnot put queries in for loops 3
  • 5.
    #2 Thou shaltnot put DML in for loops 4
  • 6.
    #3 Thou shalthave a happy balance between clicks & code 5
  • 7.
    #4 Thou shaltonly put one trigger per object #5 Thou shalt not put code in triggers other than calling methods and managing execution order 6
  • 8.
    #6 Thou shaltutilize maps for queries wherever possible 7
  • 9.
    #7 Thou shaltmake use of relationships to reduce queries wherever possible 8
  • 10.
    #8 Thou shaltaim for 100% test coverage In general test your methods for:  Positive effects. • Given proper input it should act like this. • Not just happy path, but all logic branches.  Negative effects. • Given bad data it should error like this.  Role/Profile/User effects • Given a user with X profile and Y role it should act like this. 9
  • 11.
    #9 Thou shaltwrite meaningful and useful tests It’s not a test without assertions.  Assert(A==B, “Reason for Assert failure”)  AssertEquals(A,B, “Reason for Assert failure”)  AssertNotEquals(A,B, “Reason for Assert failure”) 10
  • 12.
    #10 Thou shaltlimit future calls and use asynchronous code where possible In general bias towards batch apex  Ensure it runs as efficiently as possible.  If you need @future methods. 11
  • 13.
    #11 Research thesession content beforehand If you go to Dreamforce・・・ 12