I removed that in pharo since it was a hack working only on squeak and not even well because what happens if I do an alias to self obj := self. obj pvt.... or with passing a ref to me around and client invoke the method. aA foo: self A>>foo: aA aA pvt For people that want to read a nice paper on private methods I suggest: Encapsulation in a dynamic language by nathanael scharly => only self send (using self keywords could be potential private call) I like the idea and the reasoning behind. and freezable traits to a certain extent Stef
Hi
Am 2010-11-02 um 10:24 schrieb eMko:
There is a convention of naming private methods - instead of naming it just "methodName" you can use "myMethodName".
I have seen this convention in some tutorials at squeak wiki but have not seen a system class in squeak or pharo which uses this. But I do in my programs. A different naming convention of private/protected methods is quite common in other programming or scripting languages like Perl, Python, PHP ...
Incidentally, if you name your method "pvtMethodName" it is expected that this message is only sent to self.
So if you have a class "--" Object subclass: #Foobar instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'TMP' "--"
with Foobar>>pvtTest
Transcript show: 'Foobar'.
and then do
| a | a := Foobar new. a pvtTest.
you'll end up with the Compiler telling you that âPrivate messages may only be sent to selfâ.
However, according to Smalltalk conventions, you should use these âprivateâ methods scarcely. In fact, it is easy to circumvent this check:
| a | a := Foobar new. a perform: #pvtTest a Foobar
works easily, so don't rely on the privateness. However, whatever one sends to your object is up to her/him and she/he is responsible for the outcome ;)
HTH
So Long, -Tobias _______________________________________________ Pharo-users mailing list Pharo-users@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-users