Avoid using clones


Clones aren't very useful. They give the illusion of sophistication and you are shooting yourself in the foot if you use them in the most common ways.

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

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 of local variables is not clear and debugging projects with clones are awkward, requiring insertion of blocks to make a visual or audible change to be detected. Clicking a script will not run it in the clone, only the original sprite. Reporters and variable monitors also only display what is in the original sprite.

Clones also have a limit of 300. The list item limit is 200000.