On 3 nov. 2010, at 05:47, Igor Stasenko wrote:

> Coding in smalltalk for last 4 years, i seen no problems with having
> no run-time, no compile-time , but instead a coder-time private methods check.
> 
> As to me, the benefits of having such constraints in language are exaggerated.


Indeed, for such rules, I think Lint should be the platform of choice (using 
the parse tree search if necessary).


> 
> On 3 November 2010 01:34, Stéphane Ducasse <[email protected]> wrote:
>> 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
>>> [email protected]
>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-users
>> 
>> 
>> _______________________________________________
>> Pharo-users mailing list
>> [email protected]
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-users
>> 
> 
> 
> 
> -- 
> Best regards,
> Igor Stasenko AKA sig.
> 
> _______________________________________________
> Pharo-users mailing list
> [email protected]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-users

--
 Simon




_______________________________________________
Pharo-users mailing list
[email protected]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-users

Reply via email to