views:

154

answers:

2

I'm curious which programming tools have empowered you as the programmer the most. By empower I essentially mean tools have made complex tasks simpler (both conceptually and implementation wise). I am talking about Objective C and Cocoa primarily, although I suppose this question is rather language independent.

For instance, before I discovered NSNotificationCenter, if I had 1 model class which was providing data for different views, and one view updated the model, the way I would reflect the change in all the other views was to send them each a updateUI message (which I implemented in each) from the view that committed the change. This created all kinds of complexities in maintaing pointer arrays to all the other views. I think it's pretty obvious how NSNotificationCenter can make this task a lot simpler.

Another example is using NSPredicate when fetching queries from an SQLite db. Instead of fetching each row in the table and then applying some logic to it, you can get the exact data you need using NSPredicate.

Delegation is another concept that helps me encapsulate and modularise code so it's easier to reuse (and also think about).

I'd like to know what you find the most valuable tools that make programming non trivial tasks easier to conceptualise and execute for you. I'm would say I'm a decent programmer but everything I know has been self taught and I've had no formal training; with that said I really enjoy it and I'd like to get "good" so I'm eager to learn the non obvious things.

P.S. Please let me know if this is the wrong site for this kind of question, I'm still pretty new here.

+3  A: 

Interface Builder. It's so nice not having to write most window and view-hierarchy construction code anymore.

Peter Hosey
A: 

Observer pattern. I like add a new view without changing the model.

enriqueM