4 ms·
The first thing I wanted to see as a Smalltalker was how much they've baked Blocks into the libraries. I know Cocoa has always had very long method names, but
by ben 17y ago
The first thing I wanted to see as a Smalltalker was how much they've baked Blocks into the libraries. I know Cocoa has always had very long method names, but some of these names are wild:
- #enumerateObjectsUsingBlock: is #do:
- #objectsPassingTest: or #indexesOfObjectsPassingTest: are #select:
And so on. Here's what I'm looking at:
http://developer.apple.com/mac/library/documentation/Cocoa/Reference/FoundationRefUpdate/Articles/Foundation_10.5-10.6_SymbolChanges.html#//apple_ref/doc/uid/TP40007573 http://developer.apple.com/mac/library/documentation/Cocoa/R...
- antonovka 17y agoThe names are silly, and Apple isn't leveraging blocks nearly as much as they could be. The very first thing I did is add an option monad, plus additional collection methods (including the nice and short map and filter) via categories. My only complaint is that The [[]] messaging syntax gets way too verbose when chaining together sequence comprehensions.
- masklinn 17y agoIt's nice they retrofit blocks into the lib though, I didn't think they were going to add them beyond GCD.
- tolmasky 17y agoThe names make perfect sense within the context of the language. Just because you add a new feature to a language doesn't mean you should arbitrarily adopt the naming conventions of its implementation in another language.
- albertcardona 17y agoI call it "ctrl+space semantically-aware word completion" and "self-documenting function names." Nothing unusual in multi-year multi-programmer software. As much as I like succinct function names, in my experience they don't work when there's more than one hacker involved. A strategy I have followed is to make long names for the top-level, interface-like functions, and succinct ones for all the internals; i.e. put the verbosity where others need to look up code to use it as a library, where "library" is understood as an individual/indepenent component of a larger software project.