I agree that if you are just starting, you don't really have to worry about clean code. On the flip-side, if you're just looking for some tips...
You can have the same code placed on each enemy/item of the same type. It's a trick I recently learned. How to you ensure that only the specific one needed to perform a task and none of the others is pretty simple.
start the reusable code with this line in it:
onready var item_name = self.name
Then, when you need to have a specific item trigger from something and none of the others, Ie player detection:
func _on_AttackArea_body_entered(body):
if body.name == "Player" && item_name == self.name:
This works because even nodes that are spawned through code will have different names than each other- ie Button, Button2, Button3... If you call the function on a button named Button3, Button and Button2 will not respond to it.