> > On Tue, May 26, 2015 at 6:14 PM, Ben Coman <b...@openinworld.com> wrote: >> >> On Tue, May 26, 2015 at 9:38 PM, Peter Uhnák <i.uh...@gmail.com> wrote: >> >> I vote for renaming to Rectangle>>translatedBy:, because it returns a >> >> new >> >> translated rectangle instance. >> > >> > >> > -1 >> > There is no benefit in renaming a single method, apart from creating >> > more >> > confusion. >> >> I wouldn't say "no benefit". Consistent conventions are beneficial. >> It could be useful to bring these into line with the general "-ed" >> convention of returning a new object. I don't see how this would >> create confusion, though it might create work. Whether its worth the >> work is a slightly different question. >> >> > If anything, the whole Rectangle API would have to be changed, as there >> > is >> > plethora of similar methods (expandBy:, extendBy:, merge:, etc.) >> >> For a better feel of the work involved... >> >> Rectangle methods select: [ :m | m sourceCode includesSubstring: '^ >> Rectangle ' ]. >> Rectangle>>#intersect: >> Rectangle>>#quickMerge: >> Rectangle>>#encompass: >> Rectangle>>#intersect:ifNone: >> >> Rectangle methods select: [ :m | m sourceCode includesSubstring: >> '^Rectangle ' ]. >> Rectangle>>#intersect: >> Rectangle>>#translateBy: >> Rectangle>>#scaleBy: >> Rectangle>>#merge: >> Rectangle>>#compressTo: >> Rectangle>>#expandTo: >> Rectangle>>#roundTo: >> Rectangle>>#truncateTo: >> >> The following already follow the convention... >> Rectangle>>#compressed >> Rectangle>>#expanded >> Rectangle>>#rounded >> Rectangle>>#truncated >> >> > Pretty much all Rectangle messages are immutable and create new >> > Rectangle, >> > thus I feel it is unnecessary to state it explicitly. >> > >> > In VW there is plenty of methods (e.g. left:) that mutates it, thus >> > unlike >> > Pharo a clear distinction is required. >> >> Still, it is reasonable to consider the impact of inconsistent >> conventions on the rest of the system outside of Rectangle. >> >> cheers -ben >> >
On Wed, May 27, 2015 at 1:16 AM, Peter Uhnák <i.uh...@gmail.com> wrote: > That's not all, many methods return new rectangles via Point's API, namely > Point>>{#corner: #extent: #rectangle:} > > I don't know if I can perform static analysis of the code (are there tools > for that in Pharo?) to see which methods exactly return Rectangle > > rectMethods := #(#corner: #extent: #rectangle:). > (Point methods select: [ :m | rectMethods includes: m selector ] > thenCollect: [ :m | m senders ]) flattened select: [ :s | s className = > #Rectangle ]. "an Array( > Rectangle>>#areasOutside: > Rectangle>>#withSideOrCorner:setToPoint:minExtent:limit: > Rectangle>>#withBottom: > Rectangle>>#bottom: > Rectangle>>#areasOverlapingOutside: > Rectangle>>#floor > Rectangle>>#allAreasOutsideList:startingAt:do: > Rectangle>>#scaledAndCenteredIn: > Rectangle>>#squishedWithin: > Rectangle>>#ceiling > Rectangle>>#withHeight: > Rectangle>>#rectanglesAt:height: > Rectangle>>#scaleFrom:to: > Rectangle>>#withLeft: > Rectangle>>#left: > Rectangle>>#withTop: > Rectangle>>#right: > Rectangle>>#top: > Rectangle>>#innerCorners > Rectangle>>#interpolateTo:at: > Rectangle>>#withWidth: > Rectangle>>#quickMergePoint: > Rectangle>>#withRight: > Rectangle>>#rotateBy:centerAt: > Rectangle>>#withSideOrCorner:setToPoint:minExtent:limit: > Rectangle>>#flipBy:centerAt:) > " > > This list is maybe a bit excessive (sometimes it returns self, sometimes new > rectangle -- e.g. floor). > Good Point ;) However the "-ed" convention doesn't make sense for many of those... #areasdOutside: , #areasedOutside , #areaOutsided: ? ... and #areasOutside is obviously a different rectangle than the original. The scope might be restricted to only those where the usual convention makes the names misleading, for example: #merge cheers -ben