On 29 January 2017 at 16:16, stepharong <[email protected]> wrote: > > > On 27 January 2017 at 00:06, stepharong <[email protected]> wrote: > >> >> accept: aVisitor >> ^ aVisitor lineSegment: self >> accept: aVisitor >> ^ aVisitor closeSegment: self >> accept: aVisitor >> ^ aVisitor moveSegment: self >> >> seems to invoke methods that do not exit >> I check AthensLIneSegment is used so I do not understand why the methods >> are broken. >> >> this is a part of visitor api for path segments. > > >> I know but where is the visitor? >> >> if you remove it, then users cannot use it >> for iterating trough path segments for converting them etc etc.. >> of course, it may be nit used by Athens itself.. but it doesn't means it >> is useless. >> >> >> Where is the visitor? Why accept: are not packaged with it? Does it use >> DNU trick? >> In my imagine there is no implementor of moveSegment: closeSegment: >> >> >> why there should be any, if nobody using this feature, yet? so you don't > have a single visitor. > you could add a test case for coverage, so it won't bother you that > there's no implementors of > given selector in image :) > > > Yes because it if keep dead code around we will have a broken house window > syndrome and I do not like it. > > iirc, i used it for path transformation(s) code.. which then get removed. > > > Was it removed because it was not good, ? no useful? or just a mistake? > > > well, i think there's some kind of duplication. if you look at base class - AthensPathSegment there's two methods for visitor pattern: #accept: and #sendCommandsTo:
the main difference between the above two is that #accept: should double-dispatch with appropriate message passing single argument - the receiver, while #sendCommandTo: is used by a convenience protocol #sendCommandsTo: that sends direct _series_ of commands to visitor in a fashion like: visitor lineTo: aPoint; curveVia: aPoint to: endPoint etc. Mainly, sendCommandsTo: is for convenience, that does not requires the user to implement a loop in own code, and to allow user to deal directly with data instead of subinstances of AthensPathSegment. Also, as i looking into code, there are some leftovers - the #convertWith:, and #visitWith: . These should be removed and users of #visitWith: should be refactored to #accept: protocol. To not confuse users what exactly protocol should be used. > -- > Best regards, > Igor Stasenko. > > > > > -- > Using Opera's mail client: http://www.opera.com/mail/ > -- Best regards, Igor Stasenko.
