On Saturday, February 28, 2015 at 1:44:52 AM UTC+11, Erik Price wrote:
> On Thu, Feb 26, 2015 at 7:55 PM, Mike Thompson <[email protected]> wrote:
> 
>  The key thing for me is:  JUST. DON'T. USE. CURSORS. There I said it. They 
> appear convenient, I know. They are a way of achieving reference 
> transparency, I know.  But I think they are a “local optimum”.  Their use 
> seems to get in the way of a more important data flow paradigm and they seem 
> to encourage "control" into all the wrong places (components). At least 
> that's my experience (I did try to love them, really I did :-)).
> 
> 
> 
> I'm fairly new to Reagent, so as far as I can tell, cursors look great. But 
> it sounds like you've run into situations in which they aren't helpful. Can 
> you elaborate?


Cursors are convenient. You'll get going pretty quickly with them, for sure.  

But if your app gets a bit bigger you might find some code smell starting to 
appear.  

- their use can sometimes distort the way you structure you data.  Cursors want 
you to layout data hierarchically (which often fine) but one day you'll find 
yourself twisting your data structure so as to facilitate Cursor use. 

- Cursors are simple extractors (which abstract away the path). But they are 
not about "Derived Data" or "Materialised Views". They don't deliver to your 
view a modified version of the data.  Yes, you can modify the data in your 
view, but that means the view is doing too much. Take a view that needs to show 
the top 20 items in a vector, when sorted by attribute Y.  Now imagine that you 
have two views on the same data each with different sort criteria.  The 
underlying data can't be sorted two ways at once.  So the view will have to 
start doing the sorting. 

- the "write back" feature of Cursors is something I really don't like. As an 
app gets bigger, the control logic around updates gets more complicated. Using 
writable Cursors is a slippery slope towards more control logic getting put in 
the views. 

Overall, I find that Cursor use encourages you to make views do too much, know 
too much, which tends to be a problem as apps get bigger.


--
Mike


.  make your use of Cursors easy, rather than modeling the right way. 

they can sometimes encourage you to structure your data in a tree-like way ... 
even though certain way. 
- The main problem I have with Cursors is that they are writable. 
I've found that they encourage control logic into views.  I prefer my views to 
be very passive. 


-- 
Note that posts from new members are moderated - please be patient with your 
first post.
--- 
You received this message because you are subscribed to the Google Groups 
"ClojureScript" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/clojurescript.

Reply via email to