4 ms·
Except here the encapsulation comes at the cost of extending a core library at runtime, which has all the tradeoffs mentioned in the article.
by zer0-c00l 5y ago
Except here the encapsulation comes at the cost of extending a core library at runtime, which has all the tradeoffs mentioned in the article.
- jshen 5y agoOne benefit is discoverability. I coded a ton of Ruby/rails back in the day and it was nice to be able to jump into a repl and see what methods were on an object. Also, you could often find the source of the method through the repl. I think a lot of these debates come down to repl development versus ide development. I’ve done a lot of both, but many complaints come down to people on one side not understanding the way the other side works.
- matsemann 5y agoIn other languages (like Kotlin), that extension is actually not done on the object, but is a statically imported function and it's only syntactic sugar. This avoids all the pit falls (no collision, knows where the function comes from etc)
- dragonwriter 5y ago> Except here the encapsulation comes at the cost of extending a core library at runtime No, it doesn't. Pervasive OO style and monkey-patching core classes are orthogonal. Ruby favors the former strongly, and supports the latter, and Rails rather heavily leverages the latter (to the extent that it has been harshly criticized for it by much of the non-Rails Ruby community), but there is no necessary relationship between them.
- zer0-c00l 5y ago“Here” in my comment was referring specifically to Rails’ use of the latter method, sorry for the confusion