重构链表节点的insert_after和insert_before方法的最佳方法是什么?



我已经尝试过使用 send 方法,但它最终几乎不可读,并且与以前的代码一样长。Ruby 中是否有一种简单的方法来重构这样的代码?

def insert_before(data)
  node = Node.new(data)
  node.next = self
  node.prev = @prev
  @prev.next = node unless @prev.nil?
  @prev = node
end
def insert_after(data)
  node = Node.new(data)
  node.prev = self
  node.next = @next
  @next.prev = node unless @next.nil?
  @next = node
end

我认为您拥有的很好,但是您可能希望将两种方法的共同点放在单独的方法中。

def insert_before(data)
  node = insert_node(data, self, @prev)
  @prev.next = node unless @prev.nil?
  @prev = node
end
def insert_after(data)
  node = insert_node(data, @next, self)
  @next.prev = node unless @next.nil?
  @next = node
end
def insert_node(data, from, to)
  node = Node.new(data)
  node.next = to
  node.prev = from
  node
end

最新更新