[squeak-dev] The Trunk: ToolBuilder-Kernel-pre.122.mcz

Tobias Pape Das.Linux at gmx.de
Tue Apr 24 17:00:08 UTC 2018


> On 24.04.2018, at 18:33, tim Rowledge <tim at rowledge.org> wrote:
> 
> This isn't a criticism of this particular bit of code, nor of Patrick BUT I really dislike the idiom of 
> a) providing simple setter/getter methods that not only allow but positively encourage people to write code that looks as nasty as C++. Objects are not C structures with field names.
> b) when you do have a valid reason (and they certainly exist) for a setter and/or getter, naming them exactly as the inst var seems to me to just amplify the problem. Less problematic would be the style #setPathSettingSelector:
> 
> And yes, I'm sure I've written code that does the Bad Thing. That doesn't make it good.

IIRC, Beck has the Direct Access and the Indirect Access patterns in the book, and the Rule he makes is: stick to one.

My take here is: The base system cannot know all its forthcoming uses and hence should stick to Indirect Access.

my 2ct.
	-Tobias

> 
>> On 24-04-2018, at 1:29 AM, commits at source.squeak.org wrote:
>> 
>> Patrick Rein uploaded a new version of ToolBuilder-Kernel to project The Trunk:
>> http://source.squeak.org/trunk/ToolBuilder-Kernel-pre.122.mcz
>> 
>> ==================== Summary ====================
>> 
>> Name: ToolBuilder-Kernel-pre.122
>> Author: pre
>> Time: 24 April 2018, 10:29:02.215732 am
>> UUID: 9e1d912d-13fb-7341-9aac-9ac6ebfb76ab
>> Ancestors: ToolBuilder-Kernel-tpr.121
>> 
>> Adds a callback to pluggable tree specifications to retrieve the currently selected path in the tree.
>> 
>> =============== Diff against ToolBuilder-Kernel-tpr.121 ===============
>> 
>> Item was changed:
>> PluggableWidgetSpec subclass: #PluggableTreeSpec
>> + 	instanceVariableNames: 'roots getSelectedPath setSelectedPath setSelected getSelected setSelectedParent getChildren hasChildren label icon unusedVar menu keyPress doubleClick dropItem dropAccept autoDeselect dragItem nodeClass columns vScrollBarPolicy hScrollBarPolicy dragStarted'
>> - 	instanceVariableNames: 'roots getSelectedPath setSelected getSelected setSelectedParent getChildren hasChildren label icon unusedVar menu keyPress doubleClick dropItem dropAccept autoDeselect dragItem nodeClass columns vScrollBarPolicy hScrollBarPolicy dragStarted'
>> 	classVariableNames: ''
>> 	poolDictionaries: ''
>> 	category: 'ToolBuilder-Kernel'!
>> 
>> + !PluggableTreeSpec commentStamp: 'pre 4/24/2018 10:20' prior: 0!
>> - !PluggableTreeSpec commentStamp: 'mvdg 3/21/2008 20:59' prior: 0!
>> A pluggable tree widget. PluggableTrees are slightly different from lists in such that they ALWAYS store the actual objects and use the label selector to query for the label of the item. PluggableTrees also behave somewhat differently in such that they do not have a "getSelected" message but only a getSelectedPath message. The difference is that getSelectedPath is used to indicate by the model that the tree should select the appropriate path. This allows disambiguation of items. Because of this, implementations of PluggableTrees must always set their internal selection directly, e.g., rather than sending the model a setSelected message and wait for an update of the #getSelected the implementation must set the selection before sending the #setSelected message. If a client doesn't want this, it can always just signal a change of getSelectedPath to revert to whatever is needed.
>> 
>> Instance variables:
>> 	roots 	<Symbol>	The message to retrieve the roots of the tree.
>> 	getSelectedPath	<Symbol> The message to retrieve the selected path in the tree.
>> + 	setSelectedPath	<Symbol> The message to set the selected path in the tree.
>> 	setSelected	<Symbol>	The message to set the selected item in the tree.
>> 	getChildren	<Symbol>	The message to retrieve the children of an item
>> 	hasChildren	<Symbol>	The message to query for children of an item
>> 	label 	<Symbol>	The message to query for the label of an item.
>> 	icon 	<Symbol>	The message to query for the icon of an item.
>> 	help 	<Symbol>	The message to query for the help of an item.
>> 	menu	<Symbol>	The message to query for the tree's menu
>> 	keyPress	<Symbol>	The message to process a keystroke.
>> 	wantsDrop	<Symbol>	The message to query whether a drop might be accepted.
>> 	dropItem	<Symbol>	The message to drop an item.
>> 	enableDrag <Boolean>	Enable dragging from this tree.
>> 	autoDeselect	<Boolean>	Whether the tree should allow automatic deselection or not.
>> 	unusedVar	(unused)	This variable is a placeholder to fix problems with loading packages in 3.10.!
>> 
>> Item was added:
>> + ----- Method: PluggableTreeSpec>>setSelectedPath (in category 'accessing - selection') -----
>> + setSelectedPath
>> + 
>> + 	^ setSelectedPath!
>> 
>> Item was added:
>> + ----- Method: PluggableTreeSpec>>setSelectedPath: (in category 'accessing - selection') -----
>> + setSelectedPath: aSymbol
>> + 	
>> + 	setSelectedPath := aSymbol!
>> 
>> 
>> 
> 
> 
> tim
> --
> tim Rowledge; tim at rowledge.org; http://www.rowledge.org/tim
> Strange OpCodes: DC: Divide and Conquer
> 
> 
> 



More information about the Squeak-dev mailing list