Nice,
let me just point out something,
"Private`" vs "`Private`"
unless you really intend to do so, Begin["Private`"] should have an accent before Private - Begin["`Private`"].
Without it all those symbols are going to be created in Private` context instead of Tetris`Private` context. And you don't probably want this since it will happen for all packages which will then share symbols in Private`.
Take a look
BeginPackage["Tetris`"];
Begin["Private`"];
testSymbol`
End[];
Begin["`Private`"]; (* "correctly" *)
testSymbol2
End[];
EndPackage[];
Names["*`testSymbol*"]
{"Private`testSymbol1", "Tetris`Private`testSymbol2", ...}
Why is this a problem?
Let's create two packages:
BeginPackage["MyPackage`"];
showString;
Begin["Private`"];
temp = "MyPackage";
showString[] := temp;
End[];
EndPackage[];
BeginPackage["YourPackage`"];
whatever;
Begin["Private`"];
temp = "YourPackage";
whatever[] := "doesNotMatter";
End[];
EndPackage[];
showString[]
YourPackage (while expected is MyPackage, isn't it?)