Ruby编程中的陷阱与最佳实践
1. 设计与继承的思考
在设计中,不必完全避免继承,但不应刻意构建人为的层次结构来表示交叉或正交的关注点。Ruby 大量使用混合模块并非特殊或神奇,而是代表了一种实用且强大的对象模型。我们可以在自己的设计中合理应用这种技术。
2. 巧妙技巧的弊端
Ruby 允许使用各种巧妙的技巧,这虽让 Ruby 显得优雅,但在错误使用时也可能带来危险。下面通过几个常见的例子来详细说明。
2.1 eval() 的危害
在某些场景下,我们可能会使用 eval() 来实现数据过滤功能。例如,我们希望支持用户通过特定查询语句过滤数据:
user1 = User.new("Gregory Brown", balance: 2500)
user2 = User.new("Arthur Brown", balance: 3300)
user3 = User.new("Steven Brown", balance: 3200)
f = Filter.new([user1, user2, user3])
f.search("balance > 3000") #=> [user2, user3]
实现代码如下:
class User
def initialize(name, options)
@name = name
@balance = options[:balance]
超级会员免费看
订阅专栏 解锁全文
988

被折叠的 条评论
为什么被折叠?



