My criteria of a good snap project

  1. Snappiness
  • Sprites, clones (for every nessecary sprite(10 pts) and when clone block (5 pts), for every nessecary nesting + 25 pts)
  • Nessecarily used HOFs/hyperblocks (only counts if used hyperity) (+2 pts for each, +10 pts instead if it drastically increases the speed)
  • Nessecarily used metaprogramming blocks (+5 pts each)
  • Common hacks that make the code run faster (2 pts each)
  • Really clever hacks that use snappy features and speed up things a lot (30 pts each, please publish it on the forums)
  • Overally intellegent problem solution +100pts
  • Unnessecarily long if-then/if-then-else chains which could have been replaced with a dictionary (-1 pts for each branch)
  1. Clarifiedness
  • Penalty of unnessecary objects: (x10 if causing performance problems) a sprite -15 pts, a sprite nesting relation -30 pts, a loop/HOF -15 pts (always looping over nothing or one item), a metaprogramming block -5 pts
  • Helpful comment +5 pts for each
  • Meaningless identifier names (variable/block) -20 pts for each
  • A jumble of code with no comments thus is really hard to comprehend -10 pts each
  • General clean code (able to tell what it does in a glance, minus the probable jumble of math formulas, so please keep your math formulas in custom blocks) +50 pts
  • Helpful project notes (+0.005 for each block in project, round to integer)
  • Nice UI (at minimum not just a white background?) +25 pts
  1. Unbugginess
  • -20 pts if found All my clones suddenly disappear
  • Bad performance caused by weird convertion chains of linked->array->linked->array... -15 pts
  • JS function usage that could be replaced with a library block(external functions,-25 pts each)/a hyperblock(tight consuming loops,-40 pts each)
  • Laggy while not doing something that was expected to be slow(e.g media computation) -round(50*(60/fps-1)) pts
  • Big display bug -50 pts each
  • Big logic bug -75 pts each

Remember, you can make whatever you want, so you don't have to follow this.

I mostly agree. Just a few additions:

  1. Unnecessary JavaScript (-25 pts.)
  2. An intelligent overall approach of the problem to be solved (+100 pts.)

why is this a wiki post?
also why did you mention yourself?

I disagree with using a hash table for this purpose. Even an "unnecessarily long" if/else chain is probably less than 30 or so, and although the asymptotic performance of a hash table is O(1), it has a quite large constant factor (because of the computation of the hash function) and therefore slows down your program (as well as adding complexity) unless the size of the table is hundreds of items or more. Using a dictionary might be a more reasonable suggestion.

Yeah,I was wanting to mean the thing that jens added in v8 without adding any new blocks.Which is called dictionary as you are saying.Maybe I shouldn't call a map,a hash table,an association list and a dictionary all "hashtables".

So that you could edit it!