Szerintem a példád nem jó, inkább héj szerű felépítésre kell gondolni. Például a nem biztonságos (ellenőrzés nélküli függvények) nem hívhatóak kívülről (protected, private) fooSafe(a) { if(a == null) return; foo(a); } foo(a) { ... }