Avoid clones


Clones may look useful at first glance but they really aren't. You are shooting yourself in the foot if you use them in the most common ways because their limitations are very easily encountered.

The main problem with clones is control. You can create a clone and delete it. You can also give it unique values using variables/lists set to "for this sprite only". However, very common questions asked on the Scratch forums is how to have the clones do more... How can they interact with each other? How do you keep track of which one is which? How do you prevent exponential growth of clones due to them all sharing the same scripts?

If the solution requires storing data in variables and lists, suddenly you don't need clones. You can do everything in the original sprite and more and avoid using clones completely. Yes it requires a little additional learning to enumerate over a list using a loop and a variable counter (to access each list item) but clones also require learning. I argue that clones are a harder subject to learn given that the behaviour is unclear and debugging is awkward:

The following are justifications for using clones, if these do not apply, use lists and stamps for 99% of other cases: